losLab ソフトウェア開発ブログ

Delphi PDF Library

Software Development Blog

Delphi PDF Library

DelphiからPDFにAVIF、HEIF、JPEG XL画像を埋め込む

PDF Library for Delphiは、PDFにAVIF、HEIF、JPEG XL画像を埋め込みます。ビットマップ変換では失われてしまうアルファ、ICCプロファイル、16ビットチャンネルを保持します

Delphi PDF Library

Delphi TIFFデコーダーの強化:BigTIFFとタイル型TIFF

PDFlibPasがDelphi向け内蔵TIFFデコーダーを強化した内容を解説。BigTIFFのマジック値43を名指しで拒否し、タグ解析時点でタイル型TIFFを拒否し、デコード量を256 MiBで上限管理する仕組みを紹介します

Delphi PDF Library

Delphiで書くCatalog SpiderInfo Web Captureコマンド

PDF Library for Delphiで、CatalogのSpiderInfo辞書にWeb Captureコマンドのメタデータを書き出します。間接参照のコマンド辞書、URL、階層レベル、フラグのホワイトリストを解説します

Delphi PDF Library

PDFをPDF/Aへ変換しメタデータを修復するDelphi実装

ConvertToPDFAがドキュメントを修復し主張するパートを明示して結果を検証する一方、RepairDocumentMetadataがInfo辞書とXMPの不整合をDelphiで解消する仕組みを解説 は1回の呼び出しで普通のドキュメントをアーカイブ向けに変える。選択したパートが禁じるものを削除し、パートが要求するも

Delphi PDF Library

DelphiでTDataSetとレポートをPDFにエクスポートする

losLab PDF Libraryを使用して、Delphiで任意のTDataSet、FastReport、QuickReport、またはReportBuilderレポートをPDFにエクスポートします。ページ分割された表やヘッドレス出力に対応しています。 DelphiでTDataSetまたはレポートをPDFにエクスポー

Delphi PDF Library

再現可能ビルドのためのDelphi決定論的PDF ID

決定論的なトレーラーIDでDelphiのPDF出力をバイト単位で同一にする方法:シードの導出方法、暗号化ファイルがIDを保持する理由、他に固定すべきもの losLab PDF Libraryは、 を呼び出せば、同一の入力に対してバイト単位で同一のPDF出力を生成できる。デフォルトでは、トレーラーの

Delphi PDF Library

DelphiのPDF DLL、ActiveX、dylibバインディング

PDF Library for Delphiは1つのフラットなPDF APIをStdcall DLL、Safecall ActiveXオブジェクト、Cdecl dylibとして公開します。各バインディングが隠す文字列とハンドルの罠を解説します

Delphi PDF Library

PDF向け Pure Pascal の Ed448 と Brainpool ECDSA

PDFlibPas が外部暗号ライブラリに頼らず RFC 8032 の Ed448 と RFC 5639 の 3 つの Brainpool 曲線を実装した方法を、開発中に見つかった 6 つの根本原因とともに解説します

Delphi PDF Library

電子インボイスの検証:DelphiでのveraPDFとMustang

PDF/A 準拠は請求書としての準拠ではありません。PDF Library for Delphi の電子インボイスが veraPDF のコンテナ検査と Mustang の業務ルールの両方を通る条件を Delphi で確認します

Delphi PDF Library

PDFlibPasのEMF変換:PolyDraw、Polyline、Bezierの規則

PDFlibPasが[MS-EMF]の定義に従い、EMFのPolyBezier、Polyline、PolylineTo、PolyPolyline、PolyDrawレコードをPDFパスへ変換する仕組みを、Delphiコードとパーサーの落とし穴つきで解説します

Delphi PDF Library

PDFlibPas による Free Pascal 向け EMF ベクトル取り込み

6500 行の EMF から PDF への変換機能に書き直しではなく条件定義の変更が必要だった理由と、ULONG_PTR 型のハッチフィールドが Win64 でメタファイルレコードの整列を崩す仕組みを解説します

Delphi PDF Library

DelphiでPDFの暗号化と権限を監査する

PDF Library for DelphiでPDFの/Encrypt辞書を監査者の目で読み解きます。アルゴリズム、鍵長、AES-256のR5とR6の違い、権限ビット、Identityフィルタの罠まで解説します

Delphi PDF Library

DelphiでのFactur-XおよびZUGFeRDハイブリッドインボイス

電子インボイスは、内部にインボイスXMLが埋め込まれたPDF/A-3です。Delphiにおいて、PDF Library for Delphiがプロファイル全体でどのようにFactur-XおよびZUGFeRDハイブリッドインボイスを構築するかをご覧ください

Delphi PDF Library

Delphi で高速 PDF マージ: バイトレベル参照シフト

PDF Library for Delphi が Delphi でソースバイトを再利用し、間接参照をオブジェクト単位でシフトして、解析と再シリアライズの往復を省きながら高速に PDF をマージする仕組みを解説します

Delphi PDF Library

DelphiのFDF注釈インポート:無言のゼロを避ける

FDF 注釈インポーターが追加していないコメントを数えてしまう理由、losLab PDF Library が FDF のキー・Rect・小数をどうパースするか、Delphi でインポートを検証する方法を解説します

Delphi PDF Library

PDFlibPasのFPC Win32向けOMF→COFFオブジェクトリンク

Win32のFree Pascalが要求するのはCOFFオブジェクト。PDFlibPasではFPC用にオブジェクトセットを分け、セクション名を正規化し、Delphiの64ビット整数ヘルパABIを外すことでリンクを通しています

Delphi PDF Library

DelphiのPDFにおけるGoToR、GoToE、Launchアクション

DelphiでPDF Library for DelphiのGoToR、GoToE、Launchアクションを構築する方法を解説する:リモートページジャンプ、埋め込みPDFターゲット、外部起動、そしてゼロ始まりページの罠を扱う

Delphi PDF Library

PDFlibPasのHTML to PDF:実体デコードはシングルパス

2パスのHTMLレンダラーが実体を正確に1回だけデコードすべき理由、PDFlibPasが各境界でテキストを再エスケープする仕組み、Delphiでユーザー入力を安全にエスケープする方法を解説します

Delphi PDF Library

DelphiでのインタラクティブPDFフォーム:アクションとJavaScript

PDFフォームアクションは静的ページをアプリに変えます。。PDF Library for DelphiがDelphiでHide、ImportData、Named、JavaScriptアクションをフィールドやリンクに接続する方法を解説します PDFフォームフィールド自体は、値を保持する単なるボックスにすぎません

Delphi PDF Library

Delphi Linux64 LP64 の罠:Longint、ポインタ、WIN64

PDFlibPas を dcclinux64 に移植したときに遭遇した Delphi Linux64 LP64 の落とし穴を解説します。8 バイトに変わる Longint、TStream オーバーライドのシグネチャ、バイナリレコード、そしてポインタ幅の判定に WIN64 が使えない理由を扱います

Delphi PDF Library

DelphiのML-DSA:PDFlibPasにおけるFIPS 204耐量子署名

PDFlibPasがFIPS 204のML-DSA 44、65、87をDelphiとFPC向けの純Object Pascalで実装した内容を解説。三つのパラメータセットが一つのエンジンを共有する構成と、KATを壊したサンプリングのバグを紹介します

Delphi PDF Library

署名後の PDF で何が変わったかを分類する

PDFlibPas が文書を以前のリビジョンと比較し、差分ごとにホワイトリストか未分類かを仕分けることで、DocMDP ポリシーの強制が 1 つのレベル比較に収まります。署名文書の改変検知に役立てる方法を解説します

Delphi PDF Library

Delphi の MRC 圧縮: スキャン PDF を JPEG + CCITT へ

TPDFlib.CompressPageAsMRC でスキャン PDF ページを圧縮する方法。低解像度の JPEG 背景にフル解像度の CCITT ステンシルマスクを重ね、文字のシャープさを保ったまま Mixed Raster Content で 2 層に再構築します

Delphi PDF Library

PDF Library for Delphi: Delphi での multi-engine PDF rendering

PDF Library for Delphiでファイルごとに内蔵、Cairo、PDFiumの各レンダラーを切り替える方法を解説する:実行時のエンジン検出、DPIスケーリングの罠、自らログを残すフォールバックチェーンを扱う

Delphi PDF Library

Java なしで Delphi から EN 16931 請求書検証をネイティブに行う

PDFlibPas が EN 16931、XRechnung、Peppol BIS の請求書ルールを Java ランタイムなしで Pascal からネイティブに検証する方法を解説します。組み込みカバレッジの範囲、CII と UBL で許容誤差が異なる話、ルールパッケージのピン留めまで扱います

Delphi PDF Library

Delphi で PDF のブックマークと注釈アクションを読み取る

多くの Delphi 向け PDF ライブラリはブックマークや注釈アクションを書き込めても読み戻せません。PDF Library for Delphi で GoTo、URI、Launch、JavaScript アクションを解析します。 上流工程から流れてきた PDF のフォルダを引き継ぎ、依頼は一見単純です

Delphi PDF Library

Delphi PDFでのページ合成と透かしテンプレート

losLab PDF LibraryのForm XObjectキャプチャと組み合わせ可能な透かしテンプレートを使用して、DelphiでPDFページを並べて合成またはベクター画質のまま重ね合わせる方法を解説

Delphi PDF Library

Delphiでの並行PDFページレンダリング:スレッドセーフティ

losLab PDF Libraryを使用してDelphiでPDFページを並行レンダリングします。TPDFlibがワーカースレッドごとに1つのインスタンスを必要とする理由、GDI+用のCoInitialize、およびセーフなロギングについて解説します。 DelphiからPDFページを並行してレンダリングする際の鉄則は、

Delphi PDF Library

DelphiでPDFのファイルサイズを削減する:フォント、画像、LZW

losLab PDF Libraryを使用してDelphiでPDFファイルサイズを削減:埋め込みフォントのサブセット化、過大画像のダウンサンプリング、古いLZWストリームのFlateへの変換を一括で実行します DelphiでPDFのファイルサイズを削減するために、losLab PDF

Delphi PDF Library

PDF Library for DelphiでPDFをMarkdownとDOCXに変換

PDF Library for DelphiでDelphiからPDFページを意味的なMarkdownや編集可能なDOCXへ変換し、見出しやリスト、表を推定してOffice不要でストリーミング書き込みする

Delphi PDF Library

PDF Library for Delphi: Delphi での PDF/A and PDF/UA preflight

PDF Library for DelphiからDelphiで内蔵のPDF/AおよびPDF/UAプリフライトを実行する方法を解説する:構造化された検出結果、差分可能なレポート、保存時修正、veraPDFとの相互検証を扱う

Delphi PDF Library

DelphiのFactur-X XMP向けPDF/A-3拡張スキーマ

Factur-Xの請求書はXMPプロパティが未宣言だとveraPDFで不合格になります。PDF Library for Delphiがfxメタデータ用のPDF/A-3拡張スキーマをどう追加するかを見ていきます

Delphi PDF Library

PDFlibPasでDelphiからPDF/E-1技術文書を書き出す

PDF/E-1は独自のXMPネームスペースを持ち、ライフサイクルメタデータの全文を要求し、BX互換エスケープを禁じます。PDFlibPasのオーサーモードと有界プリフライト、保存ゲートの修復と拒否の分担を解説します

Delphi PDF Library

Delphi の PDF/UA-2 検証: 単なる UA-1 Part 2 ではない

PDFlibPasがDelphiでPDF/UA-2ファイルを検証する方法を解説:PDF 2.0名前空間とRoleMapNSによるロール解決、トラバーサル上限でのフェイルクローズ動作、正直なカバレッジレポートの内容

Delphi PDF Library

PDFlibPas による Delphi の PDF/X-1a、X-3、X-4 出力

PDFlibPasでDelphiからPDF/X-1a、X-3、X-4の印刷用ファイルを生成する方法:各パートが許容する内容、SetPDFXModeが自動で書き込む識別情報と出力インテント、保存後のプリフライト検証までを解説

Delphi PDF Library

Delphiで保存時にPDFの小数精度を保つ仕組み

PDFlibPasは解析した小数のテキストをそのまま保持して書き戻すため、Delphiでの何も変えない保存でCalRGBのGamma値が丸められページの色がずれる問題がなくなりました

Delphi PDF Library

PDFlibPasによるDelphiのPDF段階的レンジロード

PDFlibPasがHTTPレンジサーバーやオブジェクトストレージから数GB級のPDFを開く方法を解説。読み取りコールバック、チャンク整合のキャッシュ、要求の統合、先行取得を紹介します

Delphi PDF Library

DelphiでのPDF修復出力の原子性:renameとDACLの安全性

PDF Library for Delphiが修復したQDFファイルをアトミックに公開する仕組みを解説します。排他作成の一時ファイル、フラッシュ、同一ボリューム内のrename、DACLの引き継ぎ、そして拒否する失敗とは

Delphi PDF Library

DelphiでPDFを一つのカラースペースに変換する方法

RecolorDocumentがPDFを描画し直すことなくグレイ、RGB、CMYKへ移行し、カラーオペレータ、画像、インデックスパレット、グラデーションのストップを一括変換する仕組みを解説 はPDF全体を一つのカラースペースに移し、 は単一ページに対して同じことをする。両方とも1でグレイ、2でRGB、3でCMYKを受け

Delphi PDF Library

Delphiでブックマークを壊さずPDFページを置き換える

PDF Library for Delphiで対象のページオブジェクトを保持し視覚キーだけを移すことで、ブックマーク・リンク・フォームウィジェットを保ったままPDFページをその場で置き換える方法を詳しく解説する

Delphi PDF Library

DelphiのSHAKE256 XOF:Keccakのドメイン分離

PDFlibPasはSHA-3とSHAKE256を1つのKeccak-f[1600]コアで実行し、両者を分けるのはpad10*1のドメインバイトとレート規則だけです。Delphi向けのストリーミングXOFも解説します

Delphi PDF Library

Pascal PDF ライブラリのサイレントスタブ障害の診断

VCL なし構成で現れる空の代替実装には 3 つの形状があります。成功を報告するスタブが最も発見しづらい理由と、出力バイトを検査して診断する方法を、PDFlibPas の実例とともに解説します

Delphi PDF Library

Delphi での SM2、SM3、SM4 PDF 署名と暗号化

PDFlibPasが純粋なObject PascalでSM2とSM3によるPDF署名、SM4 crypt filterによる暗号化を実装します。APIの呼び方、OID、相互運用の注意点、多倍長整数の罠まで

Delphi PDF Library

DelphiでタグPDFの構造ツリーを作る

PDF Library for DelphiでタグPDFを生成します。描画しながら構造ツリーを組み立て、表のヘッダー意味付け、アーティファクト、保存前のPDF/UA診断までを解説します

Delphi PDF Library

Delphi で TIFF の 12bit・可逆・算術符号 JPEG を PDF へ

PDFlibPas は 12 ビット拡張シーケンシャル、可逆 Huffman、算術符号化、旧形式 TIFF JPEG をネイティブな Pascal で取り込み、どんな PDF リーダーでも開ける 8 または 16 ビット画像として埋め込みます

Delphi PDF Library

Delphiでの真のPDF墨消し:削除とサニタイズ

losLab PDF Libraryを使用したDelphiでの真のPDF墨消し:RedactRegionがコンテンツストリームのバイトデータを物理的に削除し、SanitizeDocumentがメタデータ、スクリプト、アクションを除去します。 Delphiでの本物のPDF墨消し(Redaction)とは、単に上から黒く塗

Delphi PDF Library

悪意のあるファイルに対するPascal PDFパーサーの堅牢化

PDFパーサーはアタックサーフェスです。フォントおよび画像デコーダにおける実際の整数オーバーフロー、境界外書き込み、無限再帰の欠陥とDelphiでの修正方法を解説します PDFは、単に「開く」だけのものではなく、入力値を解釈して処理する「小さなプログラム」です。埋め込まれたすべてのフォントは文字構成命令(chars

Delphi PDF Library

DelphiでのXFA SOMパス式:動的フォームデータ

losLab PDF LibraryのXFA 3.3 SOMパス式を使用して、Delphiから動的XFAフォームの繰り返し行にデータを入力する方法を解説:$recordルート、[*]ワイルドカード、述語フィルターなどを紹介