sgcPDF 機能一覧

sgcPDF のすべての機能を作業別にまとめています。各機能は sgcPDF_*.pas ユニット内で Object Pascal により実装され、ソースコード一式が付属します。このページのコードサンプルは sgcPDF のソースに対してコンパイル・実行されています。

作成

機能詳細
ページ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 をベクターで描画。
注釈とリンクテキストノート、ハイライト、URL/ページへのリンク、スタンプ、自由テキスト注釈。
ブックマークとレイヤー入れ子になったブックマーク(アウトライン)と、読者が表示/非表示を切り替えられるオプショナルコンテンツグループ(レイヤー)。
HTML→PDFTsgcPDFHTMLRenderer:見出し、段落、インライン CSS、リスト、表、画像、リンク、改ページ、ヘッダー/フッター、ページ番号。
キャンバスと EMF→PDFTsgcPDFCanvas は描画呼び出しを PDF コンテンツに記録し、EMF メタファイルは PDF ベクターとして再生されるため、既存のレポートやチャートのコードで PDF 出力を作成できます。

HTML→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 のような形式のヘッダー/フッターテキストとページ番号。
ページ操作ドキュメントのマージ、分割、ページ範囲の抽出、挿入、削除、回転、並べ替え。
増分保存変更は元ファイルに新しいリビジョンとして追加されるため、以前の電子署名は有効なまま保たれます。
コンパクトな出力ファイルを小さくするオブジェクトストリームとクロスリファレンスストリーム、重複・未使用オブジェクトの削除と画像のダウンサンプリングを行う TsgcPDFOptimizer。
大容量ファイルオフセットは全面的に 64 ビットであり、オブジェクトはストリームから遵次読み込まれるため、2 GB を超えるファイルも開いて保存できます。

レンダリング & ビューア

機能詳細
VCL ビューアTsgcPDFViewerControl:スクロール、ズームモード、ページナビゲーション、テキスト選択・コピー、ハイライト検索、フォーム入力、リンクナビ、印刷。さらに TsgcPDFThumbnailView と TsgcPDFOutlineView。
FireMonkey ビューアTsgcPDFViewerFMX は Windows、macOS、iOS、Android 上で FMX キャンバスを介して描画します。
サーバー向けラスタレンダラー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 経由の PAdESTsgcPDFPAdESSigner は、sgcSign(PEM、PFX、PKCS#11、Windows 証明書ストア、クラウド HSM)の任意の鍵プロバイダーを使用して、DSS 検証データ付きの B-B、B-T、B-LT、B-LTA レベルの ETSI.CAdES.detached 署名を作成します。sgcSign は別途ライセンスです。
検証TsgcPDFSignatureVerifier は各署名の整合性、バイト範囲のカバレッジ、署名者証明書、証明書チェーンをチェックします。
黒塗りTsgcPDFRedactor はグリフレベルのテキスト、画像ピクセル、ベクターパス、注釈を領域やテキスト一致に基づいて削除し、オーバーレイを追加し、メタデータを削除できます。削除されたテキストは出力から抽出できません。

AES-256 パスワード暗号化

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;

PFX 証明書での署名

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;

sgcSign ブリッジによる PAdES

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;

アーカイブ & アクセシビリティ

機能詳細
PDF/Aレベル a/b の PDF/A-1・PDF/A-2・PDF/A-3 出力。XMP メタデータ、出力インテント、埋め込みフォントに対応。
バリデーターTsgcPDFAValidator は選択した PDF/A レベルに対してファイルをチェックし、エラーと警告を報告します。
タグ付き PDFDocument、Part、Sect、H1〜H6、P、L、LI、Table、TR、TH、TD、Figure を含む構造ツリー。代替テキスト、マーク付きコンテンツ、ロールマップ、言語、MarkInfo に対応。
PDF/UA-1PDF/A-2a または PDF/A-3a とともにアクセシブルな出力を提供し、バリデーターで PDF/UA-1 チェックも行えます。
添付ファイルMIME タイプ、日付、PDF/A-3 関連ファイル関係を持つ埋め込みファイル。
Factur-XとZUGFeRDMinimum、Basic WL、Basic、EN 16931、Extended、XRechnung 各プロファイル向けの Factur-X XMP 拡張スキーマを使って請求書 XML を埋め込み、PDF/A-3b として保存します。

PDF/A-3b としての Factur-X 請求書

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;

PDF/A の検証

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;
最もお得な選択: All-AccesseSeGeCe の全製品にプレミアムサポートが付いて、年間 €1,059 からご利用いただけます。
All-Access の価格を見る

sgcPDF で開発

トライアルを依頼して、Delphi または C++ Builder アプリに PDF 機能を追加しましょう。