タグ別アーカイブ: PDFビューアー

.NET Framework アプリケーションからPDF印刷

以前の記事でご紹介しましたが、「PDF Viewer SDK」を使うとPDFファイルを印刷するプログラムを開発することができます。

PDF Viewer SDKでPDF自動印刷
PDF Viewer SDKでPDF自動印刷(その2)

PDF Viewer SDK」ではC/C++言語APIの動的ライブラリ(DLL)をご用意しております。

しかしながら.NET Frameworkで開発されるお客様も多いようで、.NETからPDFファイルを印刷したい、という声もよく伺います。幸い.NET Framework にはDLLのネイティブコードを呼び出すプラットフォーム呼び出しP/Invoke)の機能があります。P/Invokeを利用すれば.NET Framework からPDFを印刷することができます。「PDF Viewer SDK」には、このようなサンプルコード “ApiPInvokeCSharp” を添付しておりますのでご活用ください。

ここで一点注意があります。このサンプルではWindowsフォームアプリケーションで標準的に利用されるSystem.Drawing.Printing名前空間を使用します。System.Drawing.PrintingWindowsフォームアプリケーション向けの印刷関連のサービスをまとめたもので、印刷ダイアログを表示したり、印刷先のデバイスを取得したりするのに利用します。

通常のデスクトップアプリケーションではこの方法で問題ないのですが、残念ながらSystem.Drawing.Printing 名前空間はサービスやASP.NETでの動作がサポートされていません。

 System.Drawing.Printing 名前空間

リンク先には、サービスやASP.NETから利用した場合動作が不安定になったりパフォーマンスの低下や実行時例外が発生するかもしれない、と書いてあります。これはWPFで利用される System.Printing名前空間も同様です。

サービスからサイレント印刷を行うようなプログラムを開発する場合は、この方法では問題があります。この場合にはちょっとしたコマンドラインをC/C++ APIで開発して.NETから呼び出す、もしくは、COMコンポーネントとして印刷機能を用意して呼び出すなどの工夫が必要になります。「PDF Viewer SDK」にも印刷コマンドラインのサンプルコード“ApiPdfPrint” を添付しています。こちらも併せてご活用ください。

以上、.NET FrameworkからPDF印刷する方法と注意点のご紹介でした。

詳しい機能についてぜひ製品ページをご覧ください。

製品ページ:
https://www.antenna.co.jp/pdfviewersdk/
評価版ダウンロードページ:
https://www.antenna.co.jp/pdfviewersdk/trial.html


PDF Viewer SDK


PDF Viewer SDK で簡単PDFビューア作成(8)

前回までで、印刷や保存やコピーを禁止したPDFビューアができました。
本日は、さらにユーザーが他のファイルをオープンできないようにして、指定したファイルだけ表示するようにしてみたいと思います。

●ファイルのオープンを禁止する

ファイルのオープンを禁止するには、まずオープンボタンを用意しないようにします。
下の画面は第5回までの記事で作成したPDFビューアからオープンボタンを削除したPDFビューアです。

これでボタンからオープンはできないのですが、SDKの2つのコントロールPDFPageViewCtrlとPDFThumbnailCtrl は、標準でファイルのドラッグ&ドロップを受け付けPDFをオープンするようになっています。

ドラッグ&ドロップでのオープンを禁止するには、第5回で紹介したドラッグ&ドロップ用のイベントハンドラを実装することで行います。

ここでは、DragDropFilesイベントのイベントハンドラを実装します。
Visual StudioのフォームデザイナーでPDFPageViewCtrlのプロパティを開き、イベントの画面で「DragDropFiles」を探して、右の空欄部分をダブルクリックします。

イベントハンドラの雛形コードが生成されますので、以下のように実装します。

    private int pdfPageViewCtrl1_DragDropFiles(string[] files)
    {
        return 0;
    }

このコードは、既定の動作(PDFファイルのオープン)を上書きし、何も処理を行わないようにします。これでアプリケーションにファイルがドラッグ&ドロップされてもオープンできなくなります。

PDFThumbnailCtrl もドラッグ&ドロップが可能ですので、DragDropFilesイベントのイベントハンドラを同じように実装してオープンできないようにします。

あとは、コントロールのOpenDocumentメソッドで、アプリケーションの起動時などに、表示したいPDFファイルをオープンするようにすれば、特定のファイルしかオープンできない閲覧専用のPDFビューアを作成することができます。

以上、「Antenna House PDF Viewer SDK」を利用した閲覧専用のPDFビューアの作り方のご紹介でした。

詳しい機能についてぜひ製品ページをご覧ください。

製品ページ:
https://www.antenna.co.jp/pdfviewersdk/
評価版ダウンロードページ:
https://www.antenna.co.jp/pdfviewersdk/trial.html

PDF Viewer SDK で簡単PDFビューア作成(7)

前回に続いて、印刷や保存やコピーを禁止したPDFビューアの作り方を紹介していきます。
本日はPDFの編集(注釈やページの入れ替え)や内容のコピーを禁止する方法を紹介します。

●PDFの編集やコピーを禁止する

PDF Viewer SDK で提供しているコントロールは、PDFファイルで制限されていなければ、注釈やページの編集、テキストのコピーができます。

保存ボタンを用意しなければ保存はできないのですが、編集もできないように制限したいところです。この動作はコントロールのCtrlStyleプロパティで変更できます。

〇読み取り専用モード

コントロールを読み取り専用にするには、CtrlStyleプロパティにAGCS_READONLYを指定します。

public Form1()
{
      InitializeComponent();

      pdfPageViewCtrl1.CtrlStyle |= (int)AvsCtrlStyle.AGCS_READONLY;
      pdfThumbnailCtrl1.CtrlStyle |= (int)AvsCtrlStyle.AGCS_READONLY;
}

PDFPageViewCtrl では、注釈の移動や削除、注釈の属性の編集などができなくなります。注釈を選択して右クリックメニューから開くプロパティダイアログでは、通常は線のスタイルや色を編集できますが、読み取り専用時にはプロパティが編集できません。

右クリックメニューから注釈のプロパティを開く

プロパティダイアログ

また、PDFThumbnailCtrl では、右クリックメニューでカット&ペーストや新規ページ挿入などのページ編集ができなくなります。

〇プレビューモード

読み取り専用モードにすることで編集はできないようになりました。しかし、読み取り専用モードでは PDFPageViewCtrl でのテキストはコピーできます。

テキストをコピーできないようにするには、AGCS_PREVIEWMODEを指定します。

      pdfPageViewCtrl1.CtrlStyle |= (int)AvsCtrlStyle.AGCS_PREVIEWMODE;
      pdfThumbnailCtrl1.CtrlStyle |= (int)AvsCtrlStyle.AGCS_READONLY;

プレビューモードでは注釈も選択できなくなりポップアップ注釈も開きません。
これで編集やコピーを禁止することができました。

CtrlStyleプロパティを使うと、この他にも注釈を非表示にしたり、オープンアクションを実行しない等の制御ができます。

次回は、ユーザが他のファイルはオープンできないようにしてみたいと思います。

詳しい機能についてぜひ製品ページをご覧ください。

製品ページ:
https://www.antenna.co.jp/pdfviewersdk/
評価版ダウンロードページ:
https://www.antenna.co.jp/pdfviewersdk/trial.html

PDF Viewer SDK で簡単PDFビューア作成(6)

PDFは表示させたいけれど、その内容は印刷されたり保存されたりコピーされたくない、という場合は多いようです。

今回は、印刷や保存やコピーを禁止したPDFビューアの作成方法をご紹介したいと思います。
「Antenna House PDF Viewer SDK」を利用したPDFビューアの作成方法は、以下の記事を参考にしてください。

●印刷や保存を禁止する

次の画面はSDKに付属するサンプルビューアAvsDotNetGuiCtlSampleのソースコードをVisual Studioのフォームデザイナーで開いたところです。

赤枠部分がSDKで提供しているWindows Formコントロールです。それ以外のメニューやボタンはサンプルビューア側で用意しています。

その動作もサンプルビューア側で実装されています。たとえば、印刷メニューが選択された場合はそのイベントハンドラで印刷メソッドPrintDocumentを呼び出します。

private void printMenuItem_Click(object sender, EventArgs e)
{
      pdfPageViewCtrl1.PrintDocument(true, "", 0, 0, 0, 0, 0, 
           AvsPrintOrientation.APO_AUTO, AvsPrintPageScaleMode.APS_SHRINKTOPAPER, 
           true, 1, false, "", 0);
}

最初の引数では、コントロール側で実装ずみの印刷ダイアログを表示するようtrueを指定しています。

実は、印刷や保存を禁止するのは簡単で、単にこのようなメニューやボタンなどのGUIを用意せず、印刷などの処理を呼び出さなければよいのです。そうすればアプリケーションのユーザは操作を行うことができません。実際、第5回までの記事で作成したPDFビューアは、印刷や保存ボタンを用意していませんので、印刷や保存ができません。

では、ショートカット・キーはどうでしょうか。

ショートカット・キーもサンプルビューア側でメニュー項目に割り当てています。以下はForm1.cs ファイルのForm1コンストラクタの冒頭付近のコードです。

printMenuItem.ShortcutKeyDisplayString = "Ctrl+P";
printMenuItem.ShortcutKeys = Keys.Control | Keys.P;

ショートカット・キーもこのような割当を行わなければアプリケーションのユーザは操作ができません。

以上のように、コントロールの機能をアプリケーションから呼び出せないようにすることで、印刷や保存の制限は簡単にできます。

それでは、PDFの編集(注釈やページの入れ替え)や内容のコピーを禁止するにはどうすればよいでしょうか。これはまた次回にご紹介したいと思います。

詳しい機能についてぜひ製品ページをご覧ください。

製品ページ:
https://www.antenna.co.jp/pdfviewersdk/
評価版ダウンロードページ:
https://www.antenna.co.jp/pdfviewersdk/trial.html

PDF Viewer SDKで簡単PDFビューア作成(5)

~イベント処理~

以前の 記事 で、PDF Viewer SDK の PDF 表示とサムネイルの二つのコントロールの同期を取るために、一方でページを移動したらもう一方も同じページに移動するイベント処理をご紹介しました。

このようなイベント処理を実装する方法を詳しく教えてほしいというリクエストを頂きましたので、本日は画面操作を交えてご紹介します。

まず、Visual Studio のフォームデザイナ上で PDFPageViewCtrl を選択してから「プロパティ」タブを開き、タブの上部にある「イベント」ボタンをクリックします。

pdfviwer01

すると各種イベントが並んだ画面が表示されます。PDF ビューアーコントロール特有のイベントは「その他」に表示されます。

pdfviwer02

ここでは、DoAction イベントを実装してみます。このイベントはリンク注釈をクリックしたときに発生するイベントです。

まずプロパティの DoAction イベント右の空欄部分をダブルクリックします。するとコードエディタに画面遷移し、イベントハンドラの雛形コードが挿入されます。

 private int pdfPageViewCtrl1_DoAction(AvsActionType actionType, string data)
 {
        return default(int);
 }

「プロパティ」タブを確認していただくと、DoAction イベントには挿入されたメソッドが登録されていることが分かります。

pdfviwer03
これで準備はできました。あとはイベントハンドラの雛形を実装するだけです。

イベントハンドラには、イベントに応じて予め定義された引数があり、イベントに関する必要な情報が渡されます。DoAction イベントでは発生したアクションのタイプ、リンクをクリックした場合の URL 等のデータが渡されます。イベントハンドラはこれらのデータを使って必要な処理を実装していきます。

ここでは、アクションを実行する前に確認ダイアログを表示するようにしてみます。
「いいえ」ボタンを押した場合は、その後のアクション実行を行わないように戻り値 0 を返すようにします。

下記のコードを入力してください。

private int pdfPageViewCtrl1_DoAction(AvsActionType actionType, string data)
{
     if (actionType == AvsActionType.AGAT_LAUNCH 
|| actionType == AvsActionType.AGAT_URI 
|| actionType == AvsActionType.AGAT_INTERNALFILE)
     {
           String msg = String.Format("{0}を開こうとしています。よろしいですか?", data);
           if (MessageBox.Show(this, msg, "", MessageBoxButtons.YesNo) == DialogResult.No)
                return 0;
            }
            return 1;
      }
}

これでイベントハンドラの実装は終了です。

あとはこのコードをビルドして実行するだけです。
実際に実行してみると、コードのとおり確認ダイアログが開きました。

pdfviewer04-3

以上、イベント処理の実装方法のご紹介でした。ご参考になれば幸いです。

詳しい機能についてぜひ製品ページをご覧ください。
製品ページ:
https://www.antenna.co.jp/pdfviewersdk/

評価版ダウンロードページ:
https://www.antenna.co.jp/pdfviewersdk/trial.html


PDF Viewer SDKでPDF自動印刷(その2)

かなり間が空きましたが、以前の 記事 で『Antenna House PDF Viewer SDK』を使えば簡単にPDFの自動印刷プログラムが開発できることをご紹介しました。

4/10 にリリースした「V4.0改訂1版」では、まさにこのような自動印刷プログラムのサンプルをご用意しておりますので、ここで少しご紹介したいと思います。
この他にも この記事 でご紹介しているサンプルプログラムも用意しておりますので、併せてご利用ください。

印刷プログラムでは、PDFファイルと印刷先のプリンター名を指定します。

 ApiPdfPrint.exe path printer [-options]
   path            PDFファイルパス
   printer         プリンター名

これ以外に印刷時のオプションとして、開始・終了ページや用紙にあわせた拡大縮小、印刷部数、両面印刷などの指定ができます。

  -pass password  PDFファイルのオープンパスワード
  -start start    開始ページ番号(1以上)
  -end end        終了ページ番号(ページ数以下)
  -scaling <none/fit/shrink> 拡大縮小
       none:   実際のサイズ
       fit:    ページサイズに合わせる
       shrink: 特大ページを縮小
  -scale scale  カスタム倍率 省略時1.0 ※-scaling none時に有効
  -selectpaper  ページサイズに合わせた用紙サイズを選択する
  -copies <n>     印刷部数(1~100) 省略時1
  -papersize size  用紙サイズ (例 8…A3 297 x 420 mm、9…A4 210 x 297 mm)
  -tray trayno     用紙トレイ (例 7…自動用紙トレイ選択)
  -duplex <simplex/vertical/horizontal> 片面両面
        simplex:    片面印刷
         vertical:   両面印刷(短辺を綴じる)
         horizontal: 両面印刷(長辺を綴じる)
  -colate      部単位で印刷する
  -grayscale   白黒(グレースケール)で印刷する

サンプルのソースコードを添付しておりますので、お客様のシステムへの組込みの参考にして頂いたり、これをベースにもう少し細かな制御を組み込んだりとご活用いただけると幸いです。

以上、PDF自動印刷サンプルプログラムのご紹介でした。 PDF印刷の自動化が必要になったら『Antenna House PDF Viewer SDK』をぜひご検討ください。

詳しい機能についてぜひ製品ページをご覧ください。
製品ページ:
https://www.antenna.co.jp/pdfviewersdk/

評価版ダウンロードページ:
https://www.antenna.co.jp/pdfviewersdk/trial.html


関連記事



PDF Viewer SDK


『Antenna House PDF Viewer SDK V4.0』評価版インストーラーを配布中!

現在『Antenna House PDF Viewer SDK V4.0』の評価版インストーラーを配布中です。

  • お申込み手続きが不要になりました。
  • インストール後30日間利用可能な評価ライセンスが付属しています。
  • ダウンロード後すぐにご利用いただけます。
  • ビルド済みサンプルPDFビューアーが付属しております。表示や印刷機能をすぐにご確認いただけます。

評価版インストーラーは、下記のページから入手できます。

評価版ダウンロードページ:
https://www.antenna.co.jp/pdfviewersdk/trial.html

以前はお申込み手続きや評価ライセンスを別途入手していただく必要がございましたが、ダウンロードしてすぐに利用開始していただくことが出来るようになりました。
お気軽に『Antenna House PDF Viewer SDK』をお試しください。

pdfviewer

サンプルPDFビューアー

『Antenna House PDF Viewer SDK』は、独自のPDFリーダーの開発に利用できる Windows 向けの SDK です。PDFの表示に加えて、プログラムからの自動印刷や、テキスト抽出や画像ファイルへの変換にも利用できます。
また、注釈やページ移動など PDF 編集ができる GUI コントロールを提供しております。コントロールを組み込むことで簡単にPDFの表示・編集機能をお客様のアプリケーションに追加できます。開発にアクロバットやアドビリーダーは必要ありません!

詳しい機能についてぜひ製品ページをご覧ください。
製品ページ:
https://www.antenna.co.jp/pdfviewersdk/


PDF Viewer SDK V4.0 のご紹介:システム製品販売開始!

『Antenna House PDF Viewer SDK』はこれまでOEM販売のみ行っておりましたが、2018年10月よりV4としてシステム製品販売を開始しております。

自社のシステムやサービスでご利用になる場合などソフトウェア再頒布の必要がなければ、契約手続き不要でお気軽にご購入していただき早期の導入が可能になりました。
また、評価版やデベロッパライセンスもご用意しておりますので、事前の製品評価や、デベロッパライセンスをご購入いただいてまずは開発を進めるといったこともできます。

評価版のお申込みページよりダウンロードしてお気軽にお試しいただけます。これまで製品を試してみたいけれど、OEM専用販売製品ということで躊躇されていたお客様も、ぜひ一度『Antenna House PDF Viewer SDK』をお試しください。

『Antenna House PDF Viewer SDK』は、独自のPDFリーダーの開発に利用できる Windows 向けの SDK です。PDFの表示に加えて、プログラムからの自動印刷や、テキスト抽出や画像ファイルへの変換にも利用できます。
また、注釈やページ移動など PDF 編集ができる GUI コントロールを提供しております。コントロールを組み込むことで簡単にPDFの表示・編集機能をお客様のアプリケーションに追加できます。開発にアクロバットやアドビリーダーは必要ありません!

詳しい機能についてぜひ製品ページをご覧ください。
製品ページ:
https://www.antenna.co.jp/pdfviewersdk/

評価版をご用意しております。ぜひこの機会にお試しください!
評価版のお申し込み:
https://www.antenna.co.jp/pdfviewersdk/trial.html


PDF Viewer SDKでPDF自動印刷

「pdf 自動印刷 コマンド」などで検索すると、たくさんのPDFファイルを一括印刷するために、Adobe Reader や Adobe Acrobat をバッチファイルやPowerShell/VBスクリプトなどから利用して、PDFファイルを自動で印刷する工夫をされている記事を多く見かけます。
『Antenna House PDF Viewer SDK』はWindows向けのPDFビューアー開発ライブラリですが、PDFの印刷機能も持ちます。この機能を使うと、Adobe ReaderやAdobe Acrobat がなくても、自由に印刷を制御するコマンドラインプログラムやサービスを開発することができます。この機能についてご紹介したいと思います。

印刷プログラムの開発には「PDF Viewer API」を利用します。C++/C APIのDLLです。
印刷処理は基本的には次の順序で用意されたAPIを呼び出します。

  1.  PDFファイルをオープンする。
  2.  PDFファイルの印刷を開始する。
  3.  ページ番号を指定してPDFページを印刷する。必要に応じて繰り返す。
  4.  PDFファイルの印刷を終了する。
  5.  PDFファイルをクローズする。

2の印刷開始時に、印刷先のプリンタや印刷設定を指定できます。

  • 印刷先指定(デバイスコンテキスト)
  • 印刷設定
  • 印刷ジョブの指定
  • 用紙選択(ページに合わせ自動選択、指定された用紙サイズを使用)
  • 用紙に合わせる/大きいページを縮小、拡大縮小率指定
  • ページへの配置(中央配置、左揃え、右揃えなど)

Windowsの一般的な印刷プログラムの話になりますが、印刷設定はDEVMODE構造体で指定します。このデータに必要な設定をすることで、

  • 用紙の向き
  • 用紙サイズの指定
  • 両面印刷

などの指定をすることもできます。

3でページの指定順序をかえることで、

  • 先頭から順に最後のページまで順に印刷
  • 指定ページのみ印刷
  • 指定部数や、部単位の印刷
  • 逆順に印刷

といった細かな制御をプログラム自身で行うことができます。

この処理を基本として

  • フォルダーを監視してフォルダー内のPDFを自動で一括印刷
  • 印刷ダイアログを出さずにサイレント印刷
  • ファイル名やフォルダーによってプリンタや印刷設定を変更して振り分け印刷
  • PDF Viewer SDK のウォーターマーク機能を使って、透かし強制的に挿入して印刷

といった、さまざまな形の印刷プログラムを開発することができます。

以上、PDF印刷機能のご紹介でした。 PDF印刷の自動化が必要になったら『Antenna House PDF Viewer SDK』をぜひご検討ください。

詳しい機能についてぜひ製品ページをご覧ください。
製品ページ:
https://www.antenna.co.jp/oem/ViewerSDK/

評価版をご用意しております。ぜひこの機会にお試しください!
評価版のお申し込み:
https://www.antenna.co.jp/oem/ViewerSDK/trial.html

お問い合わせ:
SDKは OEM販売 となります。OEMご相談窓口 へお問い合わせください。


関連記事



PDF Viewer SDK


PDF Viewer SDK V3.5 をリリースしました。

『Antenna House PDF Viewer SDK V3.5』をリリース。
PDF ページのテキストやパス情報の取得、PDF ページの SVG ファイルへの変換などさまざまな機能を追加しました。

『Antenna House PDF Viewer SDK V3.5』では以下の新機能を追加しております。

  • PDFViewerAPI
    PDF ページの指定範囲について、

⦁  パス情報を取得( 直線やベジェ曲線の座標、ストローク/フィル等描画の種類 )
⦁  文字情報を取得( 文字の矩形領域・フォントサイズ・フォント名等 )

  • PDFViewerCtrl

⦁  PDF ページの指定範囲を SVG ファイルに変換
⦁  PDF ページの指定範囲の文字情報を取得( 文字の矩形領域・フォントサイズ・フォント名等 )
⦁  PDF 表示において綴じ方の指定
⦁  ユーザーが指定したテキストをハイライト。ハイライト色の変更も可能
⦁  PDFPageViewCtrl のカーソル制御を抑止して、独自のカーソルの設定が可能
⦁  サムネイルコントロールで右クリックメニューのカスタマイズが可能

ここでは、新機能の一部についてご紹介します。他の新機能について下記のページで詳しく説明しておりますので、ぜひこちらもご覧ください。
https://www.antenna.co.jp/oem/ViewerSDK/function_V35.html

文字情報の取得


文字の情報を取得する例です。文字の矩形を取得して赤い枠で表示しています。

PDFViewrAPI

PDF ページの指定範囲を SVG ファイルへ変換


指定した範囲を SVG ファイルに変換する例です。見開きにわたって範囲指定します。

PDFViewrCtrl

 

指定範囲を SVG 出力した結果を Edge で表示しています。

PDFViewerCtrl Edge

『Antenna House PDF Viewer SDK V3.5』は、独自の PDF リーダーの開発に利用できる Windows 向けの SDK です。PDF の表示や画像ファイルへの変換に加えて、プログラムからの自動印刷や、テキスト抽出にも利用できます。

また、注釈やページ移動など PDF 編集ができる GUI コントロールを提供しております。コントロールを組み込むことで簡単に PDF の表示・編集機能をお客様のアプリケーションに追加できます。開発には、アクロバットやアドビリーダーは必要ありません!

詳しい機能についてぜひ製品ページをご覧ください。
製品ページ:
https://www.antenna.co.jp/oem/ViewerSDK/

評価版をご用意しております。ぜひこの機会にお試しください!
評価版のお申し込み:
https://www.antenna.co.jp/oem/ViewerSDK/trial.html

お問い合わせ:
SDKは OEM販売 となります。OEMご相談窓口 へお問い合わせください。


Pages: 1 2 Next