sgcPDF 機能一覧
sgcPDF のすべての機能を作業別にまとめています。各機能は sgcPDF_*.pas ユニット内で Object Pascal により実装され、ソースコード一式が付属します。このページのコードサンプルは sgcPDF のソースに対してコンパイル・実行されています。
sgcPDF のすべての機能を作業別にまとめています。各機能は sgcPDF_*.pas ユニット内で Object Pascal により実装され、ソースコード一式が付属します。このページのコードサンプルは sgcPDF のソースに対してコンパイル・実行されています。
14 機能
7 機能
10 機能
5 機能
3 機能
7 機能
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)コントロールで、フォーム上への表示、PNG または SVG への保存、Symbol.DrawToPDF による PDF ページへの描画ができます。 |
| 注釈とリンク | 付箋ノート、自由テキスト、ハイライト、下線、取り消し線、線と矢印、四角形と円、手描きインクとスタンプ、さらに 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)は、マウスのドラッグ、または長押ししてからのドラッグで指定した矩形にズームします。 |
| .NET ビューア | TsgcPDFViewerControl(WinForms)、TsgcWpfPDFViewer(WPF)、TsgcAvaloniaPDFViewer(Avalonia)。いずれもサムネイルビューとアウトラインビューを備えます。WPF と Avalonia のビューアは、ズームモード、Ctrl+ホイールおよび矩形ズーム(Avalonia ではピンチ)、テキストの選択とコピー、ハイライト付き検索、リンクとアウトラインのナビゲーション、ページボックス、計測ツールに対応します。注釈とフォームフィールドは表示のみで、編集はできません。 |
| インタラクティブな注釈 | Delphi VCL と FMX、C++Builder、.NET WinForms で、エンドユーザーはマウスで注釈を作成できます。付箋ノート、自由テキスト、テキスト上のハイライト、下線、取り消し線、線と矢印、四角形と楕円、手描きインクとスタンプです。注釈の選択、移動、サイズ変更、編集、削除もできます。ノートをクリックすると、作成者、日付、内容、返信を表示するポップアップが開き、編集と返信ができます。ビューアーは OnAnnotationClick、OnAnnotationAdd、OnAnnotationChange、OnAnnotationDelete と OnAnnotationSelect を発生させます。 |
| コメントパネル | TsgcPDFCommentsView(VCL)と TsgcPDFCommentsViewFMX は、すべての注釈をページ別に、作成者、日付、内容、スレッド形式の返信とともに一覧表示し、ビューアーと同期します。 |
| サーバー向けラスタレンダラー | 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。 |
| 機能 | 詳細 |
|---|---|
| テキスト | ページまたは文書全体のテキスト。埋め込みフォントと CID フォントの Unicode マッピングに対応。 |
| テキスト位置 | TsgcPDFTextExtractor は各テキスト断片について X、Y、フォント名、サイズを返します。 |
| 検索 | ページまたは文書内のテキストを検索。 |
| 画像 | TsgcPDFImageExtractor はインライン画像やフォーム XObject 内の画像を含め、ページの画像を列挙して PNG、JPEG、BMP にデコードします。 |
| メタデータと添付ファイル | ドキュメント情報、XMP メタデータ、ブックマーク、レイヤー、埋め込みファイル。 |
| 機能 | 詳細 |
|---|---|
| フォームの作成 | テキストフィールド、チェックボックス、ラジオボタン、コンボボックス、リストボックス、プッシュボタンを外見ストリーム付きで作成。 |
| 入力とフラット化 | コードまたはビューアでフィールド値を設定し、フォームを静的なページコンテンツにフラット化します。 |
| 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 タイムスタンプ、ドキュメントタイムスタンプに対応。 |
| 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 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 コントロール(ページボックスと計測ツール付き)。Windows 上で .NET Framework 4.7.2 と .NET 8 に対応。 |
esegece.sgcPDF.Wpf | WPF ビューア:TsgcWpfPDFViewer、TsgcWpfPDFThumbnailView、TsgcWpfPDFOutlineView。Windows 上で .NET Framework 4.7.2、.NET 8、.NET 9、.NET 10 に対応。 |
esegece.sgcPDF.Avalonia | Avalonia ビューア:TsgcAvaloniaPDFViewer、TsgcAvaloniaPDFThumbnailView、TsgcAvaloniaPDFOutlineView。.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 名以下の個人および組織向けに無料で、起動時に短い通知が表示されます。 |
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