PDFと画像ファイルを橋渡しするimageサンプル
Adobe PDF Libraryには、開発環境毎に様々な機能のサンプルコードが提供されています。
今回、Adobe PDF Libraryの.NET用のサンプルの「Images」をご紹介します。Images は、PDFと画像に関係するサンプルです。画像に関するものは多数用意されており、サンプルを使って様々な処理を試すことができます。
PDF を扱うソリューションの中では、PDFを各種形式の画像に変換することはよく行われる処理ではないでしょうか。また、PDF内の画像を抽出したり、その逆にPDFに画像を挿入したりと言った処理もしばしば行われるものです。今回はそんなときに役立つサンプルをご紹介します。
Images サンプル一覧
Adobe PDF Libraryの.NET用のサンプルとして、Imagesは14種類あります。以下にご紹介します。
DocToImages
このサンプルでは、PDFドキュメントを、ページごとに1つずつ一連のグラフィックイメージファイルに変換する方法を示します。複数ページのTIFFファイルを作成することもできます。このプログラムでは、コマンドラインで書式設定値を手動で入力する必要があります。
DrawSeparations
このサンプルでは、PDFファイルから、グレースケール分解のリストを描画する方法を示します。
DrawToBitmap
このサンプルは、PDFファイルをラスタライズし、一連の画像ファイル(ビットマップファイル)に変換します。
EPSSeparations
このサンプルでは、PDFファイルからEncapsulated PostScript (EPS) グラフィックによる色分解を操作する方法を示します。
GetSeparatedImages
このサンプルでは、PDFファイルから複数ページのTIFF ファイルにグレースケール分離のリストを描画する方法を示します。
ImageEmbedICCProfile
このサンプルプログラムは、ICCカラープロファイルをグラフィックファイルに埋め込む方法を示します。また、出力のレンダリング方法を設定し、出力としてTIF画像ファイルまたは一連のTIFファイルを生成します。
ImageExport
このサンプルは、提供されたPDFファイルのページを読み取り、各ページで見つかった画像を抽出し、それらの画像をTIF、JPG、PNG、GIF、BMPごとに1つずつ外部グラフィックファイルに保存します。
具体的な処理としては、プログラムはコンテンツストリームで画像要素を調べ、それらの画像オブジェクトをエクスポートします。PDFファイルのページに3つの画像がある場合、プログラムはその3つの画像に対して、3 セットのグラフィックファイルを作成します。サンプルプログラムはテキストを無視し、PDF構文を解析して、各ページで見つかったラスター画像またはベクター画像を識別します。
ImageExtraction
このサンプルは、選択したPDFファイルを検索し、テキスト内のラスター描画、図、写真を識別します。次に、これらの画像をPDFファイルから抽出し、同じディレクトリ内の別のグラフィックファイルセットにコピーします。クリップ アートなどのベクター画像はエクスポートされません。
ImageFromStream
このサンプルプログラムは、選択したPDFファイルを検索し、System.IO.Streams から図面、図、写真などを識別します。ストリームとは、ストリーム内の値を解釈するために使用される辞書とともにPDFドキュメントに埋め込まれた、任意の長さのバイト文字列です。このプログラムはStreamIO に似ています。
ImageImport
このプログラムは、画像をPDFファイルにインポートする方法を示します。プログラムはプロンプトを表示せずに実行され、画像ファイルからPDFファイルにグラフィックをインポートする方法を示す2つのPDFファイルを作成します。 PDF出力ファイルの 1 つは、複数ページのTIFファイルからインポートされたグラフィックの結果です。
ImageResampling
このサンプルは、PDF内の画像を検索して再サンプリングする方法を示します。その後、画像は新しい解像度でPDFに戻されます。再サンプリングには、PDF内の 1 つまたは複数の画像のサイズを変更することが含まれます。通常、このプロセスは、画像または一連の画像の解像度を下げて、サイズを小さくするために使用されます。その結果、このプロセスによってPDFのサイズが小さくなります。
ImageSoftMask
PDFページに配置する画像ファイルを追加し、そのソフトマスク画像として使用する別の画像ファイルを追加します。
このサンプルは、PDFでのマスクの使用方法を示します。画像をマスクすると、機能を削除または変更することができます。一方、ソフトマスクを使用すると、ページに画像を配置し、その画像の透明度レベルを定義できます。
OutputPreview
このサンプルでは、印刷前のソフトプルーフィング中に、さまざまな着色剤の組み合わせを視覚化するために使用される出力プレビューイメージの作成を示します。
RasterizePage
1. 選択したピクセル幅と解像度の出力画像。
この例では、デフォルト値は 400 ピクセル幅と 300 DPI 解像度です。画像の実際のサイズ (KB または MB) は、この 2 つの設定に基づいて決定されます。
2. 特定の解像度の PDFページの物理サイズの半分の出力画像。
元のページが 8.5 x 11 インチの場合、JPG または PNG 出力ファイルのサイズは 4.25 x 5.5 インチになります。このサンプルで使用されているメソッド CreatePageImageBasedOnPhysicalSize は、出力画像ファイルの物理サイズの入力を提供しません。代わりに、スケール値 (デフォルトは .5) と解像度 (デフォルトは 96 DPI) を入力できます。この例では、結果のグラフィック イメージ ファイルの幅をピクセル単位で計算する方法を示します。
3. 回転されていないPDFページから描画されたコンテンツを含む出力イメージ ファイル。ただし、元のページの上部半分のみが含まれています。
まとめ
以上、Imagesサンプルのご紹介でした。PDF関連のソリューションでは、ビュアーの機能のために画像化したり、ファイル一覧画面のためにサムネイル画像を作ったりと、PDFの画像化を行う機会と言うのは結構多いのではないでしょうか
なお、こちらのサンプルは、.NET環境のものとなっており、下記よりご入手いただいてご利用が可能です。お気軽にお試しいただければ幸いです。
https://github.com/datalogics/apdfl-csharp-dotnet-samples/tree/main/Images
イーストは、AcrobatなどAdobe製のPDFソリューション内で使われている、Adobe PDF Libraryの国内唯一の正規代理店です。PDFを活用するソリューションやツールの開発にAdobe純正の処理を組み込めます。Adobe PDF Libraryについては、イーストにお気軽にお問合せください。