トラスト・ソフトウェア・システム
トラスト・ソフトウェア・システム

PDF to PDF/A Converter(PDF/Aへ変換) Javaサンプル

「PDF to PDF/A Converter」ソフトは、PDF文書をPDF/A(PDFの長期保存フォーマット)に変換する機能をアプリケーションに追加するための(API)ライブラリです。

PDF/A変換
入力の文書を解析すると共に変換します。解析の結果はログに出力されます。
フォントが埋め込まれていない場合などは、システムのフォントまたは指定のフォントを埋め込みます。

電子署名・タイムスタンプ
必要に応じて電子署名およびタイムスタンプ(RFC3161)を適用します。

機能概要はこちらです。
他にC++C# および VB6.0 のサンプルを公開しています。
無償評価版(リンク先は英語)はこちらです。 ダウンロード手順
PDF to PDF/A Converter ソフト 購入(価格)

無償評価版のダウンロードとインストール

 ライブラリ(評価版API)は無償でダウンロード(試用)できますので、PDF to PDF/A Converterダウンロード手順を参照してダウンロードください。
 ファイルをダウンロードしてから、インストールもしくは適当なフォルダーに解凍します。以下のようなフォルダーができあがりますので、適宜ご利用ください。
binライブラリやライセンスマネージャーなど
doc使用説明書やjavadocなど
includeC/C++用のヘッダー(.h)ファイル
jarCNVA.jar(Javaのラッパー)
libC/C++用のlibファイル
samples各種開発言語のサンプル
サンプルのコンパイルおよび実行前に、jar/CNVA.jarをCLASSPATHにコピーし、 bin/Pdf2PdfAPI.dllをPATHまたはjava.library.pathにコピーしてください。また、無償評価版と共にダウンロードしたライセンスキーをbin/LicenseManager.exeを使って登録してください。 ライセンスキーの登録方法はこちらです。

Javaによる サンプルと解説

PDF/A文書
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に変換します。引数には以下の値を指定します。
第一引数入力の(変換される)PDFファイル (インターネット上のPDF文書を開く場合
第二引数PDFデータの暗号化パスワード
パスワードを指定しない場合は、空の文字列を指定します。
第三引数出力のPDFファイル名
第四引数ログファイル名
処理内容やエラーなどが出力されます。
以下のコードを変換前に実行すると、PDFの解析や変換リポートおよび変換の制御ができます。
//解析、レポート、変換の制御
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の準拠性のレベルを指定します。
指定できるのは以下の値です。
設定値レベル
ePDFA1aPDF/A-1a
ePDFA1bPDF/A-1b
ePDFA2aPDF/A-2a
ePDFA2bPDF/A-2b
ePDFA2uPDF/A-2u
ePDFA3aPDF/A-3a
ePDFA3bPDF/A-3b
ePDFA3uPDF/A-3u

インターネット(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)などを指定します。
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/A 電子署名 署名したPDFデータ はこちらです。
署名領域は、既定の背景色が利用されます。背景色や文字サイズなどを変えたい場合は、PDF Security を使って署名します。
Adobe AcrobatでのPDF文書の署名検証方法 はこちらです。

印影の付いた電子署名

 PDF to PDF Converterでは、電子署名の領域に印影を追加できます。印影の画像を用意した上で、以下のようなコードを変換前に実行します。(「電子印鑑」や「電子押印」などと同じ意味で利用できます。)
doc.setSignatureImageFileName("hanko.png");
 引数に印影画像のファイル名を指定します。
 画像の形式は、PNGのほかにTIFやJPEG,GIF形式など利用できます。ただし、カラー プロファイルをPDF文書と同じにします。

PDF/A 電子署名 印影 印影付き署名PDFデータ はこちらです。
PDF文書の署名検証方法 はこちらです。
画像の形式は、PNGのほかにTIFやJPEG,GIF形式など利用できます。ただし、カラー プロファイルをPDF文書と同じにします。

印影付き署名PDFデータ はこちらです。 印影は、指定された位置の署名領域内に表示されます。
Adobe AcrobatでのPDF文書の署名検証方法 はこちらです。

タイムスタンプ

 Pdf to PDF Converterでは、タイムスタンプを追加できます。以下のコードを変換前に実行します。
doc.setTimeStampURL(pDocument,"http://ca21.trustss.jp/tsa/");
 タイムスタンプ局(TSA)のURLを指定します。
 指定したタイムスタンプのURLは、テスト用のタイムスタンプを発行するTSAです。このTSAは無償・無登録で自由に使えますが、負荷によってはレスポンスが低下します。

署名とタイムスタンプを施したPDFデータはこちらです。
Adobe AcrobatでのPDF文書の署名検証方法はこちらです。

ログファイルの例

 MS-Wordで作成した文書をAcrobatでPDFに変換し、それをPDF/A文書に変換した際のログファイルの例を以下に記します。
- 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_CONVERSIONPDFからPDF/Aの変換でエラーが発生
PDF_E_METADATAXMPメタデータが部分で削除されたか、修正できない
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);

ご質問、お問い合わせ

 メールで support@TrustSS.co.jp 宛てにお送りください。
または、質問のページからお送りいただくようお願いします。ご要望も承っております。(匿名で送れます。)

(記載の会社名および製品名は、各社の登録商標および商標です。)
PDF製品 Javaサンプル
PDF Security
PDF Validator
PDF to PDF/A Converter
PDF to Image Converter
Image to PDF Converter
PDF Printer
PDF Viewer
PDF Prep Tool Suite
PDF Optimization
PDF Command Line Suite
PDF Extract
PDF Easy Parse
株)トラスト・ソフトウェア・システム
暗号化・電子署名・タイムスタンプ ライブラリ作成します。
お問い合わせください。