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-039H-5E3KH7HG8E5G");
// オープン
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-039H-5E3KH7HG8E5G");
// 画像ファイル読み込み
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-039H-5E3KH7HG8E5G");
// 画像ファイル読み込み
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-039H-5E3KH7HG8E5G");
// 現在フォルダー内の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-039H-5E3KH7HG8E5G");
// PDFファイル読み込み
stc.OpenDoc("OrdeSheetUpdated.pdf");
// 更新前のPDFを格納
if (stc.SaveLastPDF("OrdeSheetOriginal.pdf") != 0)
Console.WriteLine("The PDF has NOT last version.");

