PDF Structure ライブラリ
PDF Structureライブラリは以下の機能を持ったライブラリです。
・PDF文書のページを画像に変換
・PDF文書にスタンプを追加
・PDF文書に文字・画像・図形を追加
・PDF文書のメタデータ読み出しと編集
・PDF文書フォームデータ読み出し
・PDF文書を画像化したPDFデータに変換
・PDF文書の構成オブジェクトを抽出
・PDF文書に電子署名
PDF Structure(構成)ライブラリ 利用例
電子データ(画像形式・PDF形式)のビジネス文書(電子帳簿等)を保存するサンプルコード示します。
目 次 | |
---|---|
1. | PDFに受信日付印を追加 |
1.1 | 画像をにPDFに変換 |
2. | PDFメタデータに日付・文書名などを追加 |
3. | 保存されたPDFの情報を列挙 |
4. | 更新されたPDFファイルから更新前のPDFファイルを作成 |
1. PDFに受信日付印を追加
注文書などの文書を受け取った際に文書に日付印を追加する。
日付印が追加されたPDFはIncremental Update(増加更新)されているので、後から押印前の文書に戻せます。
オリジナル | 日付印追加済み | |
オリジナルの注文書 | 日付印追加済みの注文書 |
PDF文書に受信印を追加するコード (増加更新による)
C# | C/C++ | Python |
// 初期化 var stc = new Structure("0-032E-683H5EW76R5R"); // オープン stc.OpenDoc("OrdeSheet.pdf"); //受信印追加 var stm = stc.GetStampInterface(); stm.PaintStampFile("受信印.xml"); stm.CloseInterface(); //PDFファイル作成 stc.IncrementalUpdate = true; //増加更新を有効にする stc.SavePDF("OrdeSheetDateStamp.pdf");
スタンプのためのデータ("受信印.xml")は以下です。
<?xml version="1.0" encoding="utf-8" ?> <init xmlns="http://www.trustss.co.jp/2019/Structure/"> <pdfstamp xmlns="http://www.trustss.co.jp/2019/PDFStamp/"> <stamp name="Ken" pos="250 450" layer="annot" page="1" alpha="1" BlendMode="Normal" creator="田中" subject="検印" > <circle size="80" sub="18" line-width="2" stroke-color="0 .75 .75 0" /> <text value="受信" font-name="MS Mincho" font-size="20" color="0 .75 .75 0" expand="19 0 0 51" /> <text value="{localtime:%Y.%m.%d}" format="true" font-name="MS PGothic" font-size="12" color="0 .75 .75 0" expand="10 0 0 35" /> <text value="田中" font-name="MS Gothic" font-size="20" color="0 .75 .75 0" expand="20 0 0 8" /> </stamp> </pdfstamp> </init>
1.1 画像をにPDFに変換
スキャナーなどで作成した画像をPDFに変換します。
画像ファイルから同名のPDF文書を作成
C# | C/C++ | Python |
// 初期化 var stc = new Structure("0-032E-683H5EW76R5R"); // 画像ファイル読み込み stc.OpenDoc("OrdeSheet.jpg"); // PDFファイルを格納 stc.CreatePDF(1, 72, 75, "OrdeSheet.pdf"); //72DPI,圧縮品質75%
2. PDFメタデータに日付・文書名などを追加
PDFファイルを検索しやすくするために、PDFのメタデータに受信日や文書名を追加します。
メタデータは表示データに無関係ですので、どのような文字列でも追加できます。
Incremental Update(増加更新)しますので、受信したオリジナルのPDF文書にいつでも戻せます。
PDFのメタデータに受信日と文書名を追加
C# | C/C++ | Python |
// 初期化 var stc = new Structure("0-032E-683H5EW76R5R"); // 画像ファイル読み込み stc.OpenDoc("OrdeSheet.pdf"); // メタデータに受信の日時を追加 var xmp = stc.GetXmpInterface(); xmp.SetSimplePropertyCurrentDate(kXMP_NS.XMP, "ReceivedDate"); //現在時刻を追記 xmp.SetSimpleProperty(kXMP_NS.XMP, "CompanyName", "サンプル(株)"); //会社名を追記 xmp.UpdateDocument(); xmp.CloseInterface(); // PDFを格納 stc.IncrementalUpdate = true; //Incremental Updateを有効に stc.SavePDF("../../../OrderSheetUd.pdf"); //更新されたPDF文書
3. 保存されたPDFファイルの情報(メタデータ)を列挙
フォルダー内のすべてのPDFファイルに記載されたメタデータを読み取り列挙
C# | C/C++ | Python |
// 初期化 var stc = new Structure("0-032E-683H5EW76R5R"); // 現在フォルダー内のPDFファイル名を取得 string[] files = Directory.GetFiles(".", "*.pdf"); for (int i = 0; i < files.Length; i++) { if (stc.OpenDoc(files[i]) >= 0) { var xmp = stc.GetXmpInterface(); string com = xmp.GetSimpleProperty(kXMP_NS.XMP, "CompanyName"); DateTime dt; string xmp.GetPropertyDate(kXMP_NS.XMP, "ReceivedDate", out dt) == 0 ? dt.ToString() : "NoReveivedDate"; Console.WriteLine(Path.GetFileName(files[i]) + "," + com + "," + receiveStr + ","); xmp.CloseInterface(); stc.CloseDoc(); } }
4. 更新されたPDFファイルから更新前のPDFを作成
Incremental Update(増加更新)されたPDFファイルから更新前のPDF文書を作成
C# | C/C++ | Python |
// 初期化 var stc = new Structure("0-032E-683H5EW76R5R"); // PDFファイル読み込み stc.OpenDoc("OrdeSheetUpdated.pdf"); // 更新前のPDFを格納 if (stc.SaveLastPDF("OrdeSheetOriginal.pdf") != 0) Console.WriteLine("The PDF has NOT last version.");