PDF to PDF/A Converter(PDF/Aへ変換) Javaサンプル
「PDF to PDF/A Converter」ソフトは、PDF文書をPDF/A(PDFの長期保存フォーマット)に変換する機能をアプリケーションに追加するための(API)ライブラリです。
PDF/A変換
入力の文書を解析すると共に変換します。解析の結果はログに出力されます。
フォントが埋め込まれていない場合などは、システムのフォントまたは指定のフォントを埋め込みます。
電子署名・タイムスタンプ
必要に応じて電子署名およびタイムスタンプ(RFC3161)を適用します。
PDF/A変換
入力の文書を解析すると共に変換します。解析の結果はログに出力されます。
フォントが埋め込まれていない場合などは、システムのフォントまたは指定のフォントを埋め込みます。
電子署名・タイムスタンプ
必要に応じて電子署名およびタイムスタンプ(RFC3161)を適用します。
無償評価版のダウンロードとインストール
ライブラリ(評価版API)は無償でダウンロード(試用)できますので、PDF to PDF/A Converterダウンロード手順を参照してダウンロードください。
ファイルをダウンロードしてから、インストールもしくは適当なフォルダーに解凍します。以下のようなフォルダーができあがりますので、適宜ご利用ください。
サンプルのコンパイルおよび実行前に、jar/CNVA.jarをCLASSPATHにコピーし、 bin/Pdf2PdfAPI.dllをPATHまたはjava.library.pathにコピーしてください。また、無償評価版と共にダウンロードしたライセンスキーをbin/LicenseManager.exeを使って登録してください。
ライセンスキーの登録方法はこちらです。
ファイルをダウンロードしてから、インストールもしくは適当なフォルダーに解凍します。以下のようなフォルダーができあがりますので、適宜ご利用ください。
bin | ライブラリやライセンスマネージャーなど |
doc | 使用説明書やjavadocなど |
include | C/C++用のヘッダー(.h)ファイル |
jar | CNVA.jar(Javaのラッパー) |
lib | C/C++用のlibファイル |
samples | 各種開発言語のサンプル |
Javaによる サンプルと解説
PDF/A規格に準拠していて、変更ができません。 (変換前のPDF文書、変換後のPDF文書) | 「PDF to PDF/A Converter(PDF/A変換)」ライブラリ(API)を使って、左のようなPDF/A文書をPDF文書から作成します。 |
「PDF to PDF/A Converter」はPDF/Aへの変換ばかりでなく、電子署名やタイムスタンプを適用できます。「電子署名」を参照してください。 また、電子署名の位置指定や電子署名への印影追加もできます。
PDF、またはPDF/A文書へのより高機能な電子署名は、「PDF Security」を利用してください。
PDF からPDF/A への変換 サンプル・コード
import com.pdftools.pdf2pdf.*; public class cnv { public static void main(String[] args) { try{ Pdf2PdfAPI doc = new Pdf2PdfAPI(); //変換 doc.convert("input.pdf", null, "output_a.pdf", "cnv.log"); //終了 doc.destroyObject(); }catch(Throwable e){ e.printStackTrace(); } } }
new Pdf2PdfAPI( ) | PDF文書を扱うインスタンスを生成します。 | ||||||||
convert( ) | PDFをPDF/Aに変換します。引数には以下の値を指定します。
|
||||||||
//解析、レポート、変換の制御 doc.setConvertAlways(true); doc.setReportDetails(true); doc.setReportSummary(true); doc.setPostAnalyze(true); doc.setCompliance(COMPLIANCE.ePDFA1a);
setConvertAlways( ) | 引数に真を指定すると、入力PDFの基準準拠に関係なく変換しようとします。 | ||||||||||||||||||
setReportDetails( ) | 引数に真を指定すると、変換ステップにおいてページごとのPDF標準準拠違反をログファイルに書き出します。 ReportSummaryよりも詳細な情報が提供されます。 |
||||||||||||||||||
setReportSummary( ) | 引数に真を指定すると、変換ステップおよび変換後の解析ステップにおけるエラーや警告がログファイルに書き込まれます。 | ||||||||||||||||||
setPostAnalyze( ) | 引数に真を指定すると、作成したPDF出力ファイルを解析し、指定された準拠性のレベルを満たしているか否かを確認します。ログファイルにはこの分析の結果が書き込まれます。 入力ファイルの解析で問題を検出できなったにもかかわらず、変換中に問題が検出される場合があります。それは、入力パラメータ(例えば、ICCプロファイルなど)に依存しているような場合に起こりえます。 変換後の解析では、このような変換中に検出された出力ファイル内のエラーを提供します。 ポスト解析は、文書が変換できた場合のみ実行されます。 |
||||||||||||||||||
setCompliance( ) | このプロパティには、PDFの準拠性のレベルを指定します。 指定できるのは以下の値です。
|
インターネット(Web)上のファイルを指定する方法
入力のPDFファイル指定では以下の形式で指定すると、インターネット上のPDFファイルを直接変換できます。
http://[username:password@]domain[:port][/resource]"username"および"password"は基本認証(Basic Authentication)のユーザー名とパスワード指定です。
先のサンプルで"Pdf2PdfConvert( )"のコードを以下のように変更すると、Web上のPDFを変換しローカルに新しいPDFファイルを作成します。
//変換 doc.convert("http://www.pdf-tools.trustss.jp/data/Receipt2a.pdf", null, "output_a.pdf", "cnv.log");
電子署名
変換処理と同時にPDF文書に電子署名できます。さらに必要があれば、RFC3161タイムスタンプを追加できます。
追加された、電子署名やタイムスタンプはAcrobat Readerで検証できます(プラグインは必要ありません)。
電子署名(Sign)するには、署名者(Signer)の証明書を指定するだけで簡単に追加されます。以下のように変換前に証明書のCN(Common Name)などを指定します。
署名領域は、既定の背景色が利用されます。背景色や文字サイズなどを変えたい場合は、PDF Security を使って署名します。
Adobe AcrobatでのPDF文書の署名検証方法 はこちらです。
電子署名(Sign)するには、署名者(Signer)の証明書を指定するだけで簡単に追加されます。以下のように変換前に証明書のCN(Common Name)などを指定します。
doc.setCertificateName("Common Name"); doc.setIssuer("CA21"); doc.setSignatureSerialNumber("10 51"); doc.setSignatureReason("Received"); doc.setSignatureRectangle(390, 613, 120, 52);
setCertificateName( ) | 証明書の所有者名(CN)を指定します。発行者とシリアル番号で証明書を指定した場合は、自由な文字列を指定できます。 |
setIssuer( ) | 証明書の発行者名(Issuer)を指定します。名前だけで証明書を一意に選択できる場合は省略できます。 |
setSignatureSerialNumber( ) | 証明書のシリアル番号を指定します。証明書の発行者名と共に指定します。 |
setSignatureReason( ) | 署名領域の理由欄に記載される文字列を指定します。[省略可] 日本語で表示させる場合は、PDF Securityを利用してください。 |
setSignatureRectangle( ) | 署名領域をX座標、Y座標、幅、高さの順に指定します。[省略可] A4サイズの場合、左下はX=0,Y=0で右上は、X=595,Y=842です。省略すると、署名領域はページの左下になります。 |
署名したPDFデータ はこちらです。 |
Adobe AcrobatでのPDF文書の署名検証方法 はこちらです。
印影の付いた電子署名
PDF to PDF Converterでは、電子署名の領域に印影を追加できます。印影の画像を用意した上で、以下のようなコードを変換前に実行します。(「電子印鑑」や「電子押印」などと同じ意味で利用できます。)
画像の形式は、PNGのほかにTIFやJPEG,GIF形式など利用できます。ただし、カラー プロファイルをPDF文書と同じにします。
画像の形式は、PNGのほかにTIFやJPEG,GIF形式など利用できます。ただし、カラー プロファイルをPDF文書と同じにします。
印影付き署名PDFデータ はこちらです。 印影は、指定された位置の署名領域内に表示されます。
Adobe AcrobatでのPDF文書の署名検証方法 はこちらです。
doc.setSignatureImageFileName("hanko.png");引数に印影画像のファイル名を指定します。
画像の形式は、PNGのほかにTIFやJPEG,GIF形式など利用できます。ただし、カラー プロファイルをPDF文書と同じにします。
印影付き署名PDFデータ はこちらです。 PDF文書の署名検証方法 はこちらです。 |
印影付き署名PDFデータ はこちらです。 印影は、指定された位置の署名領域内に表示されます。
Adobe AcrobatでのPDF文書の署名検証方法 はこちらです。
タイムスタンプ
Pdf to PDF Converterでは、タイムスタンプを追加できます。以下のコードを変換前に実行します。
指定したタイムスタンプのURLは、テスト用のタイムスタンプを発行するTSAです。このTSAは無償・無登録で自由に使えますが、負荷によってはレスポンスが低下します。
署名とタイムスタンプを施したPDFデータはこちらです。
Adobe AcrobatでのPDF文書の署名検証方法はこちらです。
doc.setTimeStampURL(pDocument,"http://ca21.trustss.jp/tsa/");タイムスタンプ局(TSA)のURLを指定します。
指定したタイムスタンプのURLは、テスト用のタイムスタンプを発行するTSAです。このTSAは無償・無登録で自由に使えますが、負荷によってはレスポンスが低下します。
署名とタイムスタンプを施したPDFデータはこちらです。
Adobe AcrobatでのPDF文書の署名検証方法はこちらです。
ログファイルの例
MS-Wordで作成した文書をAcrobatでPDFに変換し、それをPDF/A文書に変換した際のログファイルの例を以下に記します。
変換後には、上記の問題が解決(メタデータが修正もしくは削除)されたことで正しく変換できたことが示されています。変換されたPDF文書は、指定された規格に準拠しています。
- Opening file c:\pdf2pdfconv\Receipt2.pdf. - Analyzing c:\pdf2pdfconv\Receipt2.pdf. "c:\pdf2pdfconv\Receipt2.pdf", 0, 64, 0x0A09C882, "The property 'xmpMM:subject' is not defined in schema 'XMP Media Management Schema'.", 1 "c:\pdf2pdfconv\Receipt2.pdf", 0, 64, 0x0A09C881, "The schema description for namespace 'pdfx:' (http://ns.adobe.com/pdfx/1.3/) is missing.", 6 "c:\pdf2pdfconv\Receipt2.pdf", 0, 64, 0x8341052B, "The required XMP property 'pdfaid:part' is missing.", 1 "c:\pdf2pdfconv\Receipt2.pdf", 0, 64, 0x8341052B, "The required XMP property 'pdfaid:conformance' is missing.", 1 "c:\pdf2pdfconv\Receipt2.pdf", 1, 65, 0x03418614, "A device-specific color space (DeviceGray) without an appropriate output intent is used.", 1 "c:\pdf2pdfconv\Receipt2.pdf", 1, 0, 0x83410612, "The document does not conform to the requested standard.", 1 - Setting output intent profile C:\Windows\system32\spool\drivers\color\sRGB Color Space Profile.icm. - Conversion events. - Parts of the XMP metadata could not be repaired and had to be removed. * Conversion errors in c:\pdf2pdfconv\Receipt2a.pdf. - File c:\pdf2pdfconv\Receipt2.pdf processed.変換前の解析では、PDF文書にいくつかの問題(PDF/Aに変換するためにメタデータが欠落しているなど)があることが示されています。
変換後には、上記の問題が解決(メタデータが修正もしくは削除)されたことで正しく変換できたことが示されています。変換されたPDF文書は、指定された規格に準拠しています。
エラーについて
変換前のエラーと変換後のエラーが報告されます。以下にその例を示します。
なお、エラーは以下のコードで抑制できます。
返還前のエラー | |
エラーコード | 内容 |
---|---|
PDF_E_FILE_OPEN | 入力ファイルがオープンできなかった |
PDF_E_FILE_CREATE | 出力ファイルを生成できない |
PDF_E_STOPED | 解析を中止した |
変換後のエラー (ポスト解析が実施された場合のみ報告される) | |
エラーコード | 内容 |
---|---|
PDF_E_CONVERSION | PDFからPDF/Aの変換でエラーが発生 |
PDF_E_METADATA | XMPメタデータが部分で削除されたか、修正できない |
PDF_E_POST_ANALYSIS | 出力文書のポスト解析でエラー |
PDF_E_CONFORMANCE | 文書が規格に準拠していない |
SIG_CREA_E_CERT | 指定された電子証明書が見つからない |
//解析、レポート、変換の制御 doc.setConvertAlways(true); doc.setReportDetails(true); doc.setReportSummary(true); doc.setPostAnalyze(true); doc.setCompliance(COMPLIANCE.ePDFA1a);
ご質問、お問い合わせ
(記載の会社名および製品名は、各社の登録商標および商標です。)