sgcPDF 機能一覧
sgcPDF のすべての機能を作業別にまとめています。各機能は sgcPDF_*.pas ユニット内で Object Pascal により実装され、ソースコード一式が付属します。このページのコードサンプルは sgcPDF のソースに対してコンパイル・実行されています。
sgcPDF のすべての機能を作業別にまとめています。各機能は sgcPDF_*.pas ユニット内で Object Pascal により実装され、ソースコード一式が付属します。このページのコードサンプルは sgcPDF のソースに対してコンパイル・実行されています。
14 機能
7 機能
11 機能
5 機能
4 機能
8 機能
7 機能
7 機能
5 NuGet パッケージ
| 機能 | 詳細 |
|---|---|
| ページ | A4、Letter、カスタムなど任意のページサイズと向き、ページ回転に対応。 |
| テキスト | 14 の標準 PDF フォントとカラーテキスト。キャンバスと HTML レンダラーによる段落折り返しに対応。 |
| 埋め込みフォント | TrueType、OpenType(TrueType/CFF アウトライン)、TrueType コレクションを自動で埋め込み・サブセット化。Unicode ToUnicode マップによりテキストのコピーと検索が可能。 |
| 複雑な文字体系 | カーニングと合字、GSUB によるアラビア語の結合形、右から左のテキスト向け Unicode 双方向アルゴリズムに対応。 |
| CJK テキスト | 埋め込み TrueType フォントと TrueType コレクションによる中国語・日本語・韓国語テキスト。 |
| 画像 | JPEG、アルファ付き PNG、BMP、TIFF(CCITT ファックス画像を含む)、ソフトマスク対応。 |
| ベクターグラフィック | 線、長方形、円、極圓、ベジェ曲線、多角形、破線パターン、線先端・接合部、透明度、グラデーション。 |
| 表 | ページをまたいで継続するヘッダー、枠線、セル余白、色を持つ表。 |
| バーコード | Code 128、Code 39、EAN-13、EAN-8、UPC-A、ITF、Codabar、GS1-128、QR コード、DataMatrix(ECC200)、PDF417 をベクターで描画。TsgcPDFBarcodeControl(VCL)と TsgcPDFBarcodeFMX(FireMonkey)コントロール、および .NET の TsgcPDFBarcodeControl(WinForms)、TsgcWpfPDFBarcodeControl、TsgcAvaloniaPDFBarcodeControl で、フォーム上への表示、PNG または SVG への保存、Symbol.DrawToPDF による PDF ページへの描画ができます。WPF と Avalonia のコントロールは、モジュールをデバイスの整数ピクセル上でベクタージオメトリとして描画し、すべてのプロパティが依存関係プロパティまたはスタイル付きプロパティなので、テキストを XAML でバインドできます。いずれも sgcPDF のすべてのエディションに含まれます。 |
| 注釈とリンク | 付箋ノート、自由テキスト、ハイライト、下線、取り消し線、線と矢印、四角形と円、手描きインクとスタンプ、さらに URL やページへのリンク。外観ストリームが生成されるため、注釈は Adobe Acrobat、ブラウザー、その他のビューアーで表示されます。 |
| コメント返信 | 任意の注釈に返信を付けるとスレッド形式のディスカッションになり、各返信は独自の作成者、日付、内容を持ちます。 |
| ブックマークとレイヤー | 入れ子になったブックマーク(アウトライン)と、読者が表示/非表示を切り替えられるオプショナルコンテンツグループ(レイヤー)。 |
| HTML→PDF | TsgcPDFHTMLRenderer:見出し、段落、インライン CSS、リスト、表、画像、リンク、改ページ、ヘッダー/フッター、ページ番号。 |
| キャンバスと EMF→PDF | TsgcPDFCanvas は描画呼び出しを PDF コンテンツに記録し、EMF メタファイルは PDF ベクターとして再生されるため、既存のレポートやチャートのコードで PDF 出力を作成できます。 |
procedure HTMLToPDF(const APDFFile: string);
var
oHTML: TsgcPDFHTMLRenderer;
begin
oHTML := TsgcPDFHTMLRenderer.Create(nil);
try
oHTML.PageWidth := 595;
oHTML.PageHeight := 842;
oHTML.FooterText := 'Page {page} of {pages}';
oHTML.HTMLToPDFFile(
'<html><head><style>h1 { color: #003366 }</style></head><body>' +
'<h1>Invoice 2026-001</h1>' +
'<table><tr><th>Item</th><th>Amount</th></tr>' +
'<tr><td>Consulting</td><td>299.00</td></tr></table>' +
'</body></html>', APDFFile);
finally
oHTML.Free;
end;
end;
| 機能 | 詳細 |
|---|---|
| 透かし模様とスタンプ | フォント、サイズ、回転、色、不透明度を指定できるテキスト透かし模様。単一または全ページに適用。 |
| ヘッダー・フッター・ページ番号 | Page %d of %d のような形式のヘッダー/フッターテキストとページ番号。 |
| ページ操作 | ドキュメントのマージ、分割、ページ範囲の抽出、挿入、削除、回転、並べ替え。 |
| 増分保存 | 変更は元ファイルに新しいリビジョンとして追加されるため、以前の電子署名は有効なまま保たれます。 |
| 既存の注釈 | 既存の PDF の注釈は、作成者、日付、返信、ジオメトリを持つ型付きオブジェクトとして読み込まれます。コードまたはビューアーで編集して保存するか、SaveIncremental を呼び出して元のバイトに触れずに変更を追加できるため、既存の署名はそのまま保たれます。 |
| コンパクトな出力 | ファイルを小さくするオブジェクトストリームとクロスリファレンスストリーム、重複・未使用オブジェクトの削除と画像のダウンサンプリングを行う TsgcPDFOptimizer。 |
| 大容量ファイル | オフセットは全面的に 64 ビットであり、オブジェクトはストリームから遵次読み込まれるため、2 GB を超えるファイルも開いて保存できます。 |
| 機能 | 詳細 |
|---|---|
| VCL ビューア | TsgcPDFViewerControl:スクロール、ズームモード、ページナビゲーション、テキスト選択・コピー、ハイライト検索、フォーム入力、リンクナビ、印刷。さらに TsgcPDFThumbnailView と TsgcPDFOutlineView。 |
| FireMonkey ビューア | TsgcPDFViewerFMX は Windows、macOS、iOS、Android 上で FMX キャンバスを介して描画します。矩形ズーム(SelectionMode の psmZoom、OnMarqueeZoom)は、マウスのドラッグ、または長押ししてからのドラッグで指定した矩形にズームします。テキスト検索:FindText は一致箇所をすべて強調表示して最初の箇所までスクロールし、FindNext と FindPrevious で一致箇所間を移動します。OnSearchProgress はページごとに通知し、長い検索を中止できます。SearchColor と SearchCurrentColor で強調表示の色を設定します。表示モード:ViewMode で単一ページ(fvmSinglePage、マウスホイールと Page Up、Page Down でページ送り)、連続(fvmContinuous、既定)、見開き(fvmTwoPage、左右に並べて表示、右から左に対応)を選択します。 |
| .NET ビューア | TsgcPDFViewerControl(WinForms)、TsgcWpfPDFViewer(WPF)、TsgcAvaloniaPDFViewer(Avalonia)。いずれもサムネイルビューとアウトラインビューを備えます。WPF と Avalonia のビューアは、ズームモード、Ctrl+ホイールおよび矩形ズーム(Avalonia ではピンチ)、テキストの選択とコピー、ハイライト付き検索、リンクとアウトラインのナビゲーション、ページボックス、計測ツールに対応します。WinForms ビューアと同様に、注釈を編集し、フォームに入力できます。 |
| インタラクティブな注釈 | Delphi VCL と FMX、C++Builder、.NET WinForms、WPF、Avalonia で、エンドユーザーはマウスで注釈を作成できます。付箋ノート、自由テキスト、テキスト上のハイライト、下線、取り消し線、線と矢印、四角形と楕円、手描きインクとスタンプです。注釈の選択、移動、サイズ変更、編集、削除もできます。ノートをクリックすると、作成者、日付、内容、返信を表示するポップアップが開き、編集と返信ができます。ビューアーは OnAnnotationClick、OnAnnotationAdd、OnAnnotationChange、OnAnnotationDelete と OnAnnotationSelect を発生させます。WPF と Avalonia のビューアでは、AnnotationEditing で編集を有効にし、AnnotationTool でツールを選びます。 |
| ビューアーのテーマ(sgcUI 使用時) | UseUITheme を使うと、VCL、FireMonkey、WinForms、WPF、Avalonia のビューアーと、サムネイル、アウトライン、コメントのビューが、sgcUI のアプリケーションテーマから色を取得します。ページの周囲の領域、ポップアップ、選択範囲、ダークテーマでのダークなスクロールバーが対象で、テーマ、プリセット、アクセントが変わると再描画されます。ページと注釈の色は変わりません。Delphi と C++Builder では sgcUIPDF_Theme ユニットが、.NET では esegece.sgcUICore.sgcPDF パッケージが必要です。 |
| コメントパネル | TsgcPDFCommentsView(VCL)と TsgcPDFCommentsViewFMX は、すべての注釈をページ別に、作成者、日付、内容、スレッド形式の返信とともに一覧表示し、ビューアーと同期します。 |
| 画像ビューアとエディタ | TsgcPDFImageEditor(VCL)、TsgcPDFImageEditorFMX、.NET では TsgcPDFImageEditor(WinForms)、TsgcWpfPDFImageEditor、TsgcAvaloniaPDFImageEditor が、写真やスキャンしたページをズーム、パン、フィットモードで表示し、回転、反転、トリミングを行い、ペン、線、矢印、四角形、楕円、テキスト、ハイライトの注釈を描き込めます。元に戻す操作とやり直しにも対応します。結果は PNG、JPEG、BMP で保存でき、ExportToPDF は元の画像とベクターグラフィックスの注釈を含む PDF ページを書き出します。読み込んだ画像は変更されません。編集内容は JSON として保存して後で読み込み直すことができ、ReadOnly を設定するとコントロールはビューアになります。 ヘルプ |
| サーバー向けラスタレンダラー | TsgcPDFRendererRaster は Windows と Linux 上で GDI を使わずページをピクセルまたは PNG にレンダリングする純粋 Pascal 製ラスタライザーです。 |
| GDI レンダラーとエクスポート | Windows 上でビットマップやデバイスコンテキストにレンダリングし、TsgcPDFExporter でページやサムネイルを BMP、PNG、JPEG にエクスポート。 |
| グラフィックモデル | DeviceGray、DeviceRGB、DeviceCMYK、インデックス、ICCBased、Lab の各色空間、軸対称・放射状シェーディング、タイリングパターン、ソフトマスク、ブレンド不透明度、フォーム XObject。 |
| フォント | 埋め込みの TrueType、CFF、OpenType、Type 1 フォントプログラムはそのアウトラインからレンダリングされ、標準エンコーディングと Identity-H CID フォントに対応します。 |
| 画像デコーダー | Flate、LZW、ASCII85、ASCIIHex、RunLength、JPEG(ベースライン/プログレッシブ、CMYK)、JPEG 2000、CCITT グループ3/4、JBIG2。 |
procedure AnnotatePhoto(aEditor: TsgcPDFImageEditor; const aFileName: string);
var
oModel: TsgcPDFImageEditorModel;
oArrow, oNote: TsgcPDFImageAnnotation;
begin
aEditor.LoadFromFile(aFileName);
oModel := aEditor.Model;
oModel.SaveUndoState;
// crop: source pixels, the annotations below use output pixels
oModel.CropRect := sgcPDFImageRect(40, 30, 840, 630);
// an arrow from the start point to the tip
oArrow := oModel.Annotations.Add(iakArrow);
oArrow.Color := $FFFF0000;
oArrow.Width := 5;
oArrow.AddPoint(120, 420);
oArrow.AddPoint(360, 240);
// a text note: Rect is the text box, FontSize in points
oNote := oModel.Annotations.Add(iakText);
oNote.Color := $FF0000FF;
oNote.FontName := 'Arial';
oNote.FontSize := 18;
oNote.Text := 'Scratch on the door';
oNote.Rect := sgcPDFImageRect(60, 440, 360, 480);
oModel.Changed;
// PNG from the extension, the image and the annotations flattened
aEditor.SaveToFile(ChangeFileExt(aFileName, '.edited.png'));
// the image placed unchanged, the annotations as vector paths and text
aEditor.ExportToPDF(ChangeFileExt(aFileName, '.pdf'));
// the edits as JSON, to edit them again later
aEditor.SaveEditsToFile(ChangeFileExt(aFileName, '.json'));
end;
写真をトリミングし、コードで矢印とテキストメモを元に戻せる形で追加してから、フラット化した PNG、ベクター注釈付きの PDF ページ、JSON の編集内容を書き出します。ユニット:sgcPDF_ImageEditor、sgcPDF_ImageEditor_VCL。TsgcPDFImageEditor を参照してください。
| 機能 | 詳細 |
|---|---|
| テキスト | ページまたは文書全体のテキスト。埋め込みフォントと CID フォントの Unicode マッピングに対応。 |
| テキスト位置 | TsgcPDFTextExtractor は各テキスト断片について X、Y、フォント名、サイズを返します。 |
| 検索 | ページまたは文書内のテキストを検索。 |
| 画像 | TsgcPDFImageExtractor はインライン画像やフォーム XObject 内の画像を含め、ページの画像を列挙して PNG、JPEG、BMP にデコードします。 |
| メタデータと添付ファイル | ドキュメント情報、XMP メタデータ、ブックマーク、レイヤー、埋め込みファイル。 |
| 機能 | 詳細 |
|---|---|
| フォームの作成 | テキストフィールド、チェックボックス、ラジオボタン、コンボボックス、リストボックス、プッシュボタンを外見ストリーム付きで作成。 |
| 入力とフラット化 | コードまたはビューアでフィールド値を設定し、フォームを静的なページコンテンツにフラット化します。 |
| WPF と Avalonia のビューアでのフォーム入力 | FormFilling(既定で有効)により、ユーザーは TsgcWpfPDFViewer と TsgcAvaloniaPDFViewer で、テキストフィールド、チェックボックス、ラジオボタン、コンボボックス、リストボックスに入力でき、Tab キーでタブ順にフィールド間を移動します。OnFieldChange は確定した値ごとに 1 回発生し、Esc キーで古い値が保持され、Core.Document.SaveToFile は入力済みのフォームを保存します。 |
| FDF/XFDF | フォームデータを FDF/XFDF としてインポート・エクスポート。 |
| 機能 | 詳細 |
|---|---|
| パスワード暗号化 | RC4 40/128 ビット、AES-128/AES-256(リビジョン 5/6)。ユーザーパスワードとオーナーパスワード、権限フラグに対応。暗号化されたファイルは読み込み時に復号されます。 |
| 証明書暗号化 | 1 つ以上の受信者証明書(adbe.pkcs7.s4 および adbe.pkcs7.s5)に対する公開鍵暗号化。 |
| 電子署名 | PFX 証明書による署名、表示/非表示の署名フィールド、SHA-256/384/512、RFC 3161 タイムスタンプ、ドキュメントタイムスタンプに対応。 |
| 手書き署名 | TsgcPDFSignaturePad(VCL)、TsgcPDFSignaturePadFMX、.NET では TsgcPDFSignaturePad(WinForms)、TsgcWpfPDFSignaturePad、TsgcAvaloniaPDFSignaturePad が、マウス、タッチスクリーン、ペンで署名を取り込みます。線幅は筆圧(VCL と WinForms ではポインターメッセージ、WPF と Avalonia ではスタイラス。FireMonkey は筆圧を報告しません)と速度に追従し、ストロークは曲線に平滑化され、元に戻す操作とやり直しも使えます。署名は PNG、SVG、JSON で保存でき、ApplyToSignature は署名をベクターインクと PNG 画像として電子署名の表示フィールドに配置します。スキャンした署名など、Appearance.ImageData の PNG または JPEG もフィールドに描画されます。 ヘルプ |
| sgcSign 経由の PAdES | TsgcPDFPAdESSigner は、sgcSign(PEM、PFX、PKCS#11、Windows 証明書ストア、クラウド HSM)の任意の鍵プロバイダーを使用して、DSS 検証データ付きの B-B、B-T、B-LT、B-LTA レベルの ETSI.CAdES.detached 署名を作成します。sgcSign は別途ライセンスです。 |
| 検証 | TsgcPDFSignatureVerifier は各署名の整合性、バイト範囲のカバレッジ、署名者証明書、証明書チェーンをチェックします。 |
| 黒塗り | TsgcPDFRedactor はグリフレベルのテキスト、画像ピクセル、ベクターパス、注釈を領域やテキスト一致に基づいて削除し、オーバーレイを追加し、メタデータを削除できます。削除されたテキストは出力から抽出できません。 |
| テキストのアウトライン化 | TsgcPDFTextOutliner はすべてのグリフを、位置、色、サイズが同じベクターパスに置き換えます。対象はページコンテンツ、フォーム XObject、タイリングパターン、Type3 フォント、注釈の外観です。その後、使われなくなったフォントを削除します。ファイルの印刷結果と見た目は変わりませんが、フォントが不要になるため、印刷会社、RIP、埋め込みを禁止するフォントライセンスに適しています。埋め込まれていないフォントのテキストは、ビューアが使用する代替システムフォントでアウトライン化され、非表示のテキストは削除されます。テキストは選択も検索もできなくなります。 |
procedure CreateEncryptedPDF(const AFileName: string);
var
oPDF: TsgcPDFDocument;
begin
oPDF := TsgcPDFDocument.Create;
try
oPDF.AddPage(595, 842).DrawText('Secret', 50, 780, sfHelveticaBold, 24);
// user password opens the file, owner password grants full rights
oPDF.SetEncryption(emAES_256, 'user123', 'owner456');
oPDF.SaveToFile(AFileName);
finally
oPDF.Free;
end;
end;
procedure SignPDF(const AInput, AOutput: string);
var
oSigner: TsgcPDFSignatureHandler;
begin
oSigner := TsgcPDFSignatureHandler.Create;
try
oSigner.LoadCertificateFromPFX('signer.pfx', 'test123');
oSigner.Reason := 'Document approval';
oSigner.Location := 'Barcelona';
oSigner.HashAlgorithm := shaSHA256;
// visible signature field on page 1: Left, Bottom, Right, Top
oSigner.SetField('Signature1', 0, 50, 50, 250, 100);
oSigner.SignDocument(AInput, AOutput);
finally
oSigner.Free;
end;
end;
procedure SignWithStoredSignature(const aJSONFile, aInput, aOutput: string);
var
oModel: TsgcPDFSignaturePadModel;
oStream: TFileStream;
oSigner: TsgcPDFSignatureHandler;
vAppearance: TsgcPDFSignatureAppearance;
begin
oModel := TsgcPDFSignaturePadModel.Create;
try
// the strokes saved before with SaveToJSON
oStream := TFileStream.Create(aJSONFile, fmOpenRead or fmShareDenyWrite);
try
oModel.LoadFromJSON(oStream);
finally
oStream.Free;
end;
oSigner := TsgcPDFSignatureHandler.Create;
try
oSigner.LoadCertificateFromPFX('signer.pfx', 'test123');
oSigner.SetField('Signature1', 0, 50, 50, 300, 120);
vAppearance := oSigner.Appearance;
// ImageData: a PNG of the ink, InkContent: the vector ink
oModel.ApplyToAppearance(vAppearance);
vAppearance.ShowName := True;
vAppearance.ShowDate := True;
vAppearance.Text := 'Approved';
oSigner.Appearance := vAppearance;
oSigner.SignDocument(aInput, aOutput);
finally
oSigner.Free;
end;
finally
oModel.Free;
end;
end;
署名パッドが JSON として保存した署名を読み込み、フォームなしで署名します(たとえばサーバー上で)。フィールドには、名前、日付、テキストの横にインクが表示されます。フォーム上では TsgcPDFSignaturePad.ApplyToSignature が 1 回の呼び出しで同じことを行います。電子署名ガイドを参照してください。
procedure SignPAdES(const AInput, AOutput: string);
var
oKey: TsgcPEMKeyProvider;
oSigner: TsgcPDFPAdESSigner;
begin
oKey := TsgcPEMKeyProvider.Create(nil);
oSigner := TsgcPDFPAdESSigner.Create(nil);
try
// any sgcSign key provider: PEM, PFX, PKCS#11, Windows store, cloud HSM
oKey.LoadFromFile('signer.pem', 'signer.key');
oSigner.KeyProvider := oKey;
// paBB, paBT (timestamp), paBLT and paBLTA (long term validation)
oSigner.Level := paBB;
// signature field and appearance through the sgcPDF handler
oSigner.Handler.SetField('Signature1', 0, 350, 50, 550, 110);
oSigner.Handler.SignerName := 'John Smith';
oSigner.Handler.Reason := 'Approved';
oSigner.SignPDFFile(AInput, AOutput);
oSigner.KeyProvider := nil;
finally
oSigner.Free;
oKey.Free;
end;
end;
procedure RedactFile(const AInput, AOutput: string);
var
oRedactor: TsgcPDFRedactor;
vOptions: TsgcPDFRedactionOptions;
begin
oRedactor := TsgcPDFRedactor.Create;
try
// every occurrence of a text, on all pages
oRedactor.AddText('John Smith');
// an area of page 0: left, bottom, right, top in points
oRedactor.AddArea(0, 50, 500, 250, 650);
vOptions := oRedactor.Options;
vOptions.OverlayText := 'REDACTED';
vOptions.RemoveMetadata := True;
oRedactor.Options := vOptions;
oRedactor.Apply(AInput, AOutput);
finally
oRedactor.Free;
end;
end;
procedure OutlineText(const AInput, AOutput: string);
var
oOutliner: TsgcPDFTextOutliner;
begin
oOutliner := TsgcPDFTextOutliner.Create;
try
// every glyph becomes a vector path, unused fonts are removed
oOutliner.Apply(AInput, AOutput);
WriteLn('Glyphs outlined: ', oOutliner.ConvertedGlyphs);
WriteLn('Fonts removed: ', oOutliner.RemovedFonts);
finally
oOutliner.Free;
end;
end;
| 機能 | 詳細 |
|---|---|
| PDF/A | レベル a/b の PDF/A-1・PDF/A-2・PDF/A-3 出力と、PDF 2.0 ファイルとしての PDF/A-4・PDF/A-4f(paA4、paA4f)出力。XMP メタデータ、出力インテント、埋め込みフォントに対応。Delphi と .NET で利用できます。 |
| バリデーター | TsgcPDFAValidator は選択した PDF/A レベル(PDF/A-4 と PDF/UA-2 を含む)に対してファイルをチェックし、エラーと警告を報告します。PDF/A-4、PDF/A-4f、PDF/UA-2 の出力は veraPDF で検証しています。 |
| タグ付き PDF | Document、Part、Sect、H1〜H6、P、L、LI、Table、TR、TH、TD、Figure を含む構造ツリー。代替テキスト、マーク付きコンテンツ、ロールマップ、言語、MarkInfo に対応。 |
| PDF/UA-1 | PDF/A-2a または PDF/A-3a とともにアクセシブルな出力を提供し、バリデーターで PDF/UA-1 チェックも行えます。 |
| PDF/UA-2 | PDF/UA-2(ISO 14289-2)出力には PDFUAPart を puaPart2 に設定します。単独でも PDF/A-4 との併用でも使え、PDF 2.0 の構造名前空間と構造デスティネーションを用います。Delphi と .NET で利用でき、sgcReports のエクスポートと sgcUIPDF ブリッジも対象です。 |
| 添付ファイル | MIME タイプ、日付、PDF/A-3 と PDF/A-4f の関連ファイル関係を持つ埋め込みファイル。 |
| Factur-XとZUGFeRD | Minimum、Basic WL、Basic、EN 16931、Extended、XRechnung 各プロファイル向けの Factur-X XMP 拡張スキーマを使って請求書 XML を埋め込み、PDF/A-3b として保存します。 |
procedure CreateFacturX(const AInvoiceXML, AFileName: string);
var
oPDF: TsgcPDFDocument;
oXML: TMemoryStream;
vXML: TBytes;
vFont: Integer;
begin
oPDF := TsgcPDFDocument.Create;
oXML := TMemoryStream.Create;
try
// the invoice XML (CII) is created by your application
oXML.LoadFromFile(AInvoiceXML);
SetLength(vXML, oXML.Size);
Move(oXML.Memory^, vXML[0], oXML.Size);
oPDF.Info.Title := 'Invoice 2026-001';
// PDF/A requires embedded fonts
vFont := oPDF.AddTrueTypeFont('Arial', False, False);
oPDF.AddPage(595, 842).DrawTextTT('Invoice 2026-001', 50, 780, vFont, 18);
// embeds factur-x.xml, adds the Factur-X XMP schema, saves as PDF/A-3b
oPDF.Attachments.AddFacturX(vXML, fxpEN16931);
oPDF.SaveToFile(AFileName);
finally
oXML.Free;
oPDF.Free;
end;
end;
procedure ValidatePDFA(const AFileName: string);
var
oParser: TsgcPDFParser;
oValidator: TsgcPDFAValidator;
i: Integer;
begin
oParser := TsgcPDFParser.Create;
oValidator := TsgcPDFAValidator.Create(paA3b);
try
oParser.LoadFromFile(AFileName);
oParser.Parse;
if oValidator.Validate(oParser) then
WriteLn('PDF/A-3b: no errors')
else
for i := 0 to oValidator.Errors.Count - 1 do
WriteLn('Error: ', oValidator.Errors[i]);
finally
oValidator.Free;
oParser.Free;
end;
end;
procedure CreateArchive(const AFileName: string);
var
oPDF: TsgcPDFDocument;
oPage: TsgcPDFPage;
vFont: Integer;
begin
oPDF := TsgcPDFDocument.Create;
try
oPDF.Info.Title := 'Annual report';
oPDF.Tagged := True;
oPDF.StructureTree.Lang := 'en-US';
// PDF/A-4 and PDF/UA-2 in the same PDF 2.0 file
oPDF.SetPDFALevel(paA4);
oPDF.PDFUA := True;
oPDF.PDFUAPart := puaPart2;
vFont := oPDF.AddTrueTypeFont('Arial', False, False);
oPage := oPDF.AddPage(595, 842);
oPage.Tagging.BeginElement(stH1);
oPage.DrawTextTT('Annual report', 50, 770, vFont, 20);
oPage.Tagging.EndElement;
oPage.Tagging.BeginElement(stP);
oPage.DrawTextTT('Archived and accessible.', 50, 740, vFont, 11);
oPage.Tagging.EndElement;
oPDF.SaveToFile(AFileName);
finally
oPDF.Free;
end;
end;
ファイルを検証するには、paA4 を指定して TsgcPDFAValidator を作成し、PDFUA と PDFUAPart プロパティを設定します。ヘルプの PDF/A-4 と PDF/UA-2 のトピックを参照してください。
Delphi と .NET で、同じ名前の同じプリプレス API を使えます。
| 機能 | 詳細 |
|---|---|
| ページボックス | TsgcPDFPage の MediaBox、CropBox、BleedBox、TrimBox、ArtBox と、Rotate、UserUnit。ファイルの読み込みと保存でも保持されます。 |
| 面付け | AddPageAsForm は、別のドキュメントのページをページボックスまたは矩形で切り出してフォーム XObject にし、DrawForm、DrawFormInRect、DrawFormMatrix でシート上に配置します。PDFImposition デモは、これらでシートのレイアウトを組み立てます。 |
| トンボ類 | DrawCropMarks、DrawBleedMarks、DrawRegistrationMark、DrawColorBar、DrawSlugText。 |
| 特色 | Separation、Registration、DeviceN の色空間と、塗りと線のオーバープリントグラフィックス状態。 |
| オーバープリントプレビュー | レンダラーの OverprintPreview は、画面とラスタ出力でオーバープリントをシミュレートします。 |
| PDF/X 出力インテント | SetOutputIntent は、任意の ICC プロファイルを付けた GTS_PDFX 出力インテントを書き込み、PDFXVersion は PDF/X バージョンのキーを設定します。 |
| ビューアツール | VCL と WinForms のビューア、および WPF と Avalonia のビューアでの、ページボックス表示、ページボックスのヒント、計測ツール。 |
using esegece.sgcPDF;
using static esegece.sgcPDF.sgcPDF_Types;
using (TsgcPDFDocument oSource = new TsgcPDFDocument())
using (TsgcPDFDocument oSheet = new TsgcPDFDocument())
{
oSource.LoadFromFile("flyer.pdf");
// two A4 pages side by side, placed by their trim box, with crop marks
TsgcPDFPage oPage = oSheet.AddPage(1270, 922);
for (int i = 0; i < 2; i++)
{
int vForm = oSheet.AddPageAsForm(oSource, i, TsgcPDFPageBox.ppbTrimBox);
TsgcPDFRect oTrim = sgcPDFRect(40 + i * 595, 40, 635 + i * 595, 882);
oPage.DrawFormInRect(vForm, oTrim, true);
oPage.DrawCropMarks(oTrim);
}
oSheet.SaveToFile("sheet.pdf");
}
ライブラリの完全マネージド C# ポートで、Delphi の 1 ユニットにつき 1 つの C# ファイルで構成され、同じクラス名(TsgcPDFDocument、TsgcPDFPage、TsgcPDFEditor など)を使用します。NuGet パッケージとして提供され、各パッケージは .Community サフィックス付きの無料 Community 版としても利用できます。
| パッケージ | 詳細 |
|---|---|
esegece.sgcPDF | ライブラリ本体:ドキュメントモデル、パーサー、ライター、エディター、レンダリングコア、フォント、画像、フォーム、署名、暗号化、テキストおよび画像抽出、プリプレス、PDF/A(PDF/A-4 を含む)、PDF/UA-2。.NET Standard 2.0、.NET Framework 4.7.2、.NET 6、.NET 8、.NET 9、.NET 10 に対応。 |
esegece.sgcPDF.WinForms | GDI レンダラーとキャンバス、EMF 再生、ページの画像エクスポート、TsgcPDFViewerControl(インタラクティブな注釈とコメント返信に対応)、TsgcPDFThumbnailView、TsgcPDFBarcodeControl、TsgcPDFOutlineView、TsgcPDFSignaturePad、TsgcPDFImageEditor コントロール(ページボックスと計測ツール付き)。Windows 上で .NET Framework 4.7.2 と .NET 8 に対応。 |
esegece.sgcPDF.Wpf | WPF ビューア:TsgcWpfPDFViewer、TsgcWpfPDFThumbnailView、TsgcWpfPDFOutlineView、TsgcWpfPDFBarcodeControl、TsgcWpfPDFSignaturePad、TsgcWpfPDFImageEditor。Windows 上で .NET Framework 4.7.2、.NET 8、.NET 9、.NET 10 に対応。 |
esegece.sgcPDF.Avalonia | Avalonia ビューア:TsgcAvaloniaPDFViewer、TsgcAvaloniaPDFThumbnailView、TsgcAvaloniaPDFOutlineView、TsgcAvaloniaPDFBarcodeControl、TsgcAvaloniaPDFSignaturePad、TsgcAvaloniaPDFImageEditor。.NET 8、.NET 9、.NET 10 に対応。 |
esegece.sgcPDF.sgcSign | sgcSign .NET へのオプションのブリッジ:TsgcPDFPAdESSigner は任意の sgcSign キープロバイダーを使って PAdES B-B、B-T、B-LT、B-LTA に署名します。 |
| Community 版 | 登録版と同じ機能です。年間総収入が 100 万ユーロ未満で開発者が 5 名以下の個人および組織向けに無料で、起動時に短い通知が表示されます。パッケージ ID は同じで .Community サフィックスが付きます。たとえば esegece.sgcPDF.Community です。 |
dotnet add package esegece.sgcPDF
dotnet add package esegece.sgcPDF.WinForms
dotnet add package esegece.sgcPDF.Wpf
dotnet add package esegece.sgcPDF.Avalonia
dotnet add package esegece.sgcPDF.sgcSign