PDFium Delphi Component リリースノート
PDFium Delphi Component のユーザー向け機能、修正、ビューア改善、ドキュメント生成、PDF/A 出力、レンダリング、ドキュメント更新のバージョン履歴です
最新リリース
- 最新バージョン: 3.137.1; リリース日:
Version 3.137.1
修正 (Fixed)
- OpenSSL のオンライン失効検査で、OCSP 証拠も利用できる responder もない場合は、それまでの CRL の状態、理由、ネイティブエラー、対象証明書を保持するようにしました。これにより、期限切れ CRL の診断が正しく残ります
Version 3.137.0
追加 (Added)
- ネイティブ Free Pascal/LCL は Linux Qt6 と macOS Cocoa に対応し、プラットフォームのフォント解決、専用の一時ストレージ、文書の読み込み、編集、フォーム、保存、描画を利用できます
- macOS Keychain 署名は query 内だけの Keychain パスと、上限付きの offline 証明書チェーン export に対応します。ネイティブ Free Pascal と Delphi の署名/timestamp 通信も含みます
- 並行描画は worker ごとの実際の module パス、初期化アドレス、unload 結果を報告し、既存の PDFium image を再利用する native loader を拒否します
修正 (Fixed)
- Unix の PDFium binding は LP64 の unsigned-long Callback とバッファ幅を保持し、4 GiB を超える独自ストリーム読み取りも扱います
- ネイティブ LCL 描画は bitmap の byte order と channel 配置に従い、Cocoa 出力と device-context 描画の色を保持します
- ビットマップ、タイル、progressive 描画で、背景に clNone または clDefault を指定した場合の alpha を維持します。描画されていない領域は、ネイティブのページ背景透過フラグにかかわらず透明のままです
- 署名は EC 鍵を含む証明書の公開鍵アルゴリズムを正しく識別します。macOS CMS 検証は外側の署名と timestamp の結果を独立して維持し、RSA-PSS 検証の未対応を明示します
- PAdES timestamp 検証は critical で用途が単独の id-kp-timeStamping EKU を要求します。OpenSSL は S/MIME の証明書 purpose を誤って適用せず、基本的な TSA chain を評価します
- Unix の atomic file commit は置換後の directory flush が失敗しても新しい増分 baseline を維持し、commit 済み出力の例外と不完全な durability 結果を公開します
変更 (Changed)
- Delphi POSIX の future は既定の thread priority を受け付け、未対応の要求は worker 開始前に拒否します
Version 3.136.0
追加 (Added)
- オプションの LittleCMS ICC 変換と文書の色変換は、元のテキスト、ベクトル、8 ビット/16 ビット画像成分を使い、選択した特色を保持して未対応内容を明示報告します
- 複雑な墨消しは入れ子の Form XObject、塗りの曲線パス、回転/反転/shear した画像の対応部分を保持し、有限の形状処理上限と詳細な削除報告を備えます
- 有効オブジェクトの読み取りは、実体化やデコードの前に、オブジェクト本体と圧縮 object stream の独立した上限を公開します
セキュリティ (Security)
- 墨消しは Tagged の置換テキスト、XFA、optional-content layer、text clipping、確認できない描画状態を拒否します。内容 stream 間で分割されたオペレーターも含め、未対応の機密内容の意味が export されるのを防ぎます
Version 3.135.0
追加 (Added)
- 注釈と AcroForm ウィジェットの比較は、安定した名前、明示的なページ対応、曖昧性報告、前後の overlay 境界を使い、ページのピクセルとは独立して属性変更を報告します
- table cell は混在したテキスト書式と代替テキスト付き画像、任意のページ間 spanning-cell 継続、小計行、継続ラベルに対応し、Tagged PDF の関係を保持します
修正 (Fixed)
- Tagged layout 生成は機能の確認前に native library を初期化し、新しい文書コンポーネントの最初の操作として実行できます
- 1 つのテキストオブジェクトの複数置換は元の境界に対して一度だけ fitting し、全体の最小水平倍率を適用して不要な途中編集を避けます
Version 3.134.0
追加 (Added)
- ナビゲーション結合は選択、並べ替え、重複ページでも名前付き宛先と内部ページリンクを保持し、明示的な衝突ポリシーとトランザクション検証を備えます
- 書式付きテキスト置換に、検証済みソース計画、独立 preview、native font 再利用、明示 fallback、上限付き水平 fitting、失敗/キャンセル後の rollback を追加しました
- OpenSSL 署名は明示設定した秘密鍵と証明書チェーンで RSA-PSS、RSA PKCS#1 v1.5、ECDSA を扱い、Windows 以外の既定 signer 解決にも対応します
- OpenSSL 検証に、認証済み offline OCSP、制限付き online OCSP、失敗証明書の識別、任意の CMS signer ごとの診断を追加しました
- FPC macOS の Security.framework verifier は、明示 trust anchor と指定 OCSP 証拠により、暗号学的な結果、chain trust、失効を独立して報告します
修正 (Fixed)
- リンク注釈の URI 抽出は終端を含む完全な native buffer を渡し、有効な宛先を正しく返します
Version 3.133.0
追加 (Added)
- AcroForm のトランザクション結合は選択ページ、フィールド拒否、rename、namespace、互換の共有テキスト/選択フィールドに対応し、リソース、外観、計算順序を分離します
- オプションのバーコードプロバイダーは Code128、QR、DataMatrix、PDF417 を生成してグレースケール画像を認識し、native 依存と有限の処理上限を明示します
修正 (Fixed)
- FormField は継承した親値を読み、共有ウィジェット間で一貫してテキスト編集を commit します。保存/再読み込み後の値と読み取り専用の検査も維持します
- 継承テキストウィジェットの外観再生成は親値を復元し、shadow widget value を残しません。フィールド代入成功後は共有ページ cache を無効化します
Version 3.132.0
追加 (Added)
- 任意のページ対応付けは挿入、削除、移動ページを識別し、上限付き Unicode テキスト差分、連結した視覚領域、export 可能な比較 overlay を提供します
- ナビゲーションのトランザクション結合は、選択、重複、並べ替えインポートでも outline 階層、スタイル、URI アクション、再対応付けした宛先を保持します
- オプションの Tesseract OCR プロバイダーは依存診断、Unicode 単語形状、キャンセル、認識上限に対応し、検索レイヤーの保存/再読み込みを検証します
セキュリティ (Security)
- RSA-PSS ポリシーは署名と制限付き公開鍵の全パラメーターを評価し、不正な DER、非互換の hash、mask、salt、trailer 制限を拒否します
修正 (Fixed)
- outline 保存検証は、枝だけに意味がある展開状態の違いで leaf bookmark を拒否しなくなりました
Version 3.131.0
追加 (Added)
- WatermarkStamp は対象 PDF と stamp PDF、対象ページ区間、ページ番号だけの出力を受け付け、異なるページサイズでも比率に沿って配置します
- MergePDF は結合前に各入力の選択ページと出力先区間を preview し、単一入力からのページ抽出にも対応します
修正 (Fixed)
- MergePDF はインポート前に全ソースを検証し、読み取れない入力、不正な範囲、インポート失敗、キャンセルでは停止して、不完全な結合を保存しません
- WatermarkStamp はソースと template file を保持し、両方の stamp overlay を無効にしてもページ番号を確実に保存します
変更 (Changed)
- 各 native demo のメインディレクトリを 22 の完全なワークフローに整理し、SecurityAudit と XfdfLab を Miscellaneous に移して project パスとナビゲーションを修正しました
削除 (Removed)
- 固定の AnnotationsLab 手順を削除しました。注釈の作成、検査、交換は引き続き XFDF、内容抽出サンプル、API テストで扱います
Version 3.130.0
変更 (Changed)
- 各ネイティブデモディレクトリを 24 の完全なワークフローを中心に再構成しました。Miscellaneous の下には 9 つの特化 API トピックを置き、最初に選ぶデモ向けの案内も独立させています
- アノテーション、アクセシビリティ、フォント、ナビゲーション、テキストエクスポート、ページ画像レンダリング、印刷設定、インタラクション、XFA の各特化サンプルは、それぞれのソースと同梱入力付きで引き続き利用できます
削除 (Removed)
- 最小構成だった CJKTextLab と RTLTextLab の各プロジェクトを削除しました。Unicode での作成は CreatePDF で引き続き利用でき、shaped-text API も API リファレンスにドキュメントとして残っています
修正 (Fixed)
- C++Builder のアクセシビリティ API ウォークスルーが音声スクリプトのエクスポート時に失敗する問題を修正しました
- C++Builder のアノテーションサンプルがハイライト座標に誤った配列オフセットを使っていた問題を修正しました
Version 3.129.0
変更 (Changed)
- すべてのネイティブデモを自己完結型にしました。サンプルロジックを使う側の各プロジェクトへ移動し、表示系と抽出系の該当プロジェクトにはショーケース PDF を同梱し、Demo/Shared ディレクトリは廃止しました
- プロジェクトを単体でコピーした場合でも、オフライン機能ツアー、ライブプレビュー、編集可能なフォーム、初期データ入りレポート、添付ファイル、ナビゲーション、印刷設定、静的 XFA 検査がそのまま使えます
- FontProperties は実際のフォントと文字メトリクスを表示した状態で開くようになり、別のドキュメントを開いた直後に最初のテキストオブジェクトを即座に分析します
修正 (Fixed)
- ネイティブ各版で PDFViewer のエクスペリエンスバーの配置と背景を統一し、FontProperties がシャットダウン前にビューアとの関連付けを解放するようにしました
Version 3.128.0
追加 (Added)
- ライブテキスト、ベクターチャート、埋め込み画像、テーブル、AcroForm フィールド、ブックマーク、リンク、アノテーション、添付ファイルを備えた、オフラインで動く 6 ページのデモショーケースを追加しました
- すべてのネイティブ PDFViewer 版に、テキスト検索、2 ページ見開き、ナイトリーディング、ドキュメント検査、フォーム探索をワンクリックで試せる表示体験を追加しました
変更 (Changed)
- CreatePDF は保存前に、編集可能なメタデータとコンテンツオプション、実際の画像とアノテーションオブジェクト、オプションの Unicode ページを備えた 2 ページのライブプレビューを開くようになりました
- 表示、検索、抽出、フォーム、ナビゲーションの各特化サンプルは、初期データが投入されたワークフローを開くようになりました。添付ファイル、印刷設定、静的 XFA の各サンプルには実際の機能固有データが含まれます
修正 (Fixed)
- 起動時、ドキュメント置き換え時、プレビュー再生成時、シャットダウン時におけるビューアのライフサイクルとフォーカス処理を修正しました
- Lazarus 版 FormFill の値エディターが、起動時に最初のフィールドを選択した後も無効のままになる問題を修正しました
- SearchAndSelect のドキュメントバインドと抽出レポートを修正しました。これまでは後続ページのフォームフィールドがレポートから漏れたり、生成されたメモリ内サンプルに対して利用できないファイルヘッダーを照会したりしていました
Version 3.127.0
変更 (Changed)
- MultiPageViewer の各デモはビューア組み込みのテキスト選択とクリップボード API を使うようになり、ページレイアウトをまたいで選択の挙動が一貫するようになりました。従来別立てで用意されていたダブルクリック選択モードは削除されています
- 例ガイドは 35 のデモトピックすべてをそれぞれ異なるワークフローに対応付けて整理し、Delphi と Lazarus のアクセシビリティ、取り込み、プリフライトの各コンソール例は同じ Pascal 実装を共有するようになりました
追加 (Added)
- XfdfLab は XFDF のインポート後に PDF を保存できるようになりました。Delphi の GUI では Save PDF が提供され、コンソール版は明示的な 2 番目の出力パスを受け付けます
修正 (Fixed)
- C++Builder と Lazarus の MultiPageViewer デモは未対応のフォームプロパティを持たない状態で開くようになり、すべての MultiPageViewer デモはクローズ前にドキュメントを切断します
- Lazarus のアクセシビリティワークベンチは、HTML レビューレポート用に JPEG のページサムネイルを生成します
- ExtractImages デモは実際の埋め込み画像オブジェクトを含む 2 ページのサンプルを作成するため、デフォルトの抽出ワークフローでは 4 枚の画像が生成されます
- コンソールの XFDF ラウンドトリップサンプルはアノテーションの内容と作成者情報を保持し、出力の書き込み前に、競合または既存の PDF 出力パスを拒否します
Version 3.126.2
修正 (Fixed)
- フル XFA 表示がデフォルトのテキスト選択設定で動作するようになり、キーボード入力時には選択テキストを置き換え、読み取り専用フィールドと無効化されたフォームイベントを尊重し、動的レイアウト変更の後には表示中のページハンドルを更新します
- Windows の V8 ライブラリーは、保存済み XFA ストリームを変更する前に、不正な形式の XDP 属性、重複した属性、無効な namespace の使用、一致しない XML 宣言を拒否します
セキュリティ (Security)
- 署名リビジョン分析は、widget と appearance オブジェクトが同じオブジェクトグラフを参照している場合でもページコンテンツの所有権を保持し、DocMDP のもとで許可されたフォームや注釈の更新として、後から行われたページ編集が受け入れられるのを防ぎます
- ロックされたフィールドと注釈が同じ間接値オブジェクトを共有していても、FieldMDP のロックは引き続き有効です
Version 3.126.1
修正 (Fixed)
- 動的 XFA の再ページ割り付けでは、ページの追加や削除の後に、実際の総ページ数が
TPdf.PageCountとOnXfaPageCountChangedへ反映されるようになりました。ホスト側のナビゲーションがフォームレイアウトと同期し続けます - 更新された Windows の V8 ライブラリーは、動的 XFA レイアウト変更の後に入力 widget のジオメトリを更新します。フィールドが別のページへ移動しても、テキストと入力ヒットエリアがずれないように保たれます
Version 3.126.0
追加 (Added)
- 更新された Win32 / Win64 の V8 ライブラリーは、対応する single-stream XFA 文書の保存時に、ライブな dataset とフォームパケットの外にある XML コメントと処理命令を保持します。UTF-8 と UTF-16 の入力が対象です
修正 (Fixed)
- single-stream XFA 保存は、無効な UTF-8 / UTF-16 エンコーディング、未完了のタグ、無効な entity 参照、不正な処理命令を持つ入力を、黙って書き直す代わりに拒否します。ライブデータパケット内の未対応構成、DTD 宣言、XMLDSig は従来どおり明示的な保存失敗です
- ビューアーのコピー、切り取り、フォーム貼り付けは、別のスレッドやアプリケーションが Windows クリップボードを保持しているときに短時間リトライし、一時的な競合の解消を待ちます。切り取りに失敗しても元のフィールドテキストは保持されます
Version 3.125.3
修正 (Fixed)
- 更新された Win32 / Win64 の通常版
pdfium.dllライブラリーも、最終的なバッファー PDF 書き込みが失敗したときに失敗を報告するようになりました。V8 ライブラリーに先行して投入された修正と同じ扱いです
Version 3.125.2
修正 (Fixed)
- 更新された Windows の V8 ライブラリーは、編集済み XFA テキストを保存と再読み込みを通じて保持します。空の値、元の空白、改行、追加面の Unicode 文字も含まれ、packet 配列と対応する single-stream XDP 文書の両方が対象です
- 更新された V8 ライブラリーでは、XFA パケットのエクスポートエラーと最終バッファーライターの失敗が保存失敗として報告され、文書の変更状態はクリアされなくなりました。未対応の XML 構成や XML 署名を含む single-stream 文書は拒否されます
- 更新された V8 ライブラリーは、ホストアプリケーションが明示的に渡した V8 プラットフォームと isolate を、PDFium の初期化から破棄まで保持します
LibraryNameの明示的なパスは、EnableV8Engine=Trueを含むどちらのエンジンモードでも、そのランタイムを正確に選択するようになりました。パスが見つからない場合は、同梱の別ライブラリーへフォールバックする代わりに失敗します
Version 3.125.1
修正 (Fixed)
ValidatePdfFilesParallelが共有される PDFium エンジンを壊さなくなりました。以前はワーカースレッドが並行して文書を開いて検査するため、一部の文書がロードエラーやアクセス違反で失敗し、プロセスがクラッシュしたり後続の PDF 操作が壊れたりすることがありました。各文書の PDFium 部分は 1 件ずつ処理され、ルール評価は引き続き並列で実行されます- 一括検証で開けなかった文書は、後追いの「アクティブな PDF ドキュメントがありません」メッセージの代わりに、実際のロードエラーを報告するようになりました
Version 3.125.0
追加 (Added)
PdfLibraryConfigurationSupportErrorは、TPdfLibraryConfigurationが指定の Skia / Fontations 機能を持つ PDFium ビルドで利用できるかどうかを報告します
修正 (Fixed)
- Skia を持たない PDFium ビルドで
prpSkiaを、Fontations を持たないビルドでpfbpFontationsを要求すると、プロセスを停止させたり PDFium を初期化半ばで放置したりするネイティブチェックに代わって、ライブラリーロードがEPdfErrorを発生させるようになりました。構成は unsealed のまま残るため、アプリケーションは別の設定を選んで再ロードできます
Version 3.124.0
変更 (Changed)
- PAdES 検証は、すべての RSA アルゴリズムを受け入れる代わりに、ETSI TS 119 312 のシグネチャースイートを RSA 署名へ適用するようになりました。MD2、MD4、MD5 のダイジェストでは
AlgorithmPolicyStatusがpcsInvalid、SHA-1 や SHA-224 のような 112 ビットダイジェストではpcsIndeterminateとなり、これらは現在の検証では合意対象外です。SHA-1 署名は全体の整合性結果を維持し、拒否ではなく要レビューとしてフラグが付きます digestAlgorithmが署名アルゴリズムの固定するダイジェストと異なる RSA 署名(たとえば SHA-1 ダイジェストに対する sha256WithRSAEncryption)はppeiSignatureAlgorithmMismatchとして報告され、整合性チェックに失敗します。RSA 以外の署名者鍵への RSA 署名アルゴリズムも同様です- 署名者証明書が見つからない RSA 署名は、既存の ECDSA と同じ
pcsIndeterminateを報告するようになりました。認識できないダイジェストと署名用でない RSA OID はpcsUnsupportedです - SHA3 ダイジェストを持つ RSA PKCS #1 v1.5 署名と、レガシーの OIW sha1WithRSASignature 識別子も RSA として認識されるようになりました
Version 3.123.0
追加 (Added)
PdfNativeRendererTypeは、TPdfRendererPreferenceが指定の PDFium ビルドに対してどのレンダラーを選ぶかを報告します。prpDefaultは Skia 有効なランタイムでは Skia、それ以外では AGG に解決されます
修正 (Fixed)
ConfigurePdfLibraryでBrotliEnabledやIsolatePerDocumentを有効にしても、レンダラー設定がprpDefaultのままだと Skia から AGG へ切り替わらなくなりました。同梱の Skia 有効ランタイムはデフォルトのレンダラーを維持するため、これらの無関係なオプションでページ出力が変わることはありません
Version 3.122.2
修正 (Fixed)
- Free Pascal と Lazarus のビルドは、すべてのロード経路(ファイル、メモリー、カスタムストリーム、プログレッシブロード)でファイル名とパスワードを UTF-8 として PDFium へ渡すようになりました。プログラムが Lazarus の UTF-8 文字列モードを使っていなくても、中国語や日本語などの非 ASCII 名のフォルダー内の文書や、非 ASCII パスワードの暗号化文書が開けます
Version 3.122.1
修正 (Fixed)
LastLoadReportは、ロードに失敗するたびに置き換えられるようになりました。例外を発生させずにコンポーネントを非アクティブのままにするActive:= Trueの失敗も、失敗した通常のLoadDocumentやLoadCustomDocumentの呼び出しも、エラーテキストとともにplsFailedを報告します。1 つのTPdfを使い回すバッチコードが、前のファイルを読み込み済みとして表示することはなくなりますActiveのヘルプページは、実際の失敗時の挙動(例外なし、コンポーネントは非アクティブのまま、詳細はLastLoadReport)と、FileNameを変更できるのはコンポーネントが非アクティブな間だけであることを説明するようになりました
Version 3.122.0
追加 (Added)
FPdfAssocFilesのEPdfAssocFilesErrorは、InjectAssociateFilesが注入できなかった理由を報告します。ソースに読み取り可能な trailer や catalog がない場合や、TargetPageが負の値だったり存在しないページを指したりする場合が対象で、出力先ストリームは変更されないまま残ります
変更 (Changed)
SaveAsWithAssociateFilesとSaveAsWithAssociateFilesToStreamは、TAssocFilesOptions.TargetPageが0..PageCountの範囲外のときにEPdfErrorを発生させるようになりました。従来はこのような値が文書 catalog へ付けられており、ドキュメント化された動作と食い違っていました
修正 (Fixed)
SaveAsWithAssociateFilesとSaveAsWithAssociateFilesToStreamは、保存した文書が注入用にパースできないときにFalseを返すようになりました。従来は文書を変更せずに書き出し、要求されたファイルを含まないままTrueを返していましたSaveAsWithAssociateFilesは、出力が生成される前に既存の対象ファイルを切り詰めなくなりました。拒否された保存や失敗した保存でも、ファイルは手つかずのまま残ります
Version 3.121.4
修正 (Fixed)
- ページレベルの関連ファイル(
TAssocFilesOptions.TargetPage)は、文書のページ順序においてその位置にあるページへ正しく付くようになりました。従来は、ページオブジェクトがファイル内に表示順と異なる順序で格納されていると(たとえばページの再配置や挿入の後)、ファイルが別のページに付くことがありました
Version 3.121.3
修正 (Fixed)
SaveAsWithAssociateFilesで保存した関連ファイルは、中国語や日本語などの非 ASCII のファイル名と説明をそのまま保持するようになりました。/UFと/Descは、システムの ANSI コードページを経由した変換(Delphi)や生の UTF-8 バイトとしての出力(Free Pascal)の代わりに、Unicode PDF テキスト文字列として書き込まれます- レガシーの
/Fファイル名は常に移植性のある printable ASCII になり、非 ASCII 文字は_に置き換えられます。独自のコードページで/Fをデコードするリーダーでも、文字化けが表示されなくなります
Version 3.121.2
修正 (Fixed)
- 関連ファイルは MIME タイプを有効な PDF 名としてエンコードするようになりました。そのため、
text/plainのような値が不正な埋め込みファイル辞書を生成したり、PDF/A-3 検証を妨げたりすることはありません
Version 3.121.1
修正 (Fixed)
- 注釈の読み込みと変更の書き戻しで、該当するストリームが存在しない場合に空の rollover / down appearance ストリームを作らなくなりました。PDF/A が注釈 appearance に課す要件を保ちます
Version 3.121.0
追加 (Added)
OnlineRetrievalを有効にすると、OpenSSL CMS 検証が HTTP(S) の AIA 中間証明書と CRL を取得できます。タイムアウト、リクエスト数、レスポンスサイズの上限は共有され、ダウンロードした証明書は設定された信頼チェーンが検証を通すまで信頼されません- オンライン取得は Windows では WinHTTP を、FPC の Unix 環境では利用可能な libcurl を使います。HTTPS の証明書検証は維持され、対応していないトランスポート構成は既存の capability 診断で報告されます
修正 (Fixed)
- 古典的な相互参照の再構築は出力テーブルを 1 回だけ割り当ててオブジェクトスロットに直接書き込むようになり、大きなスパースなオブジェクト番号でも 2 乗オーダーの作業を避けられます。パーサーのリソース上限と最新のオブジェクト generation は維持されます
- PDF/X-1a 出力は、デフォルトの RGB プロファイルを黙って埋め込む代わりに、構造的に有効な ICC v2 CMYK プリンタプロファイルを要求します。無効なプロファイルは、既存の出力先ファイルを置き換え用に開く前の段階で失敗します
- PDF/X-1a 検証は埋め込みプロファイルとその 4 コンポーネント宣言を確認し、preflight レポートは無効な出力プロファイルを特定します。デフォルトの output-condition ラベルは指定されたプロファイルに追従し、呼び出し側が明示したラベルは保持されます
Version 3.120.4
修正 (Fixed)
- テーブル抽出デモの一括モードがフォルダー内のすべての PDF を再び処理できるようになりました。共有のドキュメントインスタンスがファイルをまたいでアクティブなままになっていたため、2 番目以降のファイルで代入エラーが発生し失敗扱いになっていました。Delphi、Lazarus、C++Builder の各版で、ドキュメントごとに専用インスタンスを使うようにしています
- ウォーターマークデモのサンプル文書は、ページを生成順 (1, 2, 3, 4) のまま保ちます。インデックス指定の挿入呼び出しで最初のページを末尾へ回していた従来の動作を改めました
- XFA デモと XFDF デモは、文書を開けなかったときに未処理の例外の代わりにメッセージで報告し、attachments デモは読み込み済みの文書がある状態で新規文書を開始でき、Lazarus ビューアーは保存に使ったビットマップを解放します
- Delphi 印刷デモは、印刷ジョブに向き、両面印刷、グレースケール、品質、DPI の各設定を反映し、印刷ダイアログで選ばれた部数を尊重し、レンダリングに失敗したページをスキップし、印刷後にプレビューを復元するようになりました
- 読み込み失敗を握りつぶしていた対話デモは、誤解を招く「読み込み済み」状態を表示しなくなりました。抽出の出力ファイルには UTF-8 BOM が付き、CJK と RTL のコンソールデモは抽出テキストを表示する前にコンソールを UTF-8 に切り替え、confidence の入力欄はシステムロケールに依存せず小数をパースします
- PAdES タイムスタンプのテストは、自己整合する ByteRange のテスト文書を使い、署名タイムスタンプ注入後にバリデーターがレベル B-T に到達することを実際にアサートするようになりました
- pdfium.dll がロードされている環境では、API カバレッジと PDF/A のテストは読み込み失敗を環境スキップとして扱わなくなりました。また、サードパーティのライターが文字列値を literal string としてシリアライズした文書の復号をカバーする新しいリグレッションテストを追加しています
Version 3.120.3
修正 (Fixed)
- インクリメンタル保存されたソース PDF に対して
EncryptDocumentBytesがベースリビジョンのオブジェクトをまるごと落とすことがなくなりました。古典的な相互参照チェーンを/Prev経由で新しいものからたどり、新しいエントリを優先します。すでに暗号化済みのソースは拒否し、streamキーワードは辞書を閉じてからでないとストリームデータとして扱われず、最終オブジェクトの範囲はバイト列の中の最初のendobjではなくソース xref で区切られます - サードパーティのライターが文字列値を literal string としてシリアライズした暗号化文書も、認証エラーで失敗する代わりに復号できるようになりました
- ソースの trailer に
/Infoがない場合、PDF/E マーカー注入が合成した Info 辞書に埋め込み ICC プロファイルストリームと同じオブジェクト番号を振ることがなくなりました。これにより、インクリメンタル xref が/DestOutputProfileを誤ったオブジェクトへ向ける問題が解消されています - PDF/X 検証は XMP の
pdfxid:GTS_PDFXVersion値を前後の空白を取り除いて比較します。合法的にパディングされた element 形式の XMP が、誤って Info 不一致を報告しなくなります - PDF/UA 検証は attribute 形式の
pdfuaid:partXMP を認識し、他のスタンダード系バリデーターと同様にバイトスキャンの前にオブジェクトストリームを展開し、相互参照ストリーム文書でも暗号化の/Pビットをチェックし、空でないdc:title値を要求します。マーカー注入が空の title エントリを出力することもなくなりました - PDF/VT マーカー注入は、ページリスト作成後に検証に失敗した壊れた DPart 階層をソースが持っていた場合に、全ページオブジェクトを 2 回収集・書き換えることがなくなりました
TsaUrlなしで PAdES レベル B-T 以上の署名を行おうとすると、黙って B-B 署名を作る代わりに例外が発生します。また B-LTA の document time-stamp は、呼び出し側の nonce を再送する代わりに独自の nonce を生成します- CMS 署名タイムスタンプ注入は、最初のもの以外の SignerInfo を黙って落とすのではなく、複数 signer の入力を拒否します。subjectKeyIdentifier sid 付きでは SignedData バージョンが 3 になり、DER の規定どおりタイムスタンプ要求から
certReq FALSEは省略され、本文途中での WinHTTP 転送失敗は、切り詰められた DER 本文ではなく転送エラーとして報告されます - システムフォント埋め込みは、要求されたファミリーに対応する TrueType Collection の実際のフェイスを解決してスタンドアロンのフォントとして取り出します。
.ttcの先頭以外のフェイス(たとえば NSimSun)を要求しても、フェイス 0 が埋め込まれて描画されることがなくなります BuildToUnicodeCMapはグリフとサロゲートペア文字を正しく対応付け、追加面のマッピングを bfchar エントリとして出力します。最初の追加面文字以降のエントリがずれることがなくなります- シェイプ済みテキスト、CID テキスト、OCR 挿入は、ロールバック用にオブジェクトを記録する前にページ挿入の結果を確認します。挿入に失敗しても、二重破棄されるような迷子ハンドルが残りません
- コンプレッサーと ToUnicode 修復の stream キーワード検出は、ISO 32000-1 7.3.8.1 が認める単独 CR のみの改行を受け入れます
変更 (Changed)
- トライアル版 Win64x C++Builder パッケージのビルドは、前回のフルビルドが残した古い COFF
PDFiumPas.libを削除するようになりました。2 種類のインポートライブラリが同梱されるのを防ぎます。FULL インストーラーの包括的な除外設定に、ローカル専用の開発ファイル(packagefiles.xml、状態ドキュメント)が加わり、インストール後のデモビルドはビルドスクリプトが実際に読むPDFiumPas_BDS_ROOT変数で IDE ルートを固定します
Version 3.120.2
修正 (Fixed)
AddTextやSetTextで配置したテキスト、レイアウト生成、OCR 検索レイヤーのテキストが、保存後だけでなく表示中のドキュメントからも正確なコードポイントのまま抜き取れるようになりました。現行の PDFium ビルドでは、スペースが U+00A0 として、ハイフンが U+00AD として返ってくることがなくなります- システムフォントは、Unicode 文字ごとに 1 つの CID と明示的な
CIDToGIDMapを持つ、コードポイントをキーにした CID フォントとして埋め込まれます。複数の文字で共有されるグリフ(スペースとノーブレークスペース、ハイフンとソフトハイフン、オメガとオーム記号)も、どのビューアーでも各文字が忠実に往復します。Unicode の cmap サブテーブルを持たないフォントは従来の埋め込み経路をそのまま使います
Version 3.120.1
修正 (Fixed)
- サブセットフォントで保存した文書を再読み込みしても、抽出テキストが壊れなくなりました。pdfium がシリアライズする ToUnicode CMap は 1 つの CID を 2 つの異なるコードポイントへマップできる(スペースが U+00A0、ハイフンが U+00AD になるなど)のですが、フル保存のたびに CMap 構造をバイトレベルで変えずにその場で矛盾するマッピングを修復し、PDFium リーダー、MuPDF、qpdf のいずれでも元の文字が抽出されます
- インクリメンタル保存、スパース更新、相互参照ストリームの文書は修復対象外で、そのまま通ります。矛盾するマッピングを持たないファイルはバイト単位でコピーされます
- リポジトリに含まれる
sample.pdfテストフィクスチャは修復済みの保存経路で再生成され、ロードポリシーのテストはフィクスチャのオフセットをハードコードする代わりに xref エントリを動的に探すようになりました
Version 3.120.0
追加 (Added)
- ブックマークがアウトラインの文字スタイルを報告します。新しい
FPDFBookmark_GetStyleバインディング経由で読んだ italic と bold のフラグがTBookmark.Styleに入り、読み込んだ pdfium.dll がこのエクスポートを持つかはBookmarkStyleFeaturesAvailableで確認できます - 添付ファイルが PDF 2.0 の associated file の relationship を公開します。新しい
FPDFAttachment_GetAFRelationshipバインディング経由で、AttachmentRelationship[]、TPdfAttachmentMetadataおよびTPdfAnnotationAttachmentのRelationshipフィールドが/AFRelationship名を読みます。利用可否はAttachmentRelationshipFeaturesAvailableで確認できます - 新しい
FPDFPageObj_GetRenderedStrokePatternバインディングにより、GetObjectRenderedStrokePatternがパスオブジェクトのストロークに使われているタイリングパターンを、呼び出し側所有のビットマップへラスタライズします。エクスポートの有無はStrokePatternRenderingFeaturesAvailableで確認できます TPdfLibraryConfiguration.IsolatePerDocumentはFPDF_LIBRARY_CONFIGバージョン 7 のm_IsolatePerDocumentフラグに対応し、V8 ビルドでドキュメントごとに専用の isolate を持てます。ConfigurePdfLibraryはこのフラグと明示的なV8Isolateの同時指定を拒否します
変更 (Changed)
- 現行の PDFium ヘッダーが公開する 476 個の public エクスポートすべてをバインドしました。3 つの新しいエントリポイントは寛容にロードされるため、古い pdfium.dll の環境でもそのまま動作し、対応する機能は空文字列や
nilを返します
Version 3.119.1
修正 (Fixed)
- Windows のオフライン トラスト検証も、失効データの取得をキャッシュのみに制限するようになりました。オンライン取得を無効にしているときに、CRL や OCSP のネットワーク要求が暗黙的に発生することはありません
- Windows の失効失敗も、独立したチェーン トラスト エラーを保持したまま、失効 reason とネイティブの診断情報を PAdES 結果とエビデンス レポートに公開します
Version 3.119.0
追加 (Added)
- PAdES トラスト検証とエビデンス レポートが、文書署名とタイムスタンプそれぞれについて独立した失効 reason とネイティブ エラーを公開します。JSON フィールドと追記された CSV 列を含みます
Version 3.118.0
追加 (Added)
- CMS 検証結果が
RevocationReasonとRevocationErrorを公開します。期限切れ、取得不能、不正なローカル CRL に対する OpenSSL の診断情報も含まれます
修正 (Fixed)
- チェーン トラストが成功しローカル CRL 検証が失効を確認した場合、OpenSSL は明示的に失効した証明書を invalid として報告します。署名とトラストの結果は独立したまま保たれます
Version 3.117.1
修正 (Fixed)
- 明示バージョン指定の保存が、predictor 圧縮された相互参照ストリームを持つ有効な複数ページフォームを受け入れるようになりました。誤って不正な相互参照セクションとして報告されることはありません
Version 3.117.0
追加 (Added)
- テーブル検出が、塗りつぶし矩形として描かれたボーダーと網掛けを読み取るようになりました。新しい
MaxRulingThickness以下の厚さしかない塗りつぶしボックスは罫線になり、それより大きい塗りつぶしボックスはその縁を罫線として提供します。そのため、Word、Google Docs、ブラウザーからエクスポートされたテーブルが、空白の断片ではなく、キャプション行を結合した罫線グリッドとして検出されるようになります。DetectFilledRulingsでこの動作をオフにできます - 罫線座標は、グリッドを組み立てる前に
RulingSnapToleranceの範囲内でスナップします。これにより、セルごとのボーダー断片、二重ボーダー、小さな溝で隔てられた網掛けセルが 1 つのテーブルに結合されます - Form XObject の内側にある罫線も、オブジェクト行列を合成したうえで検出に参加します。
IncludeFormXObjectsで制御します ExtractDocumentTablesは、ページコンテンツの終わりで終わり、次ページのコンテンツの始まりで再開する継続フラグメントをリンクするようになりました。ページの縁に接するフラグメントだけでなく、はみ出した単一の行もチェーンの一部として保持します- TableExtractionLab は、Delphi、Lazarus、C++Builder の各版で、オプションパネルに
DetectFilledRulingsを公開します
変更 (Changed)
- 空白検出は、すでに罫線グリッドに属しているワードを無視するようになり、すべての列境界が、区切る対象の行全体にわたるテキストなしの通路であることを要求するようになりました。これで、両端揃えの段落や箇条書きリストがテーブルとして報告されなくなります
- 先頭行が全幅にわたる 1 セルになっている継続候補は、前のテーブルの続きではなく、キャプション付きの新しいテーブルとして扱われます
MinRowsは罫線グリッドに対して 1 を受け入れます。空白検出は従来どおり 2 行の下限を保ちます。セルごとのボーダーボックスはストロークのグリッド線よりはるかに大量に到着するため、デフォルトのMaxRulingSegments予算は 16384 に引き上げられます- セルテキストは、重なり合うワードボックスから行単位で組み立てられるようになったため、グリフボックスの高さが異なるワードも左から右の順序を保ちます
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが 3.117.0 を報告するようになりました
Version 3.116.4
追加 (Added)
- TableExtractionLab にフォルダー一括処理が加わりました。
Batch folderが、選択したフォルダー内のすべての PDF にExtractDocumentTablesを実行し、ドキュメントごとのテーブル数を一覧表示し、テキストレイヤーのないドキュメントを OCR 対象としてマークし、壊れたファイルやロックされたファイルが実行を中断しないようにします Export all CSVは、一括実行では検出されたすべてのテーブルをtablesサブフォルダー下の<document>-<n>-page<p>-t<i>.csvとして書き出し、単一ファイルでは読み込んだドキュメントの隣に書き出します- 検出プリセットピッカーが、チューニング済みの
TPdfTableExtractionOptionsを公開します。Default、Compact columns(ワープロのきついエクスポート向けにMinColumnGap4 とAlignmentTolerance5)、Compact + wide rows(1.5〜2 倍の行間向けにMaxRowGapFactor6)の 3 種類です - Default プリセットではテーブルが 1 つも得られないドキュメントは、単一ドキュメント抽出でも一括抽出でも Compact columns で 1 回だけ再試行され、一括実行の各行はどのプリセットが結果を出したかを報告します
修正 (Fixed)
- 一括抽出は、共有コンポーネントを再読み込みする代わりに、各ドキュメントを専用の
TPdfインスタンスで開くようになりました。これにより、フォルダー実行の途中で非アクティブコンポーネントエラーとして表面化していたサイレントな読み込み失敗がなくなります
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが 3.116.4 を報告するようになりました
Version 3.116.3
変更 (Changed)
- 3 つのツールチェーンすべての TableExtractionLab サンプルは、生成したサンプルドキュメントをメモリー内に保持するだけではなく、デモ実行ファイルの隣の
TableExtractionSample.pdfに書き込むようになりました。フォルダーが書き込み不可の場合、ラボは従来のメモリー内動作にフォールバックし、そのことをステータス行で報告します TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが 3.116.3 を報告するようになりました
Version 3.116.2
修正 (Fixed)
- 古い Delphi リリースでライブラリーがコンパイルできなくなっていました。64 ビットチックヘルパーとトラストリスト/プロダクション XML コーデックは、新しいコンパイラーだけが搭載している RTL ユニットから
GetTickCount64とCP_UTF8を呼び出しており、リフロー HTML ライターは、これらのコンパイラーが 1 つのリテラルに課す 255 要素の上限を超える CSS 文字列リテラルを埋め込み、XFA データセットのマージは pre-XE7 コンパイラーが拒否するTBytesとプレーンな動的配列フィールドの間の代入を行っていました。現在は、RTL が持っていなければ古いコンパイラーでも kernel32 からGetTickCount64をバインドしCP_UTF8をローカルに宣言し、スタイルシートは短いリテラルの連結として出荷され、パケットペイロードは要素ごとにコピーされます
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが 3.116.2 を報告するようになりました
Version 3.116.1
追加 (Added)
Demo\Delphi\TableExtractionLab、Demo\CBuilder\TableExtractionLab、Demo\Lazarus\TableExtractionLabが、テーブル検出を 1 つのワークフローにまとめます。ラボは、結合ヘッダーセルを含む罫線テーブル、罫線のない空白整列テーブル、ページ境界をまたいで分割する長いテーブルを備えたサンプルドキュメントを構築し、ExtractTablesかExtractDocumentTablesを実行して、行、列、スパン、ヘッダーフラグ、検出モード、信頼度、継続グループを一覧表示します- ラボは、選択したテーブルを
TPdfTable.ToCsvとTPdfTable.ToJsonでエクスポートし、オプションパネルからDetectRuledTables、DetectWhitespaceTables、DetectContinuations、MinConfidenceを編集し、レポート全体をクリップボードへコピーします TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが 3.116.1 を報告するようになりました
Version 3.114.21
修正 (Fixed)
- PDF/A 検証が、注釈を含むあらゆるドキュメントに対して外部ファイル参照を報告していました。ISO 19005-1 §6.1.7 はストリームオブジェクト辞書内の
/F、/FFilter、/FDecodeParmsを禁止していますが、このチェックはファイル全体からそれらの名前を検索していました。ところが/Fは、§6.5.3 がすべての注釈に持つことを要求している注釈フラグのキーでもあります。チェックは現在、ストリームオブジェクト辞書の内側だけを見るようになりました
Version 3.114.20
修正 (Fixed)
- 3 つの署名バックエンドすべてで、RSASSA-PSS 署名が不正な形式のアルゴリズムパラメーターを運んでいました。RFC 4055 は RSASSA-PSS-params の 4 つのフィールドすべてにタグを付けます。salt 長が裸の整数として書かれていたためパーサーはそれを別のフィールドの始まりとして読み、trailer フィールドは、DER が省略を要求するデフォルトと等しい値なのに書き出されていました。検証側はパラメーターの解析に失敗するか、署名が 32 を使っているのにデフォルトの 20 バイト salt にフォールバックするかで、PSS 署名は拒否されていました。PKCS#1 v1.5 と ECDSA の署名は影響を受けません
Version 3.114.19
修正 (Fixed)
- SHA-256 以外のダイジェストでタイムスタンプを要求すると、SHA-256 ダイジェストを運んでいながらそのアルゴリズムを宣言するリクエストが構築されていました。タイムスタンプ機関はこれを拒否するか、もっと悪い場合には、宣言どおりの内容でタイムスタンプを発行します。計算されるのは SHA-256 だけなので、他の識別子は現在はっきり拒否されます。空の識別子は引き続き SHA-256 のデフォルトを選択します。Lazarus と C++Builder 用の PDF Viewer サンプルも、フォームファイルが名前を挙げているのにコードでは定義されていなかったブックマーク展開ハンドラーをバインドしており、フォームのロード時に失敗していました。ハンドラーは Delphi サンプルから移植されています
Version 3.114.18
修正 (Fixed)
- Delphi 用の XFA Lab と XFDF Lab サンプル、および Lazarus 用の XFA Lab サンプルが起動時に失敗していました。どれもフォームの create ハンドラーからコントロールを構築しますが、フォームリソースが存在せずリンクもされていなかったため、メインフォームの作成でリソース未発見エラーが発生し、ハンドラーは一度も実行されていませんでした。3 つとも現在は、フォームファイルと、それを埋め込むディレクティブを備えています
Version 3.114.17
修正 (Fixed)
- 操作が途中で失敗したとき、2 つのネイティブリソースが誤って扱われていました。失敗したサムネイルレンダリングは、ネイティブレンダリングを閉じる前にターゲットのビットマップを解放しており、レンダリングがそのビットマップ自身のピクセルに直接描いていた場合、テアダウンはすでに解放されたメモリーを読むことになりました。また
AddBitmapでビットマップの割り当てに失敗すると、作成したばかりの画像オブジェクトが所有者も、再び到達する手段もないまま放置されていました
Version 3.114.16
修正 (Fixed)
- FDF テキストの読み取りが、
0x7Eを超える範囲で誤った文字を生んでいました。ISO 32000-1 Annex D.2 の PDFDocEncoding テーブルは0x80からビュレットで始まりますが、マッピングは0x7Fから始めていたため、0x9Fまでのブロック全体が 1 つずれていました。ダガーがビュレットに、em ダッシュが省略記号に読め、末尾の zcaron に至っては完全に範囲外になりました。0xA0のユーロも欠落していて、ノーブレークスペースとして返っていました。インポートした FDF のフィールド名と値は現在、正しくデコードされます
Version 3.114.15
修正 (Fixed)
- trailer やカタログが読めないドキュメントでトラストを検証すると、配列の終わりを越えて書き込んでいました。この場合、コンプライアンスパスは署名を 1 つも記録せずに諦めますが、次に走るコレクターはバイトストリームを直接扱うため署名辞書を見つけられるままで、見つかった辞書ごとに 1 エントリーが、何も入っていない配列へ書き込まれていました。現在は、カウントがコンプライアンスパスの生成した数にクランプされます
Version 3.114.14
修正 (Fixed)
- PDF/A 修復プランの実行が、プランナーがブロックしたステップを適用していました。ステップは、ドキュメントが署名を持ち、そのステップが署名を無効化するおそれがあり、呼び出し側がそれを許可していない場合にブロックされます。実行側はステップの安全性レベルだけを検査していましたが、これは条件を表現しないため、署名済みドキュメントの署名が、プランがすでに拒否していた自動修復によって無効化され得ました。ブロックされたステップは現在はスキップされ、スキップとしてカウントされます
Version 3.114.13
修正 (Fixed)
- 証明書セットが 127 バイトを超える CMS 値(実際の証明書はすべてそうです)に署名タイムスタンプを追加すると、結果が壊れていました。ネストした構造の始まりを見つけるヘルパーが長さオクテットを後方にたどる際に最後のオクテットを最初のものと取り違え、切り出したスライスが、要求された構造よりずっと手前から始まっていました。現在は、ヘッダー長がコンテンツ長から導出されます。これは DER が曖昧さなく定めているものです。セルフチェックのフィクスチャ証明書が short 形式で足りるほど小さかったため、この問題は見逃されていました
Version 3.114.12
修正 (Fixed)
- 署名済み属性が、構築した順序のまま出力されており、X.690 §11.6 が DER SET OF に要求するエンコーディングによるソートが行われていませんでした。そのため、OpenSSL と BouncyCastle がどちらもそうするように、ダイジェスト計算の前に属性セットを再エンコードする検証側は異なるダイジェストを計算し、問題のない PAdES 署名を無効と報告していました。このライブラリーが生成する署名は現在、それらのスタックでも検証が通ります。Windows レイヤーを通じた検証は、受信したバイトをそのままダイジェストしていたため影響を受けませんでした
Version 3.114.11
修正 (Fixed)
- 2 コンテンツバイトを超える幅の負の DER INTEGER が、誤った値でエンコードされていました。ライターは論理シフトの後に符号を再注入することで算術シフトをエミュレートしますが、使っていたマスクが、シフトで空いた 1 バイトだけでなく低バイトより上のすべてのビットを立てていたため、残りのバイトにまだ入っている大きさが上書きされていました。たとえば -100000 が -34464 としてエンコードされます。タイムスタンプリクエストの nonce も、このサイズの他の符号付き整数も、現在は正しくエンコードされます
Version 3.114.10
修正 (Fixed)
- PDF/A 検証は、ISO 19005-1 §6.4 の透過性ルールの constant alpha 部分を一度も報告していませんでした。ヘルパーはスラッシュ(solidus)を接頭辞として検索キーを組み立てるのに、呼び出し側もスラッシュ付きのキーを渡していたため、
//CAを探して何にも一致しませんでした。2 つのアルファチェックも1と1.0という正確なテキストしか受け入れず、完全に不透明な/CA 1.00が違反としてフラグされていました。現在は、1 の値はどの表記でも認識されます
Version 3.114.9
修正 (Fixed)
- ページレベルの URI アクションが、文字化けしたテキストを返していました。パスはネイティブレイヤーから UTF-8 バイトとして返りますが、ワイド文字列にそのまま書き込まれていたため、バイトが 16 ビットコード単位にペアにされ、バッファーの残りはその場にあったメモリーの内容を持ったままでした。
GetPageActionURIは現在、ドキュメントレベルのアクションパスがすでにそうしていたのと同じ方法でバイトをデコードします
Version 3.114.8
セキュリティ (Security)
- Windows 以外のターゲットでは、すべての暗号化鍵、salt、初期化ベクトルの背後にあるランダムバイトが、実行時 PRNG から来ていました。そのシードは、プログラムが
Randomizeを呼ばない限り定数です。そのためどのプロセスも同じファイル暗号化鍵、同じ/UEと/OEの salt、同じ/Permsバイト、同じ AES-GCM nonce を生成し、Linux や macOS の Free Pascal ビルドによる暗号化出力が容易に復元でき、固定鍵の下で GCM nonce が再使用される事態になっていました。現在はバイトが/dev/urandomから供給され、カーネルプールが利用できない場合はフォールバックではなく例外を発生させます。これは、Windows でCryptGenRandomが利用できない場合にすでにそうしていたのと同じ挙動です
Version 3.114.7
修正 (Fixed)
- 不正な形式のオブジェクトストリームが、圧縮および修復のエントリーポイントに、デコード済みバッファーの終わりを越えた読み取りをさせていました。ストリームが宣言するメンバーオフセットは、ヘッダーの解析直後に範囲と昇順がチェックされるようになり、ヘッダーが保持できる数を超える宣言済みメンバー数はメモリー確保の前に拒否され、各メンバーのバイト範囲は、末尾の空白を切り詰めた後ではなく切り詰める前に検証されるようになりました
Version 3.114.6
修正 (Fixed)
- インライン画像の外部化が、使い物にならない画像 XObject を生んでいました。辞書は最初のキーの前に迷子のスラッシュが付いた状態で書かれ、空の名前が開いてすべてのキーが前のキーの値にずれていました。さらにインライン省略形テーブルが Decode を
DではなくGにマップしていたため、/D配列が落ち、DeviceGray 値の省略形がキーと取り違えられていました。コンテンツストリームから取り出された画像は現在、整形式の辞書を持ち、Decode 配列を保持します
Version 3.114.5
修正 (Fixed)
- HarfBuzz シェイパーが、右から左のランで誤ったグリフにクラスタ長を割り当てており、マークや合字コンポーネントのような、クラスタを共有するグリフに長さ 1 を与えていました。各グリフの
ClusterLengthは現在、どちらの方向でも、論理順でそのクラスタの始まりから次のクラスタまでをまたぐため、アラビア語やヘブライ語テキストの文字からグリフへのマッピングが、Uniscribe バックエンドが報告するものと一致します
Version 3.114.4
修正 (Fixed)
- libcurl タイムスタンプトランスポートが、数値オプションの受け渡しと HTTP ステータスコードの読み取りを 32 ビット値として行っていましたが、libcurl は C の
long(Linux と macOS では 64 ビット)を受け取り、返します。ステータスクエリはスタック上でターゲットの隣の 4 バイトを上書きし得え、オプション値はレジスター上位半分がたまたま保持していた内容に左右されていました。現在は両方ともプラットフォームのlong幅を使うため、FPdfTsaFpcは LP64 ターゲットで健全に動作します
Version 3.114.3
修正 (Fixed)
- PKCS#11 バックエンドが、トークンオブジェクトラベルの生バイトを文字列へそのままコピーしており、Delphi ではこれは UTF-8 バイトを UTF-16 コード単位に着地させます。そのため
TPdfPkcs11Options.CertificateLabelで選択した証明書は決して一致せず、EnumerateCertificatesは文字化けしたLabelTextを報告していました。ラベルは現在、標準が定める UTF-8 としてデコードされ、C_Loginに渡す PIN はホストコードページで縮めるのではなく UTF-8 としてエンコードされるため、非 ASCII の PIN がそのままトークンへ届きます
Version 3.114.2
修正 (Fixed)
- macOS Keychain 署名バックエンドが、鍵が RSASSA-PSS を受け入れるかどうかを判断する際に
SecKeyIsAlgorithmSupportedへ誤った操作を尋ねていました。クエリは sign ではなく decrypt 操作を名指していたため、答えは常にノーで、すべての RSA 署名が黙って PKCS#1 v1.5 にフォールバックしていました。PSS をサポートする鍵は現在、TPadesSignerOptions.PaddingSchemeが要求するとおり PSS で署名し、操作引数はフレームワークが宣言する幅で渡されます
Version 3.114.1
修正 (Fixed)
- 右から左のテキストで、ネストした括弧ペアが誤った方向に解決されていました。UAX #9 の BD16 ルールは、開き括弧の出現順にペアを処理し、N0 で解決されたペアは、それより後に開くペアにとって前方の強い文脈になります。ところがペアが、閉じ括弧が完成する順に処理されていたため、内側のペアが、外側のペアが確立した文脈ではなく、自分が囲む文字に従うことがありました。ネストした括弧を含む括弧書きを持つアラビア語やヘブライ語の文のようなテキストは現在、読み手が期待するとおりにレイアウトされます
Version 3.114.0
追加 (Added)
FPdfCryptoSslが、OpenSSL を通じて PDF 署名とタイムスタンプトークンを検証します。これで署名検証の最後のプラットフォームギャップが埋まります。Linux には CMS 検証バックエンドがまったくありませんでした。ConfigureSslCmsVerifierでインストールでき、libcrypto は実行時に名前で解決されるためリンクは一切不要で、1.1 系と 3.x 系の両方にバインドします- 署名と証明書チェーンは別々のパスで評価されるため、トラストアンカーに到達しないチェーンの下にある健全な署名は、壊れた署名ではなく、トラストが無効な有効な署名として報告されます
ConfigureSslTrustAnchorsが DER のトラストアンカーをシステムストアへ追加し、ConfigureSslCrlsが失効チェックが参照できる CRL を供給します。OpenSSL は自分では何もフェッチしないため、失効は CRL が実際に存在するときにだけチェック済みと見なされます。何も供給しなければ、結果は未チェックのチェーンを通す代わりに unsupported と報告しますSslAvailable、SslMissingSymbols、SslLibraryPath、SslLibraryVersion、SslAbiLayoutが、何がバインドできて何ができなかったかを報告し、プラットフォームのデフォルトでは見つからない場合、ConfigureSslLibraryPathがバックエンドを特定のライブラリーへ向けます
Version 3.113.0
追加 (Added)
TPdfKeychainCmsVerifierが、macOS 上でCMSDecoderと SecTrust を通じて PDF 署名とタイムスタンプトークンを検証します。署名検証が Windows 専用ではなくなりました。ConfigureKeychainCmsVerifierでインストールでき、同じユニットが、FPdfCryptoWinが Windows でそうしているのと同じように、macOS サポートの両半分をカバーします- 失効チェックも尊重されます。要求されれば失効ポリシーが基本の X.509 ポリシーに加わり、オンライン取得をオフにすると評価はキャッシュされた応答に限定されます。進行状況のチェックポイントは、署名、チェーン、オンライン取得、失効の各ステージで、Windows バックエンドが報告するのとまったく同じように発生します
KeychainVerificationAvailableは、検証サポートを署名とは別に報告します。2 つは異なるフレームワークシンボルを必要とし、片方だけが存在することもあるためです
Version 3.112.0
追加 (Added)
FPdfCryptoMacが、macOS Keychain アイデンティティで PAdES に署名します。Windows 証明書ストアに対応する存在です。証明書とその秘密鍵は Keychain から来て、署名はSecKeyCreateSignatureが生成するため、鍵がシステムキーストアを離れることはありません。ConfigureKeychainSignerProviderでインストールでき、PKCS#11 トークンバックエンドで必要になるような、アプリケーションと一緒にデプロイするモジュールも不要です- 署名側は証明書に従います。EC 鍵は ECDSA で、RSA 鍵は RSASSA-PSS で署名し、PSS が利用できない場所(古い macOS、またはそれを受け入れない鍵)では、パディングが PKCS#1 v1.5 にフォールバックし、出力される AlgorithmIdentifier は PSS を名乗る代わりにそのことを示します
KeychainMissingSymbolsが、解決に失敗したフレームワークシンボルを一覧するため、バックエンドが利用不可と報告するデプロイで、フレームワークが欠けているのと、このバインディングが名前を間違えたのを区別できます
Version 3.111.0
追加 (Added)
ConfigurePadesCmsVerifierが、PAdES バリデーターが使う CMS 検証バックエンドをインストールします。署名とタイムスタンプの検証が Windows に縛られなくなりました。IPdfCmsVerifierは、バックエンドが答える 2 つの操作(PDF 署名には detached、タイムスタンプトークンには attached)を宣言し、PadesCmsVerificationAvailableがバックエンドが存在するかどうかを報告します
変更 (Changed)
- 検証結果とオプションのレコードが
TPdfCmsVerify*としてFPdfCryptoへ移りました。TWinCmsVerify*の名前はエイリアスとして残るため、既存コードはそのまま動き続け、接続したバックエンドが Windows のものと同じ型でやり取りします - Windows の動作は変わりません。検証器がインストールされていなければ引き続き CryptoAPI を使い、進行状況のチェックポイント、失効オプション、ネイティブエラーコードも同じです。どのバックエンドも答えない場所では、すべての判定が未チェックのまま放置される代わりに unsupported を報告します
Version 3.110.0
追加 (Added)
FPdfPkcs11が、PKCS#11 トークンの内側に留まり続ける鍵で PAdES に署名します。ConfigurePkcs11SignerProviderが署名バックエンドとしてインストールし、モジュールは実行時にパスでロードされるためリンクは一切なく、同じコードが Windows、Linux、macOS に対応します。IPdfPkcs11SignerProviderインターフェースが宣言するトークン列挙も一緒に実装されています。スロット、トークン、それぞれが保持する証明書です- Windows 以外での署名は、一般的なケースではホスト供給のプロバイダーを必要としなくなりました。トークンモジュールと
TPdfPkcs11Optionsがあれば十分です。RSA PKCS#1 v1.5、RSASSA-PSS、ECDSA はすべてトークンを通じて生成されます FPdfSha1は 1 つの目的のために SHA-1 を追加します。TPadesSignerOptionsが持つサムプリントによる証明書の照合です。Windows は証明書ストアの内側でこれを解決していましたが、トークンは証明書バイトを返すだけで、照合は呼び出し側に委ねられます。これは署名ダイジェストではなく、PAdES スタックは引き続き全体を通して SHA-256 で署名します
変更 (Changed)
- 公開鍵アルゴリズム OID の読み取り、issuer と serial の抽出、生の ECDSA 署名の再ラップを行う証明書 DER ヘルパーが、Windows バックエンドから
FPdfCmsへ移りました。どの署名バックエンドもそこから到達できます
Version 3.109.0
変更 (Changed)
- ネイティブライブラリーローダーが Windows 専用ではなくなりました。
LibraryNameはターゲットに応じてpdfium.dll、libpdfium.so、libpdfium.dylibをデフォルトとし、V8 ビルドは対応する名前で探され、Free Pascal ではロードとシンボルバインディングがポータブルローダーを通ります。Win32 と Win64 のデプロイ配置やアーキテクチャ不一致の診断を含め、Windows の動作は変わりません - 他のターゲットのデプロイディレクトリーは、コンパイル済みユニットがすでに使っている
<cpu>-<os>の綴りに従うため、DLLs/x86_64-linux/libpdfium.soがLib/FPC/x86_64-linuxの隣に置かれます。システムディレクトリーへのフォールバックは Windows 専用のままで、それ以外ではローダーの検索パスがカバーします
Version 3.108.0
追加 (Added)
TPdfHarfBuzzTextShaperが、Uniscribe のない Free Pascal ターゲットで、双方向テキストや複雑なスクリプトのテキストをシェーピングします。FPdfBidiで埋め込みレベルを解決し、スクリプトごとにランを分割し、各ランを libharfbuzz でシェーピングし、視覚順にランを配置します。ConfigureTextShaperでインストールしてください。libharfbuzz は実行時に解決され、HarfBuzzAvailableは欠けているときにそのことを率直に報告します- シェイパーはフォントを列挙しません。Uniscribe はデバイスコンテキストからフォントバイナリを読み取りますが、これには移植可能な等価物がないため、ホストがフォント名をフォントファイルのバイトへマップする
TPdfFontDataResolverを渡します。このポリシーは本来あるべき場所に留まります
Version 3.107.0
追加 (Added)
FPdfBidiが、Unicode 双方向アルゴリズム(UAX #9)をピュア Pascal で実装します。PdfResolveBidiLevelsは UTF-16 コード単位ごとに 1 つの埋め込みレベルを返し、PdfBidiVisualOrderは L2 再順序付けを適用し、PdfBidiClassOfはコードポイントの Bidi_Class を公開します。isolate 開始子と BD16 括弧ペアを含め、ルール P2-P3、X1-X10、W1-W7、N0-N2、I1-I2、L1-L2 をカバーします- このユニットはコンパイラとプラットフォームに中立で、これこそが Uniscribe が利用できない場所でも双方向テキストをレイアウトできる理由です。シェーピングエンジンは、方向がすでに分かっているランのグリフを解決するもので、最初に方向を決めなければならないのはこの部品だということになります
Version 3.106.0
追加 (Added)
ConfigureTextShaperが、ライブラリー全体が経由するテキストシェーピングバックエンドをインストールします。ActiveTextShaper、ActiveTextShaperName、ClearTextShaperが脇に付きます。ShapePdfTextとTPdf.AddShapedTextはどちらも、Uniscribe のものを直接生成する代わりに、インストールされたシェイパーを使うようになったため、ホストは独自のエンジンを、テストは決定論的なエンジンを供給できます
変更 (Changed)
FPdfTextShapingが Windows 以外のターゲットでもコンパイルされるようになりました。Uniscribe バックエンドは唯一の実装ではなくプラットフォームのデフォルトになり、Windows ビルドに限定されます。バックエンドが利用できない場所では、シェーピングのエントリーポイントがコンパイルに失敗する代わりに、そのことを報告します
Version 3.105.1
セキュリティ (Security)
- タイムスタンプ応答が、両方のトランスポートで 4 MB に上限付けされるようになりました。送信を続ける TSA は、以前は受信バッファーを無制限に増大させ、署名呼び出しを無制限のメモリー増加に変える可能性がありました
Version 3.105.0
追加 (Added)
- RFC 3161 タイムスタンプが、Windows 以外の Free Pascal ターゲットでも動作するようになりました。新しい libcurl バックエンドが TimeStampReq を送信して TimeStampResp を読み取るため、
PadesTsaAvailableは True を報告し、PAdES B-T、B-LT、B-LTA はそこでトークンを取得できます。libcurl は実行時に解決され、ビルド時の依存関係ではありません。存在しない場合、バックエンドは WinHttp 版とまったく同じように利用不可を報告します。Windows は引き続き WinHttp を使用するため影響を受けません - これらのターゲットでの署名には、ライブラリーが所有していない鍵マテリアルが依然として必要です。
FPdfCryptoWinは Windows 専用のため、IPadesSignerProvider(トークンベースの鍵にはIPdfPkcs11SignerProvider)をConfigurePadesSignerProviderに指定して供給してください
Version 3.104.1
追加 (Added)
- XFA 検査ラボのサンプルが Lazarus でも利用できるようになり、XFA ケイパビリティプローブ、パケット一覧、パケットエクスポート、
OnXfaRuntimeMissingフォールバックを LCL ビルドから試せるようになりました
Version 3.104.0
変更 (Changed)
- ライブラリーが Free Pascal 3.2 で、回避可能な診断を出さずにクリーンにコンパイルされるようになりました。内部タイミングは非推奨の 32 ビット呼び出しの代わりに
GetTickCount64からミリ秒チックを読み取り、非推奨の SSE コントロールワードアクセサーはGetMXCSRとSetMXCSRに置き換えられ、コンテンツフィンガープリントのオフセット基準は明示的に型付けされてコンパイル時の範囲チェックに引っかからなくなり、ビットマップのトップダウンレイアウト判定時のスキャンラインアドレスは符号なしポインターとして比較されます
Version 3.103.1
修正 (Fixed)
- Free Pascal で、XMP に運ばれるドキュメントメタデータが非 ASCII 文字を保持するようになりました。
SaveAsPdfA、SaveAsPdfUa、SaveAsPdfE、SaveAsPdfX、SaveAsPdfR、SaveAsPdfVTに渡されるタイトル、作成者、サブジェクト、キーワード、クリエイター名は、バイト単位のコピーではなく文字列コードページを通じて変換されるため、ホストプログラムが UTF-8 コードページで動作していなくても、メタデータパケットは ISO 19005-1 6.7.2 が要求するとおり有効な UTF-8 を保ちます - XFDF エクスポート、プロダクションメタデータのラウンドトリップ、トラストリスト XML 解析も同じコードページ対応の変換を使用するため、
TBytesとstringの間を移動するテキストはホストのコードページに依存しなくなりました
Version 3.103.0
追加 (Added)
TPdfEuropeanTrustedListが、認証済みの欧州トラストリストを解析し、チェックサム付きキャッシュを同じオーセンティケーターで再読み込みし、呼び出し側指定の更新ソースを受け入れ、現在のトラストアンカーを公開し、要求された検証時刻で適格署名サービスを評価しますTPadesTrustValidationOptions.QualifiedTrustEvaluatorが、PAdES バリデーターにネットワークアクセスを追加することなく、検証対象の署名者ごとにオフラインの適格トラストポリシーを適用します
Version 3.102.0
追加 (Added)
BeginIncrementalSaveとCommitIncrementalSaveが、元の/Encrypt参照、セキュリティパラメーター、正確なオブジェクト世代、以前のバイトを保持したまま、AES-256 で暗号化されたドキュメントに認証済みリビジョンを追記するようになりました
変更 (Changed)
- ファイルコミットのオーバーロードが、同一ディレクトリーのサイドファイルを永続化してフラッシュし厳密に再オープンし、リビジョン境界を検証し、失敗時にはセッションをロールバックしながらターゲットをアトミックに置き換えるようになりました
Version 3.101.0
変更 (Changed)
SaveAsRedactedが、部分的に交差するテキスト、矩形パス、軸平行画像の安全な部分を保持したうえで、ページ、Form XObject、パターン、アピアランス、ネストしたリソーススコープから参照されなくなったリソース名を削除するようになりました
Version 3.100.0
変更 (Changed)
OptimizeImagesが、スケール、コンテンツクラス、測定されたディテール、呼び出し側の品質設定に基づいて、box、bilinear、bicubic、Lanczos、bilevel のリサンプリングを選択するようになりました。アルファ対応フィルタリングと厳格なワーキングメモリー予算を伴います
Version 3.99.0
追加 (Added)
GraftPdfAcroFormが、明示的なページマッピングと衝突ポリシーを通じて、階層化された AcroForm フィールド、ウィジェット、アピアランス、計算順序、デフォルトリソース、アクション、値をインポートしますTPdfCrossDocumentGraftMapが、サイクル、共有参照、正確なソース世代、トランザクションの失敗セマンティクスを保持しながら、ソース同一性によってインポート済み間接オブジェクトを再利用します
Version 3.98.0
追加 (Added)
TPdfOutlineEditorが、アウトライン項目の作成、移動、削除、スタイル設定、展開、再ターゲットを行い、ページプラン結果を通じて明示的宛先を再マッピングし、独立して検証された増分リビジョンを追記します
Version 3.97.0
追加 (Added)
TPdfTreeEditorが、再利用可能な間接参照と生のエントリー値を保持しながら、任意の PDF NameTree および NumberTree 構造の読み取り、検証、更新、バランス調整、分割、マージ、シリアライズ、増分保存を行います
Version 3.96.0
追加 (Added)
TPdfParserResourceBudgetが、カスタム PDF パーサー全体で、再帰、トークン、オブジェクト、デコード済みバイト数、展開率、アロケーション、期限に関する 1 つのスレッドセーフなプロセスポリシーを、操作ごとの不変スナップショットと設定可能なデフォルトとともに提供します
Version 3.95.0
変更 (Changed)
ValidatePdfXが、有効な xref を持つ暗号化されていないドキュメントに対して、上限付きスパース読み取りを通じて、アクティブな PDF/X 辞書、メタデータ、OutputIntent、フォント、禁止フィーチャー、透過性、カラースペース、ページボックスを検証するようになりました
Version 3.94.0
変更 (Changed)
ValidatePdfRが、有効な xref を持つ暗号化されていないドキュメントに対して、上限付きスパース読み取りとウィンドウ読み取りを通じて、アクティブな PDF/R 辞書、ページ、画像フィルター、メタデータ、フッターマーカーを検証するようになりました
Version 3.93.0
変更 (Changed)
ValidatePdfEが、有効な xref を持つドキュメントに対して、上限付きスパース読み取りを通じて、アクティブな PDF/E 辞書、メタデータ、OutputIntent、フォーム、禁止フィーチャーを検証するようになりました
Version 3.92.0
変更 (Changed)
ValidatePdfVTが、有効な xref を持つドキュメントに対して、上限付きスパース読み取りを通じて、高度な繰り返し XObject のスコープ、可視性、カプセル化、ネストした Form 使用の分析を実行するようになりました
Version 3.91.0
追加 (Added)
TPdfSparseDictionaryReaderが、オブジェクトのアクティブな世代を解決し、呼び出し側指定のバイト上限内でダイレクトストリームをデコードできるようになりました
変更 (Changed)
ValidatePdfVTが、通常の有効 xref パス上で、PDF/VT メタデータ、DPart、OutputIntent、Info、ページ、通常辞書のチェックに上限付きスパース読み取りを使用するようになりました
Version 3.90.0
追加 (Added)
TPdfSparseDictionaryReaderが、繰り返しの上限付き間接オブジェクト辞書読み取りのために、1 つのスパース xref およびオブジェクトストリームインデックスを開いたまま保持します
変更 (Changed)
InjectPdfVTMarkersが、上限付きソース読み取りで既存の PDF/VT DPart 階層を検証して保持するようになりました。不正な階層は引き続き再構築フォールバックを通じて処理されます
Version 3.89.0
追加 (Added)
ReadPdfSparsePageDictionariesが、スパースオブジェクトインデックスを通じて、ページツリー順のページオブジェクト同一性と上限付き辞書バイトを返します
変更 (Changed)
- 保存済み PDF がまだ DPart 階層を含んでいない場合、
InjectPdfVTMarkersが上限付きソース読み取りで PDF/VT DPart 階層を合成し、マーカーオブジェクトを追記するようになりました
Version 3.88.0
追加 (Added)
ReadPdfSparseCatalogSubDictが、スパースオブジェクトインデックスを通じてダイレクトまたは間接のカタログサブ辞書を読み取ります。PDF/UA マーカーインジェクションがMarkInfoとViewerPreferencesのために使用します
変更 (Changed)
InjectPdfUaMarkersが、スパースルックアップでカタログのMarkInfoとViewerPreferencesを解決し、通常の xref パス上で上限付きソース読み取りにより PDF/UA リビジョンを追記するようになりました
Version 3.87.0
追加 (Added)
AppendPdfSparseUpdateが、保存済み PDF に 1 つのスパースリビジョンをストリーミングします。ソースバイトはそのまま、記録されたオフセットに呼び出し側指定のオブジェクト本体を配置し、/Prevで連結された単一の増分 xref/trailer ブロックを書き込みますNormalizePageViewRectが、マップされた 2 つのページ空間コーナーをページにクランプされた可視矩形へ正規化し、ページのどの部分も可視でない場合はそのことを報告します- ソースドキュメントに Info 辞書がない場合、PDF/E マーカーインジェクションが
/ISO_PDFEVersionを持つ新しい Info オブジェクトを合成します
変更 (Changed)
- PDF/E、PDF/X、PDF/R のマーカーインジェクションが、スパースルックアップでカタログ、Info、trailer を解決し、通常の xref パス上で上限付きソース読み取りにより
AppendPdfSparseUpdateを通じてリビジョンを追記するようになりました - フォーム入力の
FFI_GetPageViewRectコールバックが、常にページボックス全体ではなく、アタッチされたTPdfViewで実際に可視のページ部分を報告するようになりました。ヘッドレスドキュメントではページ寸法にフォールバックします TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.87.0 を一貫して報告するようになりました
修正 (Fixed)
FPDFPath_GetBezierControlPointsバインディングの公開以降、パスセグメントの制御点は一度も設定されていませんでした。ネイティブエクスポートは各 3 エントリーの 3 次曲線についてエンドポイントインデックスにのみ答えるため、クエリは曲線ごとに 1 回発生するようになり、3 つのエントリーすべてが曲線の制御点を保持するようになりました
Version 3.86.0
追加 (Added)
ReadPdfSparseRevisionInfoが、ストリームポストプロセッサーのために、上限付きの最新リビジョン、カタログ、暗号化、ドキュメント ID、タグ付き構造のファクトを公開しますComposePdfSparseUpdateIdが、完全なソース PDF を実体化せずに増分更新のドキュメント識別子を保持または導出します
変更 (Changed)
InjectPdfAMarkersが、スパースルックアップでカタログと trailer を解決し、大きな入力を上限付きチャンクでコピーし、通常の xref パス上でソースサイズのバイト配列を割り当てることなく PDF/A リビジョンを追記するようになりました- PDF/A マーカーインジェクションが、クラシックまたは xref-stream の出力スタイル、カタログと Info の世代、trailer 識別子、暗号化時の拒否動作、Level A ダウングレードルールを保持します
Version 3.85.0
追加 (Added)
SanitiseActiveContentPdfStreamが、カスタムの上限付きまたはディスクバックのストレージのために、呼び出し側所有のプルーンワークスペースを受け入れます
変更 (Changed)
- アクティブコンテンツのサニタイズが、通常の xref パス上で完全な PDF を 1 つのバイト配列に読み込む代わりに、スパースルックアップ、上限付きパーサーウィンドウ、固定サイズの範囲コピーを通じてカタログと trailer を更新するようになりました
TPdf.SaveAsSanitisedが、SaveMemoryLimitとSaveTemporaryDirectoryをプルーンワークスペースに適用し、スピル診断を報告するようになりました
修正 (Fixed)
StripMetadata=Trueが、カタログに/Metadataエントリーがない場合でも trailer の/Info参照を削除するようになりました
Version 3.84.0
変更 (Changed)
TPdf.PdfVersionが、完全なソース PDF を再パースする代わりに、FPDF_GetFileVersionを通じて PDFium パーサー状態を再利用するようになりました- バージョンクエリは最大 8 バイトの PDF ヘッダーのみを読み取り、不正なカタログ宣言が実効バージョンをダウングレードするのを防ぎます
Version 3.83.0
変更 (Changed)
PageLabelledPdfStreamが、上限付きストリームウィンドウとスパース遅延オブジェクトインデックスを通じてカタログを解決および更新するようになりました- ページラベル出力は、通常の xref パス上で完全なドキュメントバイト配列を割り当てる代わりに、大きなソース PDF を固定サイズの範囲でコピーします
Version 3.82.0
変更 (Changed)
ApplyDefaultOpenActionが、非常に大きなオブジェクト番号を持つドキュメントを含め、スパース遅延オブジェクトインデックスを通じてクラシック、xref-stream、ハイブリッド、オブジェクトストリームの各リビジョンを読み取るようになりました- デフォルト OpenAction 処理は、完全な PDF を 1 つのバイト配列に読み込む代わりに、固定サイズのウィンドウと上限付き範囲コピーを使用します
Version 3.81.0
追加 (Added)
PostProcessSavedPdfが、カスタムメモリー上限とディスクバック処理のために、3 つの呼び出し側所有のシーク可能ワークスペースを受け入れます
変更 (Changed)
TPdf.SaveAsが、SaveMemoryLimitとSaveTemporaryDirectoryを保存済み PDF のすべてのポストプロセッシングワークスペースに適用し、それらのスピルを診断に含めるようになりました- ネイティブ増分 xref-stream 修復は、ファイル全体のバイト配列と繰り返されるフルファイル再割り当ての代わりに、固定サイズのテールおよび辞書ウィンドウと上限付き範囲コピーを使用します
Version 3.80.0
追加 (Added)
ReadAttachmentMetadataが、1 回の上限付きネイティブ列挙で、添付ファイル名、説明、MIME サブタイプ、デコード済みサイズ、可読性を取得しますExtractAttachmentsToStreamsが、ファイルごとおよび合計のバイト上限、設定可能な書き込みチャンク、キャンセル、アイテムごとの結果付きで、バッチを呼び出し側所有のストリームへ書き込みます
変更 (Changed)
- バッチ抽出は、バッチ内のすべてのペイロードを実体化する代わりに、PDFium Delphi Component のメモリーに多くて 1 つのデコード済み添付ファイルを保持するようになりました
Version 3.79.0
追加 (Added)
TPdfCacheGovernor、TPdf.CacheBudgetBytes、種類別使用量クエリ、テレメトリーが、1 つのスレッドセーフなグローバル LRU バイト予算を通じて保持キャッシュメモリーを調整しますTPdfTileCacheとプロセス全体のシステムフォントキャッシュは、正確なビットマップおよびフォントバイト計上とともに、呼び出し側が選択したガバナーに参加できます
変更 (Changed)
- パース済みページシーン、サムネイル、構造データ、テキストスナップショット、ページオブジェクトスナップショットが、既存のエントリー数上限を保持しながら、デフォルト 256 MiB の
TPdf予算の下で競合するようになりました - アクティブなページシーンはレンダリングが完了するまでピン留めされたままになり、PDFium には設定可能な合計キャッシュバイト API がないため、不透明なネイティブページシーンは明示的な推定チャージを使用します
Version 3.78.0
追加 (Added)
TPdfLayoutPagedPlan、TPdfLayoutDocument.BuildPagedPlan、TPdf.GeneratePagedLayoutが、レイアウトコマンドを呼び出し側が選択したシーク可能ストレージへストリーミングし、一度に 1 ページずつ実体化します
変更 (Changed)
- 大きな生成レイアウトは、コマンドを一時ストレージへスピルでき、設定可能な LRU ページキャッシュを保持し、非連続のヘッダーおよびフッターセグメントを復元し、フローアイテムごとに折り返しテキストを解放するようになりました
Version 3.77.0
追加 (Added)
TPdfLayoutTable、行、セル、テーブルオプションが、解決済みグリッドトラック、キャプション、繰り返しヘッダー行、分割可能な本体行、リンク、設定可能なボーダーを備えたページ跨ぎテーブルを追加します
変更 (Changed)
- 生成されたタグ付きテーブルは、ページをまたいで 1 つの連続した Table / TR / TH / TD 構造を保持し、行スパニンググループをアトミックに保ち、データセルをヘッダー ID に自動的に関連付けます
Version 3.76.0
追加 (Added)
TPdfLayoutConstraintsとSetLastItemConstraintsが、生成レイアウトに keep-together、keep-with-next、物理的な page-break-before / after、設定可能なウィドウ / オーファン行制御を追加します
変更 (Changed)
BuildPlanが、改ページ予測とコマンド出力のために各折り返しテキスト結果を再利用し、keep-with-next がテキスト測定を繰り返すのを防ぐようになりました
Version 3.75.0
追加 (Added)
TPdf.InspectPdfUaUnicodeCoverageが、直接 Unicode マッピング、ActualText置換、マッピングエラー、欠落した Unicode 値、未解決のソースオブジェクトに関する上限付きオブジェクトレベルのエビデンスを報告します
変更 (Changed)
TPdf.ValidatePdfUaが、Artifact と生成文字を除外し、あるテキストオブジェクトのActualTextが隣接コンテンツを覆い隠すのを防ぐ、単一のオブジェクトスコープ文字スキャンを再利用するようになりました
Version 3.74.0
変更 (Changed)
ValidatePdfUaPageContentTaggingとTPdf.ValidatePdfUaが、パスベースの改ページアーティファクトを含め、Artifact ページオブジェクトが構造ツリーの MCID に要求された場合にpvuaiArtifactInStructureTreeを報告するようになりました- PDF/UA ページコンテンツスキャンは、タグなしの実コンテンツと無効な Artifact 包含の両方が検出された後にのみ短絡するようになり、完了済みチェックを繰り返すことなくページ跨ぎカバレッジを保持します
Version 3.73.0
追加 (Added)
TPdf.InspectPdfUaLanguageCoverageが、実効言語、宣言ソース、MCID、構造インデックス、テキスト抜粋を含む自然言語スパンについて、上限付きページオブジェクトおよび構造文字列エビデンスを報告しますResolvePdfUaEffectiveLanguageが、明示的な妥当性エビデンスとともに、マーク済みコンテンツ、最も近い構造祖先、カタログの言語宣言を解決します
変更 (Changed)
- 非 artifact のテキストやアクセシビリティ文字列に有効な実効
/Lang宣言がない場合、TPdf.ValidatePdfUaがpvuaiNaturalLanguageUncoveredを報告するようになりました
Version 3.72.0
追加 (Added)
TPdf.InspectPdfAMetadataが、明示的な空値と日付パース失敗を含む、8 つすべての ISO 19005-1 Info-to-XMP マッピングについて型付きのフィールドごとの等価性エビデンスを報告しますTPdf.NormalizePdfAMetadataが、無関係な名前空間と非デフォルトの言語代替を保持しながら、不一致のマップ済み XMP プロパティのみを修復します
変更 (Changed)
- Unicode またはタイムゾーンを考慮した日付比較の結果、PDFium でデコードされた Info 値が正しく型付けされた XMP 値と異なる場合、
TPdf.ValidatePdfAがpvaiInfoXmpValueMismatchを報告するようになりました
Version 3.71.0
追加 (Added)
InspectPdfVT2sStreamが、OutputIntent の同一性、埋め込みまたは MIME プロファイルの由来、ICC ハッシュとヘッダーファクト、DPart のページ数とレコード数を含む、すべての PDF/VT MIME パートの印刷条件エビデンスを返しますFPdfIccProfileが、MD5、SHA-256、カラースペース、バージョン、デバイスクラス、プロファイル ID、多言語プロファイル記述のサポートを備えた、上限付き ICC ヘッダーおよびタグテーブル検査を提供します
変更 (Changed)
- PDF/VT-2s 検証が、
DestOutputProfileRefURL ファイル仕様を通じて先行する ICC MIME 添付を解決し、CheckSum、ICCVersion、ProfileCS、ProfileName、デバイスクラス、許可されたプロセスカラースペースを検証するようになりました - すべての PDF/VT パートが、1 つの権威ある
GTS_PDFXOutputIntent、PDF/X ベースに適した埋め込みまたは外部プロファイルパッケージング、同じ characterized 印刷条件を要求するようになりました。PDF/X 専用の添付は PDF/VT 比較の対象外のままです - 単一ファイルの PDF/VT-2 検証が、
DestOutputProfileRefを欠落として報告する代わりに、外部宛先プロファイルとして認識するようになりました
Version 3.70.0
変更 (Changed)
- PDF/VT 検証が、近くの辞書やネストした辞書にヒント要件を満たさせる代わりに、各 XObject 上で直接
GTS_Scope、GTS_XID、GTS_Env、GTS_Encapsulatedをチェックするようになりました Recordスコープが間接DPartRoot辞書からRecordLevelを解決するようになり、PDF/VT-1 ファイルではStreamスコープが拒否されます- デコードされたページおよび Form XObject コンテンツストリームが、実効的な継承リソースと DPart 階層を通じて、
Doリソースの可視性、SingleUse出現回数、受信者レコードの所有権を検証するようになりました - カプセル化 XObject が、ブール形状、推奨スコープ、Image
Intent、分離された透過グループ、ブレンディングカラースペース、直接またはネストしたオプショナルコンテンツ依存を検証するようになりました
Version 3.69.0
変更 (Changed)
- PAdES 検証が、パーサーが選択した値を受け入れる代わりに、重複する
Contents、ByteRange、SubFilter、Filter、Typeエントリーを拒否するようになりました - 署名ディスカバリーが、ストリームを考慮した線形辞書スキャンを使用し、エスケープされた PDF 名トークンを認識し、実際の
ByteRangeの前に置かれた閉じたネスト辞書によってリダイレクトされないようになりました - 署名
ByteRange検証が、後続の増分リビジョンを引き続き許可しつつ、除外ギャップがダイレクトな 16 進Contentsトークンと正確に一致することを要求するようになりました - 署名辞書が 1 つの名前値
Filterを要求するようになり、一貫したSigまたはDocTimeStampの型とサブフィルターの組み合わせを強制します
Version 3.68.0
追加 (Added)
TPdf.BuildPadesEvidenceReportが、署名ごとに、PDFium 署名ファクト、CMS ポリシー、トラストおよびタイムスタンプ状態、証明書パスハッシュ、DSS/VRI カバレッジ、後続リビジョンの決定を関連付けますTPadesEvidenceReportが、上限付きマルチ署名エビデンスを JSON または CSV としてエクスポートし、ソース、署名、DSS、リビジョン、切り詰めのテレメトリーを報告します
変更 (Changed)
- PAdES トラスト検証が、デフォルトのオフライン検証を保持しながら、署名者証明書と順序付き Windows 証明書パスの SHA-256 アイデンティティを記録するようになりました
- エビデンス生成は、段階ごとに元の PDF を新しいストリームへコピーする代わりに、保持された 1 つのソースバイトキャプチャをコンプライアンス、トラスト、DSS、リビジョン分析を通じて再利用します
Version 3.67.0
追加 (Added)
TPadesSignatureFieldOptionsが、設定可能な署名フィールド名、必須シード値、理由と法的証明のリスト、許容される署名者証明書、フィールドロックを作成します- ローカルおよびリモート署名が、ISO 32000-1 の
FieldMDPとDocMDPトランスフォームを備えた承認または認証署名を作成できます
変更 (Changed)
- 認証署名は、
/Perms /DocMDPを通じて新しい署名を登録しながら、既存のカタログ権限を保持します
Version 3.66.0
追加 (Added)
RenderPageBandedToStreamが、設定可能なバンド高さ、PNG 圧縮、出力バイト上限付きで、PNG または TIFF 出力を呼び出し側ストリームへ直接書き込みますRenderPageBandedToEncoderが、連続するページバンドを呼び出し側定義のコーデックへ供給し、バンド、行、メモリー、完了、出力のテレメトリーを返します
修正 (Fixed)
RenderPageBandedが、完全なページを各バンドに再スケーリングする代わりに、フルページのレンダージオメトリーを保持し、要求された各バンドをクリップするようになりました
Version 3.65.0
追加 (Added)
TPdfParallelRenderReportが、ソースサイズ、ピークキャプチャメモリー、ストレージバックエンド、共有バッキングの種類を報告するようになりました
変更 (Changed)
RenderPagesParallelが、2 つ目のフルドキュメントバイト配列を割り当てる代わりに、不変メモリー、読み取り専用ファイルマッピング、またはFPDF_LoadCustomDocumentランダムアクセスを通じてキャプチャされたソースを共有するようになりました- スピルされた並列レンダーソースは
SaveMemoryLimitの下に留まり、完全な PDF をアドレス指定可能なプロセスメモリーへ再読み込みする必要がなくなりました
Version 3.64.0
追加 (Added)
ImportImposedに、ネイティブインポート、ユニークソース、空スロット、XObject テンプレート、フォームオブジェクト、コンテンツ生成、出力ページ数を含むTPdfImpositionExecutionReportを返すオーバーロードが追加されました
変更 (Changed)
- ゼロジオメトリの面付けが、空ページ挿入とネイティブ N-up 合成の前に、順序付けされた各ソースページを 1 回の
FPDF_ImportPagesByIndex呼び出しで送るようになりました - カスタムジオメトリの面付けが、ユニークなソースページごとに 1 つのネイティブ XObject テンプレートを再利用し、ソースページを変更せずにキャッシュされたページメトリクスを読み取り、正確なプランストレージを事前割り当てするようになりました
Version 3.63.0
追加 (Added)
BeginPageObjectEditTransaction、CommitPageObjectEditTransaction、RollbackPageObjectEditTransactionが、検証済みスナップショットロールバック付きのアトミックなページスコープバッチへネイティブページオブジェクト変更をグループ化しますPageObjectEditTransactionStatusが、バインドされたページ、ダーティー状態、成功した変更回数、コンテンツ生成回数を報告します
変更 (Changed)
- コミットされたオブジェクトバッチが、挿入、削除、トランスフォーム、プロパティ、マーク、アノテーションオブジェクト、アピアランスの各変更ごとに 1 回ではなく、
FPDFPage_GenerateContentを 1 回だけ呼び出すようになりました - 遅延コンテンツが失われる事態の前に、保存、ページ変更、ページ削除、ネストした編集トランザクション、失敗したネイティブ挿入またはアノテーション更新が拒否されるようになりました
Version 3.62.0
追加 (Added)
ReadPageObjectsSnapshotが、オブジェクト、パス、クリップ、マーク、テキスト、文字列、期限の各予算付きで、呼び出し側所有のページオブジェクトファクトを取得しますPageObjectsSnapshotが、設定可能な容量と占有率、ヒット、ミスのテレメトリーを備えたリビジョン認識 LRU 再利用を提供します
変更 (Changed)
PageComplexityが、ネイティブオブジェクト列挙、透過性、パス、画像クエリの繰り返しの代わりに、不変のページオブジェクトスナップショットを再利用するようになりました
Version 3.61.0
追加 (Added)
TPdfが、設定可能なエントリー上限とバイト上限、さらにヒット、ミス、エビクション、占有率、リビジョンのテレメトリーを備えた、埋め込みおよびレンダリング済みプレビュー用の統合サムネイル LRU を公開するようになりましたRenderPageThumbnailが、呼び出し側所有ビットマップの契約を保持しながら、回転、レンダーオプション、背景色、TPdfColorSchemeを受け入れます
変更 (Changed)
- 繰り返しのサムネイル抽出とレンダリングは、オプションの埋め込みサムネイルが存在しないことのキャッシュを含め、リビジョン、ページ、ソース、サイズ、回転、フラグ、背景、カラースキームのキーを通じてネイティブ PDFium 結果を再利用します
TPdfThumbnailViewが、可視ページのビットマップキャッシュをドキュメントのサムネイルリビジョンと同期させ、編集によって古いプレビューが残らないようにします
Version 3.60.0
追加 (Added)
ReadTextPageSnapshotが、明示的な文字、オブジェクト、フォント名、期限の各予算付きで、Unicode、UTF-16 マッピング、文字のジオメトリーとスタイル、正規化されたテキストオブジェクトメタデータを 1 パスで取得しますTextPageSnapshotが、容量、カウント、ヒット、ミスのテレメトリーを備えた設定可能なリビジョン認識 LRU を通じて、ディープな呼び出し側所有コピーを提供します
変更 (Changed)
GetStructuredTextと物理レイアウトのGetTextInReadingOrderが、同じテキストスナップショットを再利用し、O(n log n) のジオメトリーソートを適用するようになりました
修正 (Fixed)
- 小さなテキストおよび構造スナップショットキャッシュが、要求されたページインデックスの下に新しいデータを格納しながら最も古いページをエビクトするようになり、ページ間のキャッシュエイリアシングを防ぎます
Version 3.59.0
追加 (Added)
LifecycleActionPolicyが、PDF ドキュメントおよびページライフサイクルアクションの無効、明示のみ、互換の自動実行を選択しますExecuteDocumentLifecycleActionがドキュメントの JavaScript、open、close、save、print アクションを公開し、ExecutePageLifecycleActionがPageNumberを変更せずにページの open および close アクションを実行します
変更 (Changed)
- ヘッドレスページ読み込みが、ビューア駆動の読み込みと同じ自動ページ open および close アクションを受け取るようになりました。一時ページはレンダーロックの下で再利用または解放されます
Version 3.58.0
追加 (Added)
ReadStructureElementsとVisitStructureElementsが、明示的な深さ、要素、属性、時間の各予算と詳細な完了ステータス付きの、反復的なタグ付き構造トラバーサルを提供しますStructureElementsForPageが、PageNumberを変更せずに 1 ベースのページスナップショットを公開します。ヒット、ミス、カウントのテレメトリーを備えた設定可能なリビジョン認識 LRU キャッシュが背後で動作します
変更 (Changed)
- アクセシビリティ、リフロー、検証、ビューアの各コンシューマーが、関連するドキュメントまたはページの編集が無効化するまで、呼び出し側所有の構造スナップショットを再利用するようになりました
Version 3.57.0
追加 (Added)
- 完全なネイティブフォームホストコールバックが、ライフタイムセーフな遅延ページハンドル、インタラクションビューのカーソルルーティング、値変更通知、選択テキスト矩形、URI イベント、GoTo 宛先イベントを提供するようになりました
FormHostCallbacksCompleteがコールバックの準備状況を報告し、FormSelectionRectsとClearFormSelectionRectsが上限付きページ空間の選択ジオメトリーを公開します
修正 (Fixed)
- XFA 現在ページコールバックが、PDFium の 0 ベースページインデックスとコンポーネントの 1 ベース
PageNumberの間で正しく変換されるようになりました - AcroForm と XFA の URI コールバックが、生の URI バイトを保持し、外部起動の前に明示的なホスト承認を要求するようになりました
Version 3.56.0
追加 (Added)
- インデックス付き
PageMetricsスナップショットが、アクティブページを変更せずに、ページの寸法、回転、ラベル、透過性、5 つの標準ページボックスを公開します
変更 (Changed)
- 繰り返しのページメタデータ読み取りが、自動的に無効化されるネイティブスナップショットキャッシュを再利用するようになり、サムネイル、プレフライト、ドキュメント分析のワークロードでのページオープンが削減されます
Version 3.55.0
追加 (Added)
- パス検査が、読み込まれた PDFium ビルドが
FPDFPath_GetBezierControlPointsを提供する場合に、正確な 3 次 Bézier 制御点を公開します。古い DLL 向けのオプションのケイパビリティプローブも付属します FormFieldTypeAtPoint、TPdfView.FormFieldTypeAt、インデックス付きFontFlagsプロパティが、生のハンドルなしでネイティブフォームおよびフォントのファクトを公開しますTPdf.Signaturesが、すべてのネイティブ署名コンテンツ、ByteRange、サブフィルター、理由、時刻、権限を 1 つの呼び出し側所有スナップショットで返します
変更 (Changed)
- フォームフィールド存在チェックが、アノテーションハンドルのオープンとクローズの代わりに、直接のネイティブポイントヒットテストを使用するようになりました
修正 (Fixed)
- PDF/E-1 検証が、通常の AcroForm フィールド、埋め込みファイル、FileAttachment アノテーションを許可しつつ、間接参照およびオブジェクトストリームの値を含め、トップレベル AcroForm の
/XFAと/NeedAppearances trueを正確に報告するようになりました
Version 3.54.0
追加 (Added)
FPdfProductionが、測定に基づくマルチコーデック画像選択、カラーおよびフォント処理バックエンド、SVG パス、スタイル付き置換プラン、トランザクション型 XFA パケット更新、バーコードベクトル、Portfolio モデル、安全な RichMedia 抽出を追加しましたFPdfStandardsExecutionが、測定と GeoPDF 変換、トランザクション型 PDF/A 修復、PDF/UA-2 プラン、外部マルチカラープロファイル、履歴 DSS および VRI エビデンス、DPart クエリ、詳細な PDF/E ファクト、固定メモリーの PDF/R ストリップを追加しましたTPdf.ImportImposedは、ネイティブ N-up またはページ XObject パスを通じて、正確な溝、ブリード、クリープのジオメトリを持つ上限付き N-up および冊子プランを合成します。またTPdf.CompareWithはセマンティック、幾何、許容付きピクセル差分を報告します- PAdES 署名が、差し替え可能なパスバリデーターと HSM プロバイダー、署名添付 PDF MAC、
cms-algorithm-protection、オフラインの署名ポリシードキュメントをサポートするようになりました
変更 (Changed)
- レイアウトエンジンが上限付きの HTML と Markdown を受け入れ、段組みをまたいでフローし、固定、自動、比率のグリッドトラックを解決するようになりました
- XFDF ラウンドトリップが、複数値およびリッチテキストフィールド、ポップアップ、アクション、宛先、アピアランスオーバーレイ、カスタム名前空間、明示的な存在状態を保持するようになりました
Version 3.53.0
追加 (Added)
ConfigurePdfLibraryが、最初の PDFium ロード前に、変更不能なネイティブレンダラー、フォント、V8、Brotli、ユーザーフォントパス、サンドボックスの構成を提供します- ネイティブ構造属性、注釈リレーションシップ、注釈ファイル添付、型付き辞書値、フォーカスポリシー、リンクとフォームの z オーダークエリ、デフォルト TTF マッピング診断が、上限付きの高レベル API で利用できるようになりました
TPdfView.ReplaceFormTextAndKeepSelectionが繰り返しの編集をまたいでアクティブな選択を保持し、右ボタン離しイベントがネイティブフォームエンジンに届くようになりました
変更 (Changed)
- 決定論的なドキュメント時刻が、固定エポックに加えて安定した UTC カレンダー変換を使用するようになり、どのホストタイムゾーンでも同じメタデータが生成されます
- 添付ファイルの文字列書き込みがネイティブ結果を検証し、辞書キーを UTF-8 としてエンコードするようになりました
Version 3.52.0
追加 (Added)
TPdf.GetImageObjectRenderedBitmapは、画像オブジェクトの現在のマトリックス、カラースペース、マスク、レンダリング状態を適用したレンダリング結果を返しますTPdf.TextObjectGlyphWidth、TPdf.TextObjectFontSize、TPdf.SetTextObjectFontSizeが、ネイティブグリフ測定と正確なテキストオブジェクトのフォントサイズ編集を公開しますTPdf.TransformPageObjectClipPath、TPdf.DetachFormObjectChild、TPdf.SharePageObjectMark、TPdf.IsAnnotationObjectSubtypeSupportedが、精密なコンテンツオブジェクト編集と機能検査を追加します
Version 3.51.0
修正 (Fixed)
- 以前のリリースノートで発表された 8 つの
TPdfメンバーは private セクションに宣言されており、PDFiumユニットの外部から呼び出せませんでした。これらは文書のとおり public になりました:LinkAtPoint、GetTextRenderMode、GetTextObjectRenderedBitmap、IsAnnotationSubtypeSupported、ChooseRenderFlags、AttachmentHasKey、GetAttachmentStringValue、SetAttachmentStringValue
変更 (Changed)
- 英語のリファレンスドキュメントが
TPdfとTPdfViewのすべての public メンバーを網羅するようになりました:リファレンスページがなかった 88 のメンバーにページが追加され、クラスページ、ナビゲーションインデックス、API リファレンスにすべて掲載されます - 以前は共有ページを指していたリファレンスページが、メンバー自身のページへリンクするようになりました。検索結果が、検索された API の説明を開くようになります
- API リファレンスは public シグネチャから到達できる列挙型とレコードを文書化します。ロードとストリームのレポート、テキスト・フォント・OCR の型、レイアウトビルダー型、PAdES 検証型、バッチと検証の型、並列レンダリング型を含みます
Version 3.50.0
追加 (Added)
- すべての GUI デモが空のフォームではなくすぐに使える内容で開くようになりました:ビューアとラボのデモは生成済みのサンプルドキュメントを読み込み、レポートデモは起動時に完成済みレポートを生成し、プロセッサデモはサンプル入力を事前生成するため、メイン操作がワンクリックで実行できます
MultiPageViewer、SplitView、FontPropertiesは起動時にメモリ内サンプルドキュメントを生成します(6 ページのショーケース、2 つの並列比較ドキュメント、クリックして検査できる複数フォントのページ)MergePDF、BatchExport、SplitPDF、ExtractText、PDFtoJpg、PrintPDF、PrintPreferencesなどのプロセッサデモは、実行可能ファイルの隣にサンプル PDF を事前生成し、入力コントロールを事前入力します。既存ファイルを上書きしない冪等な再生成を行いますFormFillとExtractImagesはデモフォルダに同梱されたサンプルファイルを自動読み込みし、ImageToPDFは 2 つのサンプルビットマップを生成し、WatermarkStampはスタンプサンプルを事前構築し、XfdfLabはテキストとハイライト注釈を保持した生成ドキュメントで開きます
変更 (Changed)
CreatePDFは起動時にダイアログを表示せずに実行可能ファイルの隣へSample.pdfを生成するようになり、デモが開いた瞬間にドキュメントが存在しますTPdf.AboutInfoとインストーラーのメタデータが Version 3.50.0 を一貫して報告するようになりました
Version 3.49.0
追加 (Added)
- 更新済み PDFium バイナリの
FORM_GetTextDirectionとFORM_SetTextDirectionがバインドされ、動的バインディング層は全 472 の PDFium エクスポートの完全カバレッジを維持します TPdf.FocusedFormFieldTextDirectionとTPdf.SetFocusedFormFieldTextDirectionは、新しいTPdfFormTextDirection列挙型(ftdUnknown、ftdAuto、ftdLTR、ftdRTL)を通じてフォーカスされたウィジェットのメモリ内テキスト方向を公開し、TPdfViewにも対応があり、方向変更後にページシーンを再描画します
変更 (Changed)
FPDF_LIBRARY_CONFIGは PDFium のバージョン 6 レイアウトを反映し、PDF_ENABLE_BROTLIでビルドされたバイナリ向けに実験的なm_BrotliEnabledフィールドを持ちますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.49.0 を一貫して報告するようになりました
Version 3.48.0
追加 (Added)
PDFViewerデモは起動時に作成 API を使って 6 ページのショーケースドキュメントをメモリ内に生成するようになり、ビューアはレンダリング済みの内容を表示して開き、ディスク上にサンプルファイルは不要になりましたTPdfThumbnailViewを基盤とするサムネイルパネルが追加され、3 つのデモポートすべてでブックマークツリーの横にクリックで移動できるページプレビューを提供します- ビューアの検索は、単一の結果矩形の代わりに
HighlightSearchTextを使って現在のページのすべての一致をハイライト表示し、一致数をステータスバーに報告するようになりました - ワンクリックの
Nightと2-Upツールバーボタンで、ナイトデュオトーンレンダリングモードと 2 ページ見開き表示モードを切り替えられます
変更 (Changed)
- ビューアのテキスト選択は、手書きの選択コードに代わって、ダブルクリックによる単語選択、ドラッグ選択、クリップボードショートカットを備えた組み込みの
TPdfView選択エンジンを使うようになりました - ページのレンダリングにドロップシャドウとスムーズスクロールが加わり、モダンな読書体験を実現します
TPdf.AboutInfoとインストーラーのメタデータが Version 3.48.0 を一貫して報告するようになりました
Version 3.47.0
追加 (Added)
FPdfBenchmarkは、設定可能なウォームアップと計測パス、ページおよびピクセル上限、協調的キャンセル、ケースごとの合格・失敗・スキップ状態を備え、上限付きの PDF コーパスを実行しますTPdfBenchmarkReportは、入力および保存バイト数、読み込みと先頭ページのレイテンシ、レンダリングスループット、保存と再オープンの所要時間、サンプリングされたピークワーキングセット、セマンティックおよびピクセルの SHA-256 ハッシュ、再実行の安定性、期待ハッシュゲート、独立した再オープン等価性を記録します- ベンチマークレポートは、CI、リリース適格性確認、長期的なパフォーマンス追跡のために、数式インジェクションに対して安全な CSV と構造化 JSON を出力します
GetSkiaRenderCapabilities、RenderPageSkia、RenderPageSkiaByIndexは、解析済みページキャッシュの再利用と DLL エクスポートのハード要件なしで、オプションのネイティブ Skia ページおよびフォームレンダリングを公開します- バージョン管理されケイパビリティでゲートされた印刷出力 ABI は、ロードされた PDFium モジュールが提供する場合に、正確なスポットプレート列挙、プレートレンダリング、オーバープリント検出、オーバープリントプレビューを公開します
修正 (Fixed)
PDF_USE_SKIAを含まない PDFium ビルドが、実験的な Skia エクスポートが存在しないために失敗するのではなく、正常にロードされるようになりました
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.47.0 を一貫して報告するようになりました
Version 3.46.0
追加 (Added)
ValidatePdfRは、設定可能な検証オプションを通じて、ラスターのみのページコンテンツ、ストリップジオメトリ、カラーモデル、実効解像度、圧縮パラメータ、必須メタデータ、暗号化された PDF 2.0 プロファイルをチェックするようになりましたBuildPdfARepairPlanは、検証エビデンスを、安全クラス、署名影響ガード、JSON 出力付きの依存関係順の修正ステップに変換しますBuildPdfXProductionPreflightは、画像ペイロードをデコードせずに、ページボックス、埋め込みフォント、OutputIntent、カラーラント、透明度、オーバープリント、セパレーション、画像解像度、生産準備状況を報告します- PDF/UA-2 構造検証は、関連ファイルの所有権、読み取り順序、説明、関係、発見可能性をチェックするようになりました
変更 (Changed)
TAssociateFile.Description、TPdf.ImageInfo、TPdf.PageComplexityは、関連ファイルおよび生産プリフライトワークフローに必要なメタデータを公開しますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.46.0 を一貫して報告するようになりました
Version 3.45.0
追加 (Added)
TPdfXmpPacketは、未知の名前空間、型付き RDF コンテナ、URI およびリソース値、修飾子、言語代替、パケットラッパー、保持されるパディングを備えた名前空間対応の XMP を解析、編集、クローン、シリアライズしますTPdf.ReadXmpPacketとSaveAsWithXmpPacketは、高レベルのメタデータ読み取りとアトミック出力を公開し、署名済みドキュメントの変更には明示的な承認が必要です
セキュリティ (Security)
- 上限付き XML リーダーは DTD と外部エンティティを拒否し、パケットバイト数、ネスト、ノード、属性、数値文字参照を制限します
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.45.0 を一貫して報告するようになりました
Version 3.44.0
追加 (Added)
TPdfValidationRuleRegistryは、重大度、依存関係、修正ガイダンス、エビデンス、組み込みまたはカスタム述語付きのプロファイル条項を登録しますTPdfValidationBudgetとTPdfValidationExecutionContextは、ルール、失敗、オブジェクト、再帰、UTF-8 エビデンス、予約メモリ、経過時間、フェイルファスト、協調的キャンセルに上限を設けますValidatePdfFilesParallelは、分離されたワーカードキュメントでファイルを検証しながら、入力順序を保持し、問題分布、タイミング、失敗、キャンセル、ロードエラーを集計します
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.44.0 を一貫して報告するようになりました
Version 3.43.0
追加 (Added)
TPdfStructureElementは、PDF/UA-2 セマンティック検証のために、名前空間、名前空間ロールマッピング、参照、関連ファイル、注釈、ウィジェット、ラベル、外観のファクトを保持するようになりましたValidatePdfUa2StructureElementsとその特化バリデータは、pdfium.dllをロードせずに、ISO/TS 32005 の名前空間と包含、上限付きテーブルグリッド、注釈、フォーム、Formula/MathML 関連付け、関連ファイル、ドキュメントルート、FENote、リスト、TOC 参照、タイトル、キャプションをチェックしますClassifyPdfUaNamespaceは、PDF 1.7、PDF 2.0、MathML、ARIA、DPUB、カスタム、欠落の各構造名前空間を識別しますPdfUa2StructureHasIssueは、Pascal の集合を値で返さない、C++Builder で安全な単一問題クエリを提供します
変更 (Changed)
ValidatePdfUaStructureElementsは、PDF/UA-1 のルールパスを維持しながら、puc2向けの新しいセマンティックルールセットを自動的に適用しますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.43.0 を一貫して報告するようになりました
Version 3.42.0
追加 (Added)
TPdfUaSaveOptions.PdfUa2は、pdfuaid:part2、pdfuaid:rev2024、実効的な PDF 2.0 カタログバージョンを備えた PDF/UA-2 出力を作成しますValidatePdfUaはpuc2を検出し、欠落したリビジョンメタデータ、PDF 2.0 以外のファイル、無名のオプションコンテンツ構成、非推奨の注釈、汎用の H 見出しを報告します
変更 (Changed)
- PDF/UA 検証は、PDF/UA-1 と PDF/UA-2 それぞれのプロファイル固有のタブ順序、XFA、見出しルールを選択するようになりました
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.42.0 を一貫して報告するようになりました
Version 3.41.0
追加 (Added)
SetPageObjectMarkParamは、マークを置き換えることなく、既存のマーク付きコンテンツエントリに整数、実数、文字列、バイナリのいずれかのパラメータを 1 つ追加または置換しますRemovePageObjectMarkParamは、マーク名と無関係なすべてのプロパティを保持しながら、選択された 1 つのプロパティを削除します
変更 (Changed)
- 非整数のマーク付きコンテンツ数値は、整数スナップショットに切り詰められる代わりに、
pmpFloatとしてラウンドトリップするようになりました AddPageObjectMarkのパラメータ検証が失敗した場合、部分的に作成されたネイティブマークが削除されますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.41.0 を一貫して報告するようになりました
Version 3.40.0
追加 (Added)
ConfigureSystemFontProviderは、PDFium 起動前にアプリケーションフォントマッパーをインストールし、欠落または置換されたドキュメントフォントに対して検証済みの TrueType または OpenType バイトを供給しますTPdfSystemFontPolicyは、フェイス置換、ネイティブフォールバック、フォントごとのバイト上限、上限付きリクエストキャッシュを制御しますGetSystemFontProviderStatisticsは、マッピング、キャッシュ、フォールバック、拒否、データテーブル、生存ハンドルのアクティビティを報告します
変更 (Changed)
- プロバイダコールバックは、PDFium が要求するフェイス、ウェイト、スタイル、charset、ピッチを公開するとともに、コールバックの失敗をネイティブ境界内に留めます
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.40.0 を一貫して報告するようになりました
Version 3.39.0
追加 (Added)
AddCidType2Textは、グリフごとの CID-to-GID ジオメトリと CID-to-Unicode マッピングを明示的に指定して、呼び出し元が提供する TrueType データを埋め込みますTPdfCidFontOptionsは、完全埋め込み、フォールバック付きの優先サブセット、必須サブセットを選択し、上限付きのフォント、グリフ、Unicode 予算を構成しますTPdfCidFontReportは、サブセット決定、バイトサイズ、一意グリフ、埋め込み状態、期待テキスト、抽出テキスト、抽出整合性を報告します
変更 (Changed)
- TrueType サブセットは要求されたグリフ識別子を保持し、安全でない出力を拒否し、マッピングまたは抽出検証が失敗した場合は挿入されたすべてのページオブジェクトをロールバックします
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.39.0 を一貫して報告するようになりました
Version 3.38.0
追加 (Added)
BuildReflowDocumentは、選択されたページ範囲にわたって、Tagged PDF 構造または物理レイアウト推論から、上限付きで再利用可能なセマンティックノードツリーを作成しますTPdfReflowDocument.ToHtmlは、エスケープ済みのレスポンシブな見出し、段落、リスト、図、キャプション、ページセクション、ヘッダーとスパンのセマンティクスを持つテーブルを出力しますTPdfReflowOptionsは、テーブル検出、ページセクション、ジオメトリ、CSS、改行、ページ範囲、キャンセル、リソース予算を制御します
変更 (Changed)
- リフロー中はテーブルコンテンツが重複する段落ブロックを置き換え、成功、失敗、キャンセルのいずれの場合もアクティブページ状態が復元されます
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.38.0 を一貫して報告するようになりました
Version 3.37.0
追加 (Added)
ApplyOcrSearchLayerは、選択されたページを PDFium でレンダリングし、上限付きのトップダウン BGRA ピクセルを呼び出し元が提供するIPdfOcrProviderに送信しますTPdfOcrWordは、Unicode テキスト、信頼度、ピクセル空間の四角形を保持し、ネイティブページジオメトリを通じて不可視の検索可能テキストへマッピングされますTPdfOcrReportは、ページごとの完了、既存テキストのスキップ、失敗、キャンセル、レンダリングピクセル、受理または拒否された単語を記録します
変更 (Changed)
- OCR 挿入は元のスキャン画像ストリームを保持し、不正または低信頼度の結果をフィルタし、ページごとに 1 回コミットし、アクティブページを復元します
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.37.0 を一貫して報告するようになりました
Version 3.36.0
追加 (Added)
ExtractTablesは、ネイティブのワードジオメトリと変換されたパス罫線から、罫線付きテーブルと空白整列テーブルを検出しますTPdfTableは、行、列、結合スパン、ページ境界、ヘッダーセル、検出モード、信頼度、CSV または JSON の直接出力を報告しますExtractDocumentTablesは、共有予算の下で全ページをスキャンし、ページ境界をまたいで続く一致テーブルをマークします
変更 (Changed)
- テーブル抽出は設定可能なワード、罫線、セル、テーブルの上限を強制し、ドキュメントレベルのスキャン後にアクティブページを復元します
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.36.0 を一貫して報告するようになりました
Version 3.35.0
追加 (Added)
GenerateTaggedLayoutは、ネイティブのマーク付きコンテンツ、Document 構造ツリー、ParentTree と IDTree のマッピング、ドキュメント言語メタデータを備えた新しいセマンティックレイアウトドキュメントを作成しますTPdfLayoutSemanticsは、見出し、セクション、リスト、図、キャプション、テーブル、ヘッダー関連付け、スパン、代替テキスト、実際のテキスト、言語、要素 ID をモデル化しますTPdfLayoutDocument.AddLinkは URI Link 注釈を出力し、OBJR と StructParent のマッピングを通じて各注釈をその Link 構造要素に関連付けます
変更 (Changed)
- レイアウトテキストはデフォルトで段落セマンティクスになり、ヘッダー、フッター、罫線、画像、再利用可能フォームは、明示的にタグ付けされない限りアーティファクトになります
- セマンティックプラン検証は、ドキュメント出力の前に、重複 ID、欠落した親、循環、無効なリストまたはテーブル包含、代替テキストのない図、未解決のテーブルヘッダー ID を拒否します
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.35.0 を一貫して報告するようになりました
Version 3.34.0
追加 (Added)
TPdf.AddShapedTextは、ネイティブのシステムシェーピングと PDFium CID Type 2 フォント API を通じて、RTL、bidi、文脈依存、合字のグリフランを書き込みますShapePdfTextとTPdfUniscribeTextShaperは、ドキュメントを変更せずに、配置済みグリフ ID、アドバンス、オフセット、ソースクラスター、視覚ラン位置、bidi レベルを公開します
変更 (Changed)
- 生成される ToUnicode マップはシェーピングされたすべてのグリフをカバーし、
ActualTextは適合する抽出およびアクセシビリティコンシューマのために元の論理 Unicode 文字列を格納します - UTF-16 バイトオーダーマーク付きのマーク付きコンテンツ文字列が、
PageObjectMarksを通じて正しくデコードされるようになりました TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.34.0 を一貫して報告するようになりました
Version 3.33.0
追加 (Added)
TPdfLayoutCachedNodeは、初回使用時にサブクラス化されたレイアウトコンテンツを構築し、AddCachedNodeを通じてスケールを変えた繰り返し配置をサポートしますTPdfLayoutPlanは、計測キャッシュのヒットとミス、キャッシュ済みノードの配置、再利用されたネイティブ XObject を報告します
変更 (Changed)
BuildPlanは、テキスト計測を繰り返すことなく、ページ制約、コンテンツ、フォント、スタイル、ソース、計測器の完全な同一性によって一致するプランを再利用しますGenerateLayoutは、一意のキャッシュ済みノードごとに 1 つの宛先バインド XObject に変換し、配置ごとに軽量な Form オブジェクトを作成しますTPdf.AboutInfo、パッケージメタデータ、インストーラメタデータが Version 3.33.0 を一貫して報告するようになりました
Version 3.32.0
追加 (Added)
TPdfLayoutDocumentは、折り返しテキスト、スペーサー、罫線、画像、再利用可能なページ XObject、明示的な改ページ、ヘッダー、フッターを、計測済みページプランに構築しますGenerateLayoutは、ネイティブページとページオブジェクトをアトミックに追加する前にレイアウト全体のページ割りを行い、安定した{page}と{pages}参照を提供します
変更 (Changed)
TPdf.AboutInfo、パッケージメタデータ、インストーラメタデータが Version 3.32.0 を一貫して報告するようになりました
Version 3.31.0
追加 (Added)
TPdfPagePlanのビルダーは、削除、移動、挿入、分割、結合のページ操作を適用せずに記述しますValidatePagePlanは、正確な旧ページから新ページへのマップを返し、影響を受けるブックマーク、名前付き宛先、ページラベル、フォームフィールド、タグ付きページ、インポート機能、署名を一覧化します
セキュリティ (Security)
- 未解決のナビゲーションターゲットを残すプランや、明示的な承認なしに署名済みコンテンツを変更するプランは、ネイティブページ操作が実行される前に拒否されます
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.31.0 を一貫して報告するようになりました
Version 3.30.0
追加 (Added)
SaveRecoverySnapshotは、ソースフィンガープリントと検証済みドキュメント編集ジャーナルを含む、チェックサム付きでサイズ上限付きのリカバリパッケージを書き込みますRestoreRecoverySnapshotは、チェックサム、ジャーナルチェーン、ソースフィンガープリント、復元フィンガープリントがすべて一致する場合にのみリカバリパッケージを再生しますEnableRecoveryAutosaveは、変更を伴う各コミット、元に戻す、やり直しの後に、ソース PDF を書き換えることなく、明示的なリカバリファイルをアトミックに更新します
変更 (Changed)
InspectRecoverySnapshotは、パッケージを適用せずに、リカバリソース、フィンガープリント、エントリ数、位置、上限付きストレージを報告しますImportEditJournalとリカバリ復元は、署名済み PDF に編集を適用する前に、明示的なAllowSignedDocument承認を要求するようになりました- リカバリパッケージストレージは、構成された上限付きランダムアクセスストアと、大きなジャーナルおよびクラッシュセーフな自動保存更新のための同一ディレクトリ書き込み置換を使用します
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.30.0 を一貫して報告するようになりました
Version 3.29.0
追加 (Added)
BeginEditTransaction、CommitEditTransaction、RollbackEditTransactionは、任意のネイティブドキュメント編集をアトミックなトランザクションにグループ化しますUndoEditとRedoEditは、ページ、オブジェクト、注釈、添付ファイル、メタデータの変更にわたって、SHA-256 検証済みの逆方向および順方向デルタを適用しますExportEditJournalとImportEditJournalは、後の再生に向けて、ソースフィンガープリントとダイジェストチェーン検証付きの上限付きポータブルデルタを永続化します
変更 (Changed)
- トランザクションスナップショットは再現可能なネイティブ出力を使用するため、通常の PDFium 保存に非決定的な識別子やタイムスタンプが含まれる場合でも、変更のないコミットは空のままになります
- 失敗したコミットと無効なジャーナル再生は以前のロード可能なドキュメントをアトミックに復元し、エントリ数、保存バイト数、スナップショットサイズは呼び出し元が構成した上限内に保たれます
- 署名済み PDF は、ドキュメント編集トランザクションの開始前に明示的な
AllowSignedDocument承認を要求します TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.29.0 を一貫して報告するようになりました
Version 3.28.0
追加 (Added)
TPdf.InspectOptionalContentは、OCG レイヤー、デフォルトおよび代替構成、View/Print/Export の使用状態、ズームと言語のメタデータ、ロックされたレイヤー、順序配列、ラジオグループ、OCMD ポリシー、可視性式、実効レンダリング状態を列挙しますTPdf.SaveAsOptionalContentConfiguredは、選択された使用目的と構成に対して呼び出し元が選択したレイヤー状態で、厳密に検証されたコピーを書き込みます
変更 (Changed)
- レイヤー状態の出力は、構成の
/ONと/OFFの両配列および OCG Usage 状態辞書を更新するようになり、PDFium がネイティブレンダリングコンテキストを通じて要求された可視性を適用できます - 構成の書き込みは、未知のグループ、ロックされたレイヤーの変更、ラジオグループの競合、暗号化されたステージングファイル、明示的な承認のない署名済みファイルを拒否し、選択結果を決定的に保つためデフォルトで自動状態ルールを削除します
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.28.0 を一貫して報告するようになりました
Version 3.27.0
追加 (Added)
TPdf.RenderPageByIndexは、アクティブな編集ページを変更したりページ変更イベントを発生させたりせずに、任意の 1 ベースページを正確なピクセルサイズでレンダリングしますPageSceneCacheCapacity、PageSceneCacheCount、ClearPageSceneCacheは、上限付きシーンキャッシュの制御と診断を公開します
変更 (Changed)
- インデックス付きページレンダリング、レンダリング済みサムネイル、埋め込みサムネイル抽出は、デフォルトで 8 エントリの LRU キャッシュを通じて解析済み PDFium ページ状態を再利用するようになりました
- シーンエントリは、ページアクティブ化、編集、ページツリー変更、フォーム状態コールバック、明示的なクリア、ドキュメント破棄で無効化され、進行中のレンダリングは解放まで安全に保持されます
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.27.0 を一貫して報告するようになりました
Version 3.26.0
追加 (Added)
TPadesSignatureAlgorithmInfoは、各 CMS 署名者のダイジェスト、署名、公開鍵、名前付き曲線 OID を、独立して評価されたアルゴリズムポリシー状態とともに報告しますInspectPadesSignatureAlgorithmとEvaluatePadesSignatureAlgorithmは、P-256、P-384、P-521、brainpoolP256r1、brainpoolP384r1、brainpoolP512r1、Ed25519、Ed448 の各プロファイルを認識します
セキュリティ (Security)
- PAdES 検証は、楕円曲線とダイジェストの不一致、CMS ダイジェストと一致しない ECDSA 署名 OID、無名の EC パラメータ、Ed25519 パラメータ、512 ビット以外の Ed448 SHAKE256 出力長を拒否するようになりました
- ネイティブ CMS 検証が暗号学的有効性の源泉であり続ける一方、利用できないアルゴリズムと認識されない曲線は、無効な署名として扱われる代わりに
pcsUnsupportedとして報告されます TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.26.0 を一貫して報告するようになりました
Version 3.25.0
追加 (Added)
TPdf.ExportObjectGraphは、アクティブなクラシック、xref ストリーム、オブジェクトストリームの各オブジェクトを、明示的な辞書、配列、文字列、名前、スカラー値、間接参照、ストリームバイト数、オプションの SHA-256 ストリームダイジェスト付きの上限付き型付き JSON として出力しますTPdf.SaveAsObjectGraphPatchedは、型付きの null、Boolean、整数、実数、名前、テキスト文字列、間接参照のパッチ値を通じて、スキーマチェック済みのトップレベル辞書値を設定または削除します
セキュリティ (Security)
- オブジェクトグラフ出力はオブジェクト、再帰、文字列、出力バイトの予算を強制し、パッチ適用は配信前にすべての操作を検証して、未解決の参照、重複操作、暗号化された入力、保護されたストリームフィルタや長さの変更、明示的に承認されない限り署名済みドキュメントを拒否します
- オブジェクトグラフパッチは増分リビジョンとしてステージングされ、xref 検証のために再具体化され、PDFium を通じて厳密ロードされ、すべてのチェックが成功した後にのみコピーまたはアトミックにリネームされます
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.25.0 を一貫して報告するようになりました
Version 3.24.0
追加 (Added)
TPdf.ValidatePadesTrustは、検出可能なすべての分離署名を正確な元のByteRangeに対して検証し、signing-certificate-v2 バインディングと現在の Windows システム信頼を評価し、独立した署名、チェーン、失効、タイムスタンプ状態を報告しますTPdf.ValidatePadesTrustAsyncは、ディスパッチ前に元のロード済みソースのスナップショットを取り、解析、暗号、チェーン構築、AIA、OCSP、CRL、RFC 3161 タイムスタンプ処理の段階的進捗を報告し、協調的キャンセルをサポートしますTPadesTrustValidationOptionsは、オフラインまたはオンライン信頼、オプションの失効とタイムスタンプ検証、上限付き URL 取得タイムアウト、キャンセルトークン、進捗コールバックを選択します
セキュリティ (Security)
- 署名タイムスタンプと Document Time-stamp トークンは、SHA-256 メッセージインプリント、添付 CMS 署名、TSA チェーン、オプションの失効状態を、通常のドキュメント署名とは独立して検証するようになりました
- 信頼検証は PDFium 再保存コピーをハッシュせず、デフォルトでオフラインのキャッシュのみの証明書取得を行い、利用できないネイティブ信頼または失効エビデンスを有効として扱う代わりに、サポート外または不確定の状態を報告します
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.24.0 を一貫して報告するようになりました
Version 3.23.0
追加 (Added)
TPdf.RenewPadesArchiveTimestampとRenewPadesArchiveTimestampToStreamは、既存の PAdES 署名チェーンに新しい RFC 3161 Document Time-stamp を、履歴バイトを一切変更せずに追加しますTPadesArchiveTimestampOptionsは TSA アクセス、ノンス、予約トークン容量、オプションの完全 DSS リフレッシュを制御し、TPadesArchiveTimestampReportはソースと結果のレベル、チェーン長、バイト長、返されたタイムスタンプ識別情報を記録します
修正 (Fixed)
- 新規および更新された PAdES B-LTA 出力は ESIC ExtensionLevel 2 を宣言し、B-LT 検証は Document Time-stamp が存在しない限り Level 2 を要求しなくなりました
セキュリティ (Security)
- 更新処理は正確な元のロード済みバイトと要求された DSS 更新をハッシュし、暗号化または不完全なソースを拒否し、出力書き込みの前に検出可能な B-LTA 結果を検証し、置換の前にファイル出力をステージングします
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.23.0 を一貫して報告するようになりました
Version 3.22.0
追加 (Added)
TPdf.AnalyzeSignatureRevisionsは、元の増分リビジョンチェーンを再構築し、DocMDP と FieldMDP 権限に対して分類された署名ごとのオブジェクト変更を返しますTPadesRevisionAnalysisReportは、許可されたフォーム、注釈、署名、検証マテリアル更新を、許可されないページやドキュメント変更、未解決ケース、不審なシャドー定義と区別します
セキュリティ (Security)
- リビジョン分析は、参照されないオブジェクト定義、署名オブジェクトの再定義、アクティブコンテンツ、不正なリビジョンチェーン、未解決の圧縮オブジェクトを検出し、上限付きのリビジョン、オブジェクト、変更予算を強制します
- 分析は常に、PDFium によって書き換えられたバイトではなく、元のロード済みファイル、メモリバッファ、カスタムストリーム、完了したプログレッシブソースを使用します
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.22.0 を一貫して報告するようになりました
Version 3.21.0
追加 (Added)
TPdf.PreparePadesRemoteSignatureは、固定幅の分離署名プレースホルダーを作成し、SHA-256 ドキュメントダイジェスト、正確なByteRange、予約座標、準備済み PDF フィンガープリントを含む永続リクエストを返しますTPdf.CompletePadesRemoteSignatureは、永続化されたリクエストと返された CMS を検証した後、HSM、クラウド、または中断された署名セッションを完了しますTPdf.SavePadesRemoteSigningRequestとTPdf.LoadPadesRemoteSigningRequestは、プロセスとマシンの境界をまたぐための安定したバージョン付きバイナリセッション形式を提供します
セキュリティ (Security)
- 完了処理は、変更された準備済み PDF、改変された
ByteRange座標、再利用された空でないプレースホルダー、過大な CMS 値、サポートされない SignedData 形状、欠落した signing-certificate-v2 属性、準備済みドキュメントと一致しない CMS メッセージダイジェストを拒否します TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.21.0 を一貫して報告するようになりました
Version 3.20.0
追加 (Added)
TPadesDssOptions.Vrisは、署名ごとに 1 つの間接/Type /VRI辞書を、パディングを含む完全にデコードされた/Contents値の大文字 SHA-1 をキーとして書き込みますTPadesDssVriは、検証済みインデックスを通じて証明書、OCSP、CRL マテリアルを選択し、PAdES B-LT と B-LTA 署名は新しい署名の VRI を自動的に作成するようになりました
変更 (Changed)
- DSS 証明書、OCSP レスポンス、CRL は、宛先バイトが書き込まれる前に、安定した初回出現順序、正確なバイトの衝突チェック、VRI 参照の再マッピングによってコンテンツハッシュで重複排除されます
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.20.0 を一貫して報告するようになりました
Version 3.19.0
追加 (Added)
TPdf.GetStructuredTextは、現在のページを再利用可能なブロック、行、スタイル付きスパンのレコードに変換し、ソース文字インデックス、Unicode スカラー、ジオメトリ、フォント名、サイズ、ウェイト、テキスト角度を保持しますTPdfStructuredTextOptionsは、コンテンツストリーム順または物理レイアウト順、オプションのフォントとセマンティックエンリッチメント、フェイルクローズドの最大文字予算を選択します- Tagged PDF とヒューリスティックな読み取り可能コンテンツフラグメントは、構造種別、見出しレベル、言語、ソース、構造要素識別情報でブロックをエンリッチし、一致しない Figure の代替テキストも表現されたままになります
変更 (Changed)
- 物理レイアウト抽出は、予測可能な大きなページのパフォーマンスのために、O(n log n) 文字順序付け、幾何的に成長する行とスパンのバッファ、行と列のクラスタリング、バッファ済み Unicode 構築、隣接する非 null テキストオブジェクトのフォントキャッシュを使用するようになりました
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.19.0 を一貫して報告するようになりました
Version 3.18.0
セキュリティ (Security)
TPdf.SaveAsRedactedは、分離されたドキュメントスナップショットにすべての/Redact矩形を適用し、交差する各トップレベルページオブジェクトを削除し、不透明な置換矩形を塗りつぶします。ロードされたドキュメントは変更されません- 墨消し出力は墨消し注釈を削除し、オプションで他の交差注釈を削除し、ネイティブの埋め込み添付ファイルを削除し、カタログの
/AF、アクティブコンテンツ、フォーム、メタデータ、到達不能な過去リビジョンのオブジェクトを取り除きます TPdfRedactionOptionsは置換色、重複注釈の削除、フェイルクローズドのページオブジェクトスキャン予算を制御し、TPdfRedactionReportはすべての削除と出力メトリックを記録しますTPdfSanitiseOptions.StripAssociatedFilesは、デフォルトでカタログレベルの関連ファイル参照を削除するようになりました
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.18.0 を一貫して報告するようになりました
Version 3.17.0
追加 (Added)
TPdf.RenderPagesParallelは、1 ベースのページリクエストを並行してレンダリングし、各ワーカーは 1 つのキャプチャされたドキュメントスナップショットからソースされた、独立してロードされた PDFium モジュール、ドキュメント、ページ状態を所有しますTPdfParallelRenderOptionsは、DPI、ワーカー数、回転、ネイティブレンダーフラグ、背景色、ページごとのピクセル上限、保持出力の集計上限を制御しますTPdfParallelRenderReportはリクエスト順序を保持し、ページごとの成功、キャンセル、失敗、寸法、タイミング、診断詳細とともに、呼び出し元所有のトップダウン BGRA または RGBA バッファを返します- プログレッシブワーカーレンダリングはネイティブチャンク間で
IPdfCancellationTokenをポーリングし、無効なリクエストと予算失敗は対応する結果に隔離されたままになります TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.17.0 を一貫して報告するようになりました
Version 3.16.0
追加 (Added)
TPdfEncryptionRevision.erR7は、/V 6、/R 7、/CFM /AESV4、必須の PDF 2.0 デベロッパー拡張を備えた ISO/TS 32003 AES-256-GCM 出力を追加します- 暗号化された各文字列とストリームは、一意の 96 ビット IV、長さ不変の暗号文、128 ビット認証タグを受け取り、
EncryptMetadata = Falseはメタデータストリームのバイトを保持します DecryptAesGcmDocumentBytesは、PDFium 互換の平文バイトを返す前に、ユーザーまたはオーナーパスワード、暗号化された権限、オプションのスタンドアロン PDF MAC データ、すべての GCM タグを検証します- AESV4 出力は
TPdfEncryptOptions.EnableIntegrityProtectionと組み合わせられるため、オブジェクトごとの GCM 認証とドキュメント全体の ISO/TS 32004 PDF MAC 保護が共存できます - 暗号化は、ストリームデータ内のオブジェクト形状のテキストを間接オブジェクトとして解釈する代わりに、有効なクラシック クロスリファレンスエントリを使用するようになりました
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.16.0 を一貫して報告するようになりました
Version 3.15.0
追加 (Added)
TPdfEncryptOptions.EnableIntegrityProtectionは、AES-256 Standard Security Handler リビジョン 5 および 6 のドキュメントに対して ISO/TS 32004 スタンドアロン PDF MAC 認証コードを書き込みますTPdf.ValidatePdfMacは、正確な元のソースバイト、EOF を厳密に網羅する/ByteRange、CMSAuthenticatedData、パスワード派生ファイル鍵、認証済み属性、ラップされた MAC 鍵、HMAC 値を検証しますFPdfHmacは HMAC-SHA256 と HKDF-SHA256 を追加し、FPdfAesは RFC 3394 AES-256 Key Wrap と認証付きアンラッププリミティブを追加しますTPdfMacValidationResultは、有効、不在、無効、サポート外の認証コードを診断テキスト付きで区別しますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.15.0 を一貫して報告するようになりました
Version 3.14.0
追加 (Added)
TPdf.ValidatePadesは、Windows 上で分離 CMS 署名を、署名済み属性と署名値を含む正確な元の/ByteRangeセグメントに対して検証するようになりましたTPadesValidationResultは、集計整合性ステータスと、署名ごとの ByteRange、CMS、signing-certificate-v2、システム信頼、失効、タイムスタンプ状態を、サポート外または未チェックのエビデンスを無効な署名と混同せずに公開します- 署名者証明書バインディングは SHA-256 でチェックされ、証明書チェーンはキャッシュのみの Windows システム信頼評価を使用し、ネイティブエラーコードは診断のために引き続き利用できます
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.14.0 を一貫して報告するようになりました
Version 3.13.1
修正 (Fixed)
TPdf.ValidatePadesは、オフセットを無効化したり署名辞書を破棄したりする可能性のある PDFium 再保存コピーの代わりに、元のファイル、バッファ済みメモリ、またはカスタムストリームのバイトを検査するようになりました- PAdES
/ByteRangeチェックは、以前の完全な PDF リビジョンとそれに続く有効な増分更新を網羅する署名を受け入れるようになり、Document Time-stamp の範囲も検証します TPadesValidationResult.SourceStatusは、元のソース検証を、利用不可または不完全なプログレッシブ入力と区別し、コンプライアンス述語は元のバイトがない結果を拒否しますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.13.1 を一貫して報告するようになりました
Version 3.13.0
追加 (Added)
FPdfSha3は、ISO/TS 32001 および関連する PDF 2.x 暗号処理のために、依存関係のない SHA3-256、SHA3-384、SHA3-512、SHAKE256 プリミティブを提供します- インクリメンタルコンテキストは任意に分割された入力を吸収し、SHAKE256 は繰り返しの squeeze 呼び出しとスポンジレート境界をまたぐ出力をサポートします
- ワンショットのバイト配列および小文字 16 進ヘルパーがストリーミング API を補完し、Delphi、C++Builder、Lazarus 全体で明示的なライフサイクルとサイズ検証を提供します
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.13.0 を一貫して報告するようになりました
Version 3.12.0
追加 (Added)
TPdf.ImportFDFは、ファイルまたはストリームから FDF フォームデータをインポートし、既存のウィジェットフィールドパスを通じて解析された値を適用しますFdfImportFromStreamとFdfImportFromFileは、直接または間接の階層フィールド、PDF リテラルおよび 16 進文字列、PDFDocEncoding、Unicode テキスト、名前値、明示的な空値を、上限付きリソース予算の下で解析します- FDF エクスポートは、非 ASCII フィールド名と値を規格準拠の UTF-16BE テキスト文字列として書き込み、ソースファイル名を安全にエスケープするようになりました
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.12.0 を一貫して報告するようになりました
Version 3.11.0
追加 (Added)
TPdf.DetectPageSkewは、現在のページを低 DPI でレンダリングし、暗いピクセルを候補回転角に射影して傾き角を検出し、行和分散(テキスト行の整列)を最大化する角を約 0.1 度の精度で返しますTPdfSkewReportは、検出された角度、信頼度、サンプル寸法を公開しますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.11.0 を一貫して報告するようになりました
Version 3.10.0
追加 (Added)
TPdf.GetTextInReadingOrderは、FPDFText_GetCharBox+ 位置ソート済み文字抽出を通じて、現在のページのテキストを生のコンテンツストリーム順または物理レイアウト順(上から下、左から右)で抽出するため、多段組みや視覚的に並べ替えられたテキストが自然に読めますTPdfReadingOrder列挙型はroContentOrderとroPhysicalLayoutのいずれかを選択しますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.10.0 を一貫して報告するようになりました
Version 3.09.0
追加 (Added)
TPdfImageOptimizeOptions.PreserveBilevelは、OptimizeImagesの実行中に 1 ビットバイレベル画像(ImageMask / 線画スキャン)をスキップし、最近隣接ダウンサンプリングがその鮮明なエッジを破壊しないようにしますTPdfImageOptimizeOptions.MinDimensionは、しきい値より小さい画像(通常、それ以上の縮小の恩恵を受けないアイコンや装飾要素)をスキップしますTPdfImageOptimizeOptions.Defaultは、推奨される出発点(150 DPI ターゲット、1.5 比率、バイレベル保持、最小寸法 8)を提供しますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.09.0 を一貫して報告するようになりました
Version 3.08.0
追加 (Added)
TPdfTileCacheは、ドキュメントリビジョン、ページ、ズーム、回転、レンダーフラグ、デバイス矩形をキーとする、レンダリング済みページタイルの上限付き LRU キャッシュを提供します。これにより、再描画時に変更のないタイルが再レンダリングされず、以前の保存による古いタイルは自動的に破棄されますTTileKeyは、静的CreateファクトリとEquals比較子付きの複合キャッシュキーを公開しますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.08.0 を一貫して報告するようになりました
Version 3.07.0
追加 (Added)
TPdf.GetAnnotationFontColorとTPdf.SetAnnotationFontColorは、以前バインド済みで未使用だったFPDFAnnot_GetFontColorとFPDFAnnot_SetFontColorをラップし、注釈辞書に直接触れることなくフォームフィールド編集のためのウィジェットテキスト色の読み書きを公開しますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.07.0 を一貫して報告するようになりました
Version 3.06.0
追加 (Added)
TPdf.RenderPageBandedは、コールバックを介して現在のページを水平バンドでレンダリングするため、ポスターおよび工学ページを宛先ビットマップ全体を割り当てることなくエクスポートできます。各バンドは要求されたバンド高さの新しく作成されたTBitmapにレンダリングされ、コールバック復帰後に解放されますTPdfBandCallbackは、バンドごとの契約(バンドインデックス、上端 y オフセット、ビットマップ)を公開し、Boolean 戻り値で呼び出し元がバンドレンダリングを早期キャンセルできますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.06.0 を一貫して報告するようになりました
Version 3.05.0
追加 (Added)
TPdf.RenderPageProgressiveWithColorSchemeは、FPDF_RenderPageBitmapWithColorScheme_Startを通じてロービジョン配色でネイティブプログレッシブレンダリングループを駆動し、キャンセル対応の Continue ループを維持しながら、アクセシビリティのためにパスの塗り/輪郭とテキストの塗り/輪郭の色を呼び出し元がオーバーライドできるようにしますTPdfColorSchemeは 4 つのTColorオーバーライドフィールドを公開し、すべてのフィールドがclDefaultの場合に PDFium 内蔵の色へ委譲するDefaultを備えますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.05.0 を一貫して報告するようになりました
Version 3.04.0
追加 (Added)
TPdf.ExportFDFは、既存の XFDF パスに加えてフォームフィールド値を FDF(ISO 32000-1 §12.7.11)ドキュメントとしてシリアライズし、同じTXfdfFieldデータモデルを再利用するため、呼び出し元はフィールドを 1 回収集するだけでどちらの形式でも出力できますFPdfXfdfのFdfExportToStreamとFdfExportToFileは、ロード済みTPdfとは独立してフィールドコレクションを構築する呼び出し元のために、低レベル FDF シリアライザを公開しますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.04.0 を一貫して報告するようになりました
Version 3.03.0
追加 (Added)
TPdf.SaveAsSanitisedは、カタログからアクティブコンテンツ(/OpenAction、カタログ/AA、/Names、/AcroForm、/Metadata)を取り除いたクリーンな単一リビジョンコピーを書き込み、その後 到達不能オブジェクトを刈り込み、孤立した JavaScript、アクション、添付本体がファイル本体から消えるようにしますTPdfSanitiseOptionsはベクトルごとの独立したストリップ制御とオプションの到達可能性刈り込みパスを公開し、TPdfSanitiseReportはストリップされたエントリ数、刈り込まれたオブジェクト数、バイト数、エラーを記録しますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.03.0 を一貫して報告するようになりました
Version 3.02.0
追加 (Added)
TPdf.SaveAsPageLabelledは、カタログの/PageLabels番号ツリーを指定された範囲で置き換えた完全な PDF コピーを書き込み、ISO 32000-1 §12.4.2 に従い、10 進、大文字/小文字のローマ数字、大文字/小文字の英字の番号付けスタイルを、オプションのプレフィックステキスト文字列と開始番号付きで適用しますTPdfPageLabelRange、TPdfPageLabelRanges、TPdfPageLabelStyle、TPdfPageLabelReportは、範囲モデル、スタイル列挙型、保存ごとのバイト/範囲カウントを公開します- 既存のカタログ
/PageLabelsエントリは検出されて拒否され、ReplaceExisting=Trueが渡された場合のみ、古いエントリが取り除かれてから新しい範囲が注入されます TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.02.0 を一貫して報告するようになりました
Version 3.01.0
追加 (Added)
TPdf.FlattenPageRotationは、各ページの現在の/Rotateをコンテンツストリーム、ページボックス、注釈矩形に焼き込み、その後/Rotateを 0 にリセットします。FPDFPageObj_TransformF+FPDFAnnot_GetRect/SetRect+FPDFPage_SetMediaBox/SetCropBox+FPDFPage_SetRotationをラップし、回転表示ヒントに依存せずに視覚レイアウトを保持しますTPdfFlattenRotationOptionsはページごとの注釈変換、ページボックススワップ、自動更新の制御を公開し、TPdfFlattenRotationReportは処理済み、スキップ、失敗ページと変換されたオブジェクトと注釈の合計を記録しますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.01.0 を一貫して報告するようになりました
Version 3.00.0
追加 (Added)
TPdf.StampPagesFromPdfは、ソースページを配置・スケール・オプション回転付きの Form XObject オーバーレイまたはアンダーレイとして 1 つ以上のターゲットページにスタンプし、CreateXObjectFromPage+FPDFPageObj_SetMatrix+FPDFPageObj_SetBlendMode+FPDFPage_InsertObjectAtIndexを、明示的なページボックス、アンカー、マージン、スケール、回転、ブレンド、z-order ポリシー付きでラップしますTPdfOverlayOptionsとTPdfOverlayReportは、配置、変換、ブレンド、z-order の制御に加えて、ページごとのスタンプ、失敗、スキップカウントを公開しますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 3.00.0 を一貫して報告するようになりました
Version 2.99.0
追加 (Added)
TPdf.RefreshAppearanceは、FPDFAnnot_SetAPを通じて単一ウィジェットの外観ストリームを選択的に再生成し、ページ全体のNeedAppearances再構築を回避しますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.99.0 を一貫して報告するようになりました
Version 2.98.0
追加 (Added)
TPdfView.MouseDownは、右ボタンイベントをFORM_OnRButtonDownを通じてネイティブフォームフィルエンジンにルーティングするようになり、右クリックでのコンテキストメニューとウィジェット操作が可能になりました- ルートマップ項目 78(リンク注釈マッピング)、82(ウィジェット表示)、83(構造属性モデル)は、既存のインフラストラクチャを通じてすでに完了していることが確認されました
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.98.0 を一貫して報告するようになりました
Version 2.97.0
追加 (Added)
TPdf.SetDeterministicTimeとTPdf.RestoreActualTimeは、テストと再現可能ビルドが、サポートされるネイティブコールバックを通じて固定された作成、変更、現在時刻を注入できるようにしますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.97.0 を一貫して報告するようになりました
Version 2.96.0
追加 (Added)
TPdf.GetWidgetAdditionalActionJavaScriptは、FPDFAnnot_GetFormAdditionalActionJavaScriptを通じて、指定されたイベントトリガのウィジェット追加アクション JavaScript を、スクリプトを実行せずに読み取りますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.96.0 を一貫して報告するようになりました
Version 2.95.0
追加 (Added)
TPdf.GetObjectTextは、正確なコンテンツ編集とエンコーディング診断のために、FPDFTextObj_GetTextを通じてテキストページオブジェクトの Unicode テキストを抽出しますTPdf.GetObjectsByTypeは、カテゴリ(テキスト、パス、画像、フォーム、シェーディング)に一致するすべてのページオブジェクトのインデックスを返し、カテゴリ選択出力を可能にしますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.95.0 を一貫して報告するようになりました
Version 2.94.0
追加 (Added)
TPdf.AttachmentHasKey、GetAttachmentStringValue、SetAttachmentStringValueは、埋め込み添付ファイルのカスタムファイル仕様拡張値の読み取り、書き込み、存在確認を行いますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.94.0 を一貫して報告するようになりました
Version 2.93.0
追加 (Added)
TPdf.InsertObjectAtIndexは、常に末尾へ追加する代わりに、FPDFPage_InsertObjectAtIndexを介して要求されたスタック位置にページオブジェクトを挿入しますTPdf.UpdateAnnotationObjectは、FPDFAnnot_UpdateObjectを通じて編集された注釈外観オブジェクトをコミットし、注釈が所有するページオブジェクトへの変更が確実に永続化されますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.93.0 を一貫して報告するようになりました
Version 2.92.0
追加 (Added)
TPdf.InsertClipPathは、矩形クリップパスを作成し、ネイティブのFPDF_CreateClipPathとFPDFPage_InsertClipPathのパスを通じて現在のページに挿入します。既存のPageObjectClipPathインスペクタを補完しますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.92.0 を一貫して報告するようになりました
Version 2.91.0
追加 (Added)
TPdf.GetPageComplexityは、現在のページをスキャンし、画像、パス、テキストオブジェクト数に加えて、パスセグメント総数、画像ピクセル総数、透明度の有無をレンダリング計画のために報告しますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.91.0 を一貫して報告するようになりました
Version 2.90.0
追加 (Added)
TPdf.IsAnnotationSubtypeSupportedは、編集の前に、ロードされた PDFium DLL がサポートする注釈サブタイプを問い合わせますTPdf.ChooseRenderFlagsは、最終スケールと宛先サイズからネイティブレンダーフラグ(ハーフトーン、制限付き画像キャッシュ)を選択し、適応的画像サブサンプリングを行いますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.90.0 を一貫して報告するようになりました
Version 2.89.0
追加 (Added)
TPdf.GetTextRenderModeは、オーサリング診断のために、テキストページオブジェクトのネイティブテキストレンダリングモード(塗り、輪郭、クリップ)を公開しますTPdf.GetTextObjectRenderedBitmapは、ネイティブのFPDFTextObj_GetRenderedBitmapパスを通じて、単一テキストオブジェクトを分離されたビットマップにレンダリングしますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.89.0 を一貫して報告するようになりました
Version 2.88.0
追加 (Added)
TPdf.GetThumbnailは、ページに埋め込みサムネイルがない場合に代替をレンダリングするようになり、埋め込みサムネイル優先の選好を実装しましたTPdf.LinkAtPointは、矩形のみのスキャンの代わりにFPDFLink_GetLinkAtPointを使用して、ページ空間座標にネイティブリンクが存在するかどうかを返しますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.88.0 を一貫して報告するようになりました
Version 2.87.0
追加 (Added)
TPdf.AuditActiveContentは、スクリプトやアクションを一切実行せずに、JavaScript アクション数、埋め込みファイル数、署名数、XFA フォーム種別、ドキュメント権限のTPdfActiveContentAuditスナップショットを返しますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.87.0 を一貫して報告するようになりました
Version 2.86.0
追加 (Added)
TPdf.GetFeatureInventoryは、全ページを 1 回スキャンし、テキスト、パス、画像、Form XObject、シェーディングオブジェクト数の統一レコードを、添付、署名、フォーム種別、権限、PDF バージョンのファクトとともに返しますTPdfFeatureInventoryは、以前は個別のプロパティ呼び出しを必要としたドキュメント全体のファクトを単一スナップショットに集約しますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.86.0 を一貫して報告するようになりました
Version 2.85.0
追加 (Added)
TPdf.SaveAsReproducibleは、同じメモリ上の状態からの 2 回の保存がバイト同一の出力を生成するようにドキュメントを書き換えます- 非決定的な
/Infoタイムスタンプ(/CreationDate、/ModDate)は取り除かれ、(ウォールクロック依存バイトから派生する)ソース/IDは省略される一方、オブジェクト順序と世代は安定したままです TPdfReproducibleReportは、保持および刈り込み済みオブジェクト数と、取り除かれたタイムスタンプエントリ数を報告しますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.85.0 を一貫して報告するようになりました
Version 2.84.0
追加 (Added)
TPdf.SaveAsInlineImagesExternalisedは、すべてのBI/ID/EIインライン画像を再利用可能な画像 XObject として抽出し、インラインブロックを/ImN Doオペレータで置き換えるようにドキュメントを書き換えます- インライン画像辞書の省略形(
/W、/H、/BPC、/CS、/F、カラースペース値、フィルタ値)は完全な画像 XObject 名に展開されるため、抽出されたオブジェクトは規格準拠になります - ページの
/Resources /XObject辞書は新しい XObject 参照で更新され、書き換えられたコンテンツストリームは Flate 圧縮されます TPdfInlineImageExternaliseReportは、外部化、スキップ、失敗のカウントと作成された XObject 数を報告しますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.84.0 を一貫して報告するようになりました
Version 2.83.0
追加 (Added)
TPdf.SaveAsFlateRecompressedは、ドキュメントを書き換え、対象となるFlateDecodeストリームを最大圧縮で再エンコードし、測定されたバイト節約が呼び出し元のしきい値を超えた場合にのみストリームを置き換えますTPdfFlateRecompressOptionsは最小節約バイト数と最小節約比率を選択し、すでに最適なストリームはそのまま残されますTPdfFlateRecompressReportは、再圧縮、スキップ、失敗したストリーム数と、元および再圧縮後のストリームバイト総数を報告します- オブジェクト番号と世代は安定しており、再圧縮されたストリームペイロードとその直接の
/Length値のみが変わるため、残存するすべてのクロスリファレンスは有効なままです TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.83.0 を一貫して報告するようになりました
Version 2.82.0
追加 (Added)
TPdf.OptimizeImagesは、すべてのページ画像オブジェクトを走査し、実効配置 DPI が呼び出し元が選択したターゲットを超えるものをダウンサンプリングしてから、ネイティブコンテンツジェネレータを通じて変更された各ページをコミットしますTPdfImageOptimizeOptionsはターゲット DPI と最小比率を選択し、本当にオーバーサンプリングされた画像のみが再エンコードされますTPdfImageOptimizeReportは、最適化、スキップ、失敗した画像数を構造化された失敗メッセージとともに報告します- ダウンサンプリングはネイティブ PDFium ビットマップバッファに対する最近隣接パスを使用してソース形式、ストライド、アルファチャネルを保持し、
FPDFImageObj_SetBitmapが残存画像を再エンコードします TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.82.0 を一貫して報告するようになりました
Version 2.81.0
追加 (Added)
TPdf.SaveAsDeduplicatedは、互換性のあるフォント、画像、Form XObject を 1 つの共有代表に統合した、クリーンな単一リビジョンとしてドキュメントを書き換えます- 再帰的コンテンツフィンガープリントは、各リソース辞書、その完全に到達可能なサブグラフ、生ストリームペイロードを組み合わせるため、重複はコンテンツ全体が同一の場合にのみ統合されます
- 統合によって削除された重複へのすべてのクロスリファレンスは残存代表に書き換えられ、再構築されたクラシック クロスリファレンステーブルはオブジェクト番号を安定に保ちます
TPdfDedupReportは、保持および刈り込み済みオブジェクト数と、カテゴリごとの統合されたフォント、画像、Form XObject 数を報告しますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.81.0 を一貫して報告するようになりました
Version 2.80.0
追加 (Added)
TPdf.SaveAsReachableは、カタログとトレーラの /Info 辞書から到達可能な間接オブジェクトのみを保持する、クリーンな単一リビジョンとしてドキュメントを書き換えますTPdfPruneReportは、保持および刈り込み済み間接オブジェクト数を、ソースと出力のバイトサイズ、暗号化または不正入力に対する構造化失敗理由とともに報告します- 増分更新、ページ結合、修復保存によって残された到達不能な孤立オブジェクトは一掃され、再構築されたクラシック クロスリファレンスとトレーラは
/Root、/Info、/IDを再番号付けせずに保持します TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.80.0 を一貫して報告するようになりました
Version 2.79.0
追加 (Added)
TPdf.CreateDocumentSearchは、ドキュメント全体のテキストインデックスを構築せずに、一致を 1 件ずつ返す前方または後方のドキュメント全体検索を作成しますTPdfDocumentSearchResultは、結果ごとに 1 ベースのページ、文字範囲、一致テキスト、ページ空間矩形を報告します- 検索セッションは
IPdfCancellationTokenを受け入れ、現在の PDFium ページとテキストハンドルのみを保持し、ドキュメントが閉じられると安全に終了します TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.79.0 を一貫して報告するようになりました
Version 2.78.0
変更 (Changed)
TPdfRangeRequestSchedulerは、重複する低優先度転送を先取りするようになり、ページに致命的な PDFium ヒントがバックグラウンドダウンロードの後ろで待機しなくなりました- 外部から利用可能なスパースバイトは冗長なアクティブ転送をキャンセルし、置き換えられたまたは重複するトランスポートコールバックは、古いカバレッジを公開せずに False を返します
- 優先度昇格は独立した再試行履歴を保持し、トランスポートの先取りは影響を受けない範囲末尾の再試行予算を消費しなくなりました
TPdfRangeRequestStatistics.SupersededRequestCountは、より高優先度のヒントまたは外部供給カバレッジによって置き換えられたトランスポート作業を報告しますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.78.0 を一貫して報告するようになりました
Version 2.77.0
追加 (Added)
TPdf.SaveAsNormalizedContentは、構文正規化されたページコンテンツをストリームまたはアトミック置換ファイルに書き込み、正規化、スキップ、統合されたページ数を報告しますNormalizePdfContentSequenceは、デコード済みコンテンツストリームシーケンスに対する上限付きスタンドアロンのトークン正規化を提供します
変更 (Changed)
- ページの
/Contents配列は、文字列、名前、インライン画像ペイロード、未知のオペレータ、ストリーム間グラフィックス状態を保持しながら、1 つのストリームに統合できるようになりました - 不正なトークン、不均衡な状態スコープ、サポートされないフィルタ、暗号化入力、署名済みドキュメントの書き換えには、明示的なポリシーと構造化ステータス報告があります
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.77.0 を一貫して報告するようになりました
Version 2.76.0
追加 (Added)
TPdfStreamInspectorは、任意の物理 PDF ストリームオブジェクトを調査し、オブジェクトオフセット、生の長さ、フィルタチェーン、DecodeParms、外部ファイルマーカー、暗号化状態、ネイティブ画像または添付パスを報告しますCopyRawDataは完全なエンコード済みペイロードまたは検証済みバイトウィンドウをコピーし、DecodeDataは ASCIIHex、ASCII85、LZW、Flate、RunLength、TIFF 8 ビット、PNG の各プリディクタを宣言順に適用しますTPdfStreamInspectOptionsは、ソース、生、デコード済み、辞書、ストリーム数、展開比率の各リソースに上限を設け、制限、不正データ、サポートされないコーデック、暗号化、書き込み失敗に対する構造化レポートを提供します
変更 (Changed)
- ストリーム長の解決は、直接および間接の
/Length値に対する正確なスパンを、長さゼロのストリームとリテラルendstreamシーケンスを含むペイロードを含めて公開するようになりました TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.76.0 を一貫して報告するようになりました
Version 2.75.0
追加 (Added)
TPdfLoadOptionsは、ファイル、メモリ、バイト範囲、カスタムストリームのロードに、互換、厳密、リカバリの各ポリシーを追加しますTPdfLoadReportは、クラシック、ハイブリッド、xref ストリームの各ドキュメントに対して、ネイティブリカバリ経路、xref 有効性、損傷オフセット、エントリ競合、リビジョン数、監査予算、構造化問題を報告しますTPdf.SaveAsRepairedは、完全な単一リビジョンコピーを作成し、検証済みストリームを配信したりターゲットファイルをアトミックに置き換えたりする前に、独立して厳密ロードします
変更 (Changed)
- 既存のロードオーバーロードは互換動作を維持しつつ、
LastLoadReportを通じてネイティブ xref 有効性とリカバリステータスを公開するようになりました - 厳密ロードは、ネイティブ xref 再構築を必要とした、または構造監査に失敗したドキュメントを拒否し、署名済みドキュメントの修復出力には明示的な呼び出し元承認が必要です
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.75.0 を一貫して報告するようになりました
Version 2.74.0
追加 (Added)
TPdf.MergeFilesは、ソースごとのページ範囲とパスワード付きのファイルベースのソースリストを、同時に開くソースドキュメントを最大 1 つに保ちながら結合しますTPdfBatchMergeOptionsは、停止またはスキップのエラー処理、ソース単位またはチャンク単位のインポート、フォームとアウトラインのポリシー、挿入制御、進捗コールバック、キャンセル、ビューア設定のコピー、ロールバック制御を追加しますTPdfBatchMergeReportは、コミットおよびロールバックされたページ、ソース結果、ネイティブインポート呼び出し、最大バッチ、ピーク同時オープンソース、ポリシー検出、問題、最終ステータスを報告します
変更 (Changed)
- デフォルトのバッチパスはソースごとに 1 回のネイティブページインポートを実行するため、PDFium はそのソース全体でクローンされたオブジェクトを再利用でき、次のファイルを開く前にソースを閉じます
- チャンクモードはより細かいキャンセルポイントとより小さなネイティブバッチを提供し、部分的に失敗したソースや停止・キャンセルの結果は、操作によって挿入されたすべてのページを削除できます
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.74.0 を一貫して報告するようになりました
Version 2.73.0
追加 (Added)
TPdfRandomAccessStoreはスレッドセーフな逐次および位置指定 I/O を提供し、小さなコンテンツを上限付きメモリに保持し、呼び出し元が選択した上限でプライベート一時ストレージに 1 回だけスピルしますTPdf.SaveMemoryLimitとSaveTemporaryDirectoryは保存ステージングを構成し、LastSaveSpillCountとLastSaveLargestMemoryBufferは測定可能な保存ごとの診断を公開します
変更 (Changed)
- 保存、規格変換、検証、暗号化、DSS、PAdES のステージングバッファは、クローズ時削除の排他スピルファイルとメモリスクラビングを備えた上限付き作業ストレージを共有するようになりました
TPdfRandomAccessStoreに支えられたカスタム PDFium ブロックコールバックは、通常のストリームシークを直列化し、カーソル非依存の位置指定読み取りを使用します- ファイルベースの XFA ケイパビリティスキャンは、PDF 全体をメモリにコピーする代わりに、固定サイズの重複ブロックを読み取るようになりました
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.73.0 を一貫して報告するようになりました
Version 2.72.0
追加 (Added)
TPdf.BeginIncrementalSave、CommitIncrementalSave、EndIncrementalSaveは、変更されたまたは新規作成された間接オブジェクトのみを追加するリビジョンセッションを提供しますTPdfIncrementalCommitInfoは、各コミットの変更オブジェクト数、追加バイト数、合計出力バイト数、成功したリビジョン数を報告します
変更 (Changed)
- 各ダーティコミットは完全な以前の出力を正確なバイトプレフィックスとして保持し、変更がない場合はリビジョンを発行せず、ソースのクラシックまたは xref ストリーム形式を継続します
- ネイティブ xref ストリームの増分出力は、さらなる処理の前に、必須の型、自己エントリ、長さ、インデックス、オブジェクト終端で修復されます
- 暗号化されたドキュメントはセッション開始前に拒否され、署名済みドキュメントは明示的な呼び出し元許可を必要とするため、署名ポリシーが誤ってバイパスされることはありません
- ファイルオーバーロードは、宛先をアトミックに置き換える前に兄弟一時ファイルを完了し、書き込みまたは置換の失敗後にセッション状態をロールバックします
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.72.0 を一貫して報告するようになりました
Version 2.71.0
追加 (Added)
TPdf.SaveAsObjectStreamは、上限付き圧縮オブジェクトグループと完全なタイプ 2 エントリを含む純粋な xref ストリームを備えた PDF 1.5 以降のファイルを書き込みますPackPdfObjectStreamsは、アクティブなリビジョンを解決した後、クラシック、ハイブリッド、xref ストリーム、既存のオブジェクトストリーム入力をモダン化できます
変更 (Changed)
- ページローカルのオブジェクト順序付け、適応的 xref フィールド幅、直接カタログアクセス、構成可能なメンバーおよびデコード済みバイト上限が、ファイルサイズとランダムアクセス性能のバランスを取ります
- ファイルオーバーロードは、宛先をアトミックに置き換える前に兄弟一時ファイルを完了し、無効な増分、バージョン、グループ化オプションは出力開始前に拒否されます
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.71.0 を一貫して報告するようになりました
Version 2.70.0
追加 (Added)
TPdf.SaveAsLinearizedは、先頭ページのオブジェクトグループ化、2 つのクロスリファレンスセクション、Annex F のページオフセットおよび共有オブジェクトヒントテーブルを使用して、真の Fast Web View PDF をストリームまたはファイルに書き込みます- アクティブなオブジェクトストリームメンバーは自動的に具体化され、xref ストリームおよびオブジェクトストリーム入力が、可視ページコンテンツを変更せずに範囲フレンドリな出力になることを可能にします
変更 (Changed)
- ファイルオーバーロードは、宛先をアトミックに置き換える前に兄弟一時ファイルを完了し、ストリームオーバーロードは通常の PDFium 保存オプションと明示的なバージョンチェックを維持します
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.70.0 を一貫して報告するようになりました
Version 2.69.0
追加 (Added)
TPdfRangeRequestSchedulerは、PDFium のバイト範囲ヒントを、連続ダウンロードを強制せずに、優先度付けされ統合されサイズ上限付きのトランスポート作業に変換します- 完全および部分完了、上限付き再試行、スパース可用性の重複排除、リクエスト統計、世代セーフなキャンセルが、HTTP Range およびカスタムトランスポートパイプラインをサポートします
TPdfProgressiveDocument.RangeRequestsはドキュメント、フォーム、ページのヒントを自動的に受信し、対話ページをブロックしている正確なバイトのみを昇格します
変更 (Changed)
CancelProgressiveLoadは、ネイティブ可用性およびストリームの破棄の前にアクティブな範囲作業をキャンセルするようになり、古いトランスポート完了は安全に無視されますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.69.0 を一貫して報告するようになりました
Version 2.68.0
追加 (Added)
TPdfProgressiveDocumentは、リモートまたは成長中のランダムアクセスストリームが PDFium の要求するバイト範囲を受信している間、PDFium の可用性セッションを存続させますCheckDocumentAvailability、CheckFormAvailability、LoadAvailablePageはマージされたTPdfDownloadRangeヒントを返すため、ホストは線形化ページを開いて表示するために必要なデータのみを取得できますAvailableByteCountは単調な連続ダウンロードをサポートし、OnDataAvailableはスパースおよび順不同の範囲キャッシュをサポートします
変更 (Changed)
- 線形化ファイルは PDFium のネイティブプログレッシブドキュメント、フォーム、ページゲートを使用し、非線形化ファイルは完全なファイルが揃った後、ネイティブのカスタムストリームローダーに自動的に切り替わります
TPdfStreamAdapterは、現在保存されているバイト数と異なる論理最終サイズを公開でき、明示的な 4 GiBFPDF_FILEACCESS上限を保持しますTPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.68.0 を一貫して報告するようになりました
Version 2.67.0
追加 (Added)
TPdfView.AllowFormEventsは、ビューアがフォームフィルレイヤーに転送するマウス、キーボード、フォーカスの各イベントをオフにし、読み取り専用ビューアやフォーム操作を自身で駆動するビューアに対応します- オフにしてもフォームフィールドは通常どおりレンダリングされます。ページのロードとクローズは意図的にゲート対象外のままです。これらは入力に反応するのではなくフォームレイヤーを初期化するためです
- このスイッチは既存の
AllowUserPageChangeおよびAllowUserTextSelectionトグルに加わり、デフォルトは True のため、既存の動作は変更されません
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.67.0 を一貫して報告するようになりました
Version 2.66.0
追加 (Added)
- ドキュメントが発生させる名前付きアクション(ISO 32000-1 §12.6.4.11)が、新しい
OnNamedActionイベントを通じてホストに届くようになりました。以前はすべて破棄されていました - 未処理の場合、4 つの標準ナビゲーション名
NextPage、PrevPage、FirstPage、LastPageがページを移動し、周回せずに先頭と末尾でクランプします TPdf.PerformNamedActionはアプリケーションが同じ動作を直接トリガできるようにし、ライブラリ提供の意味を持たない名前に対しては False を返します
修正 (Fixed)
- ある暗号化テストが
endstreamから後方スキャンでストリーム本体を測定しており、まれに暗号文バイトを行終端と誤認して断続的な失敗を報告していました。ライブラリ自体は終始正しいものでした
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.66.0 を一貫して報告するようになりました
Version 2.65.0
追加 (Added)
BuildToUnicodeCMapは、CID フォントが必要とする ToUnicode CMap(ISO 32000-1 §9.10.3)を生成し、テキストのコピー、検索、支援技術による読み取りを可能にします。これがないと、テキストは正しくレンダリングされても抽出結果が空になります- エントリは規格が定めるブロックあたり 100 の上限でチャンク化され、重複グリフは 1 回だけ書き込まれ、
.notdefはスキップされます - CMap は CID = GID の規約に従うため、横に
CIDToGIDMapストリームは不要です
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.65.0 を一貫して報告するようになりました
Version 2.64.0
追加 (Added)
- インク注釈とスタンプ注釈は、ページコンテンツストリームではなく独自のページオブジェクトから自身を描画します。これらのオブジェクトが利用可能になりました。
AnnotationObjectCountとAnnotationObjectInfoがそれらを読み取り、AddPathToAnnotationがCreatePathで構築されたパスを注釈に渡し、RemoveAnnotationObjectが 1 つを削除します - スタンプの外観の構築に外部ツールは不要になりました。いつもどおりパスを作成し、ページではなく注釈に渡します
- PDFium がページオブジェクトを受け入れるのはインクとスタンプのサブタイプのみのため、他のサブタイプは、不可解な失敗ではなく制限を明示するメッセージ付きで拒否されます
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.64.0 を一貫して報告するようになりました
Version 2.63.0
追加 (Added)
TPdf.AddStandardFontTextは、すべての PDF リーダーに提供が義務付けられた 14 フォントのいずれかでテキストを描画し、フォントプログラムをまったく埋め込みません。結果のファイルは、見つかったシステムフェイスを埋め込むAddTextで同じテキストを描いた場合より明確に小さくなります- 新しい
TPdfStandardFont列挙型は 14 フェイスすべてに名前を付けるため、呼び出し元がベースフォント名を打ち間違えることはありません。PDFium はそれらの名前と正確に照合し、誤字は黙ってフォントなしにつながります - PDF/A と PDF/X はどちらもすべてのフォントの埋め込みを要求するため、それらのプロファイル向けの出力では引き続き
AddTextを使用してください
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.63.0 を一貫して報告するようになりました
Version 2.62.0
追加 (Added)
TPdf.TextObjectGlyphOutlineは、テキストからベクターアートへの変換や、フォント置換によって変更された可能性のあるグリフの検査のために、テキストオブジェクトのフォントの 1 グリフのアウトラインをパスセグメントとして返します- 結果は既存の
TPdfPathSegments型を再利用するため、描画されたパスオブジェクトのアウトラインとまったく同じように読み取れます - 座標はフォント独自のデザイン空間にあり、1 em が 1.0 になるように正規化されています。要求されたフォントサイズではスケールされないため、デバイス単位が必要な呼び出し元はポイントサイズ自身を掛けます
- 空の結果はフォントがそのグリフのアウトラインを公開していないことを意味し、エラーではありません。テキスト以外のオブジェクトのグリフを要求すると例外が発生します
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.62.0 を一貫して報告するようになりました
Version 2.61.0
追加 (Added)
TPdf.InspectAvailabilityは、PDF をドキュメントとしてロードせずに PDFium が判断できることを報告します。ファイルが線形化(「Web 最適化」)されているか、完全な解析が成功するか、フォームデータを持つか、ビューアが最初に表示するページがどれか- 新しい
TPdfAvailability、TPdfLinearization、TPdfFormAvailability型がその答えを運びます。ストリームは読み取られますが保持されず、位置は復帰時に復元されます - これにより、
FPDFAvail_*ファミリの最後のギャップが埋まりました。このファミリはバインドされロードされていましたが、ライブラリのどこからも呼び出されていませんでした - Delphi、Lazarus、C++Builder のそれぞれが、報告されるファクト、ストリーム位置の保証、nil ストリームの拒否をカバーします
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.61.0 を一貫して報告するようになりました
Version 2.60.0
追加 (Added)
- マーク付きコンテンツ(ISO 32000-1 §14.6)が高レベル API から利用可能になりました。
PageObjectMarksはページオブジェクトからすべての BDC タグとそのプロパティリストを読み取り、AddPageObjectMarkは 1 つを書き込み、RemovePageObjectMarkは 1 つを削除し、PageObjectMarkedContentIDは MCID を報告します - 新しい
TPdfContentMark、TPdfContentMarkParam、TPdfMarkParamKind型がタグ名とその型付きパラメータ(整数、浮動小数点、文字列、バイナリ)を運び、値の種別は成功したゲッターから推測されるのではなく PDFium から解決されます - マークの追加はページコンテンツストリームを再構築するため、タグは保存後も残ります。
SaveAsは単独ではコンテンツを再生成しないため、これは明示的に行う必要がありました - Delphi、Lazarus、C++Builder のそれぞれが 6 つのケースを持ち、保存されたコンテンツストリームを展開して BDC オペレータとそのプロパティリストが実際に配置されたことを確認するケースも含まれます
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.60.0 を一貫して報告するようになりました
Version 2.59.0
追加 (Added)
TPdfAnnotationにHasLinkUriとLinkUriが加わり、CreateAnnotationは機能する Web リンクを作成できるようになりました。注釈は指定されたアドレスを指す/URIアクション付きで保存されます- アクション辞書を持つのは Link 注釈のみのため、
anLink以外のサブタイプにリンク URI を設定すると例外が発生します - このフィールドは現時点で書き込み専用です。リンク先の読み取りは、ドキュメントハンドルを必要とする
FPDFLink_*ファミリを通じて行われます - Delphi、Lazarus、C++Builder のすべてが、保存されたバイトが
/URIアクションとターゲットアドレスを運ぶことを検証します
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.59.0 を一貫して報告するようになりました
Version 2.58.12
追加 (Added)
- PDF/X 検証は、ページが
/TrimBoxと/ArtBoxを同時に持つときにpvxiTrimBoxWithArtBoxを報告します。両方は完成ページを示すため、RIP にはどちらが権威かを知る術がありません(ISO 15930) - PDF/X 検証は、
/TrimBoxまたは/BleedBoxが/MediaBoxの外に出るとき、負の原点を持つボックスを含めてpvxiPageBoxOutsideMediaBoxを報告します。媒体を超えたボックスは画像化できません - 矩形は比較前に正規化されるため、どちらの角の順序も受け入れられ、媒体の端に正確に接するボックスも検証に合格します
- プリフライトレポートは両方の問題を構造に分類し、具体的な修正方法を示します
- Delphi、Lazarus、C++Builder のすべてが、拒否される 2 つのケースと適合するケースをカバーします
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.58.12 を一貫して報告するようになりました
Version 2.58.11
追加 (Added)
- PDF/UA 検証は、ドキュメントが TOCI エントリにタグを付けるのに、それらが属する TOC コンテナにタグを付けないときに
pvuaiTociWithoutTocを報告します。これでは支援技術が目次のない目次項目を読み上げることになります(ISO 14289-1 §7.7) - プリフライトレポートはこの問題を構造に分類し、エントリを TOC 要素で包むことを推奨します
- C++Builder に、Delphi および Lazarus のケースに加えて初めての PDF/UA テストカバレッジが追加されました
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.58.11 を一貫して報告するようになりました
Version 2.58.10
追加 (Added)
- PDF/A 検証は、シンボリック TrueType フォントが
/Encodingエントリを持つときにpvaiSymbolicTrueTypeEncodingを報告します。ISO 19005-1 §6.3.7 はフォント内蔵の cmap のみを許容するため、/Encodingはそれと矛盾します - シンボリックフラグは、フォント辞書にインラインで書かれているか間接的に参照されているかにかかわらず
/FontDescriptorから読み取られます。非シンボリックフォントは、必須の/WinAnsiEncodingまたは/MacRomanEncodingをフラグ付けされずに保持します - プリフライトレポートはこの問題をコンテンツに分類し、エントリの削除を推奨します
- Delphi と Lazarus はフラグされたケースと両方の受理ケースをカバーし、C++Builder はフラグされたケースと非シンボリックケースをカバーします
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.58.10 を一貫して報告するようになりました
Version 2.58.9
追加 (Added)
- PDF/A 検証は、ISO 19005-1 Annex C のコンテナ実装上限を報告します。127 バイトを超える名前には
pvaiNameOverLimit、8191 要素を超える配列にはpvaiArrayOverLimit、4095 エントリを超える辞書にはpvaiDictOverLimit、28 レベルを超えるネストにはpvaiNestingOverLimitです - 上限は包括的であるため、ちょうど上限に一致するコンテナも検証に合格します。テストは各境界の拒否側と受理側の両方を固定します
- プリフライトレポートは 4 つの問題を構造に分類し、各推奨事項で具体的な上限値を示します
- Delphi と Lazarus は 4 つの上限すべてと境界ケースをカバーし、C++Builder は配列上限と境界をカバーします
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.58.9 を一貫して報告するようになりました
Version 2.58.8
追加 (Added)
- PDF/R 検証は、画像数がページ数と一致しないときに
pvriPageImageMismatchを報告します。ISO 23504-1 §6.5.1 は各ページを正確に 1 つのストリップ画像とするため、ないページや複数あるページは不適合です - Delphi、Lazarus、C++Builder のテストは、画像のないページ、2 つの画像を持つページ、適合する 1 画像ケースをカバーします
変更 (Changed)
- PDF/R マーカー注入テストは、マーカー注入がメタデータを追加するだけでページコンテンツを供給できないため、ストリップ画像を既に持つソースページから開始するようになりました
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.58.8 を一貫して報告するようになりました
Version 2.58.7
追加 (Added)
- PDF/R 検証は、ページがフォントリソースを名指しするときに
pvriFontForbiddenを報告します。PDF/raster ページが運ぶのはスキャン画像だけです(ISO 23504-1 §6.5.2) - PDF/R 検証は、ホワイトリスト外のストリップエンコーディングに対して
pvriForbiddenImageFilterを報告します。/LZWDecode、/RunLengthDecode、/ASCII85Decode、/ASCIIHexDecode、/JBIG2Decode、/Cryptは拒否され、/CCITTFaxDecode、/DCTDecode、/JPXDecode、/FlateDecodeは合格します(ISO 23504-1 §6.6) - プリフライトレポートは両方の問題をコンテンツに分類し、具体的な修正方法を推奨します
- Delphi、Lazarus、C++Builder のテストは、フォントリソース、拒否されるフィルタ、ホワイトリスト内のエンコーディングのみを使用するページをカバーします
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.58.7 を一貫して報告するようになりました
Version 2.58.6
追加 (Added)
- PDF/E 検証は、ドキュメントがフォントの使用を示すのに埋め込みフォントプログラムを持たないときに
pveiFontNotEmbeddedを報告します。これにより、この要件は PDFium 経由に加えて DLL 不要パスでもチェックされます - 工学図面は数十年後にも同一にレンダリングされなければならないため、ISO 24517-1 は標準 14 フォントのいずれも免除しません。チェックは
/Type1、/TrueType、/Type0、/MMType1のすべてに等しく適用されます - プリフライトレポートは新しい問題をコンテンツに分類し、すべてのフォントプログラムの埋め込みを推奨します
- Delphi、Lazarus、C++Builder のテストは、プログラムのない記述子、埋め込み
/FontFile2、フォントをまったく使用しないドキュメントをカバーします
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.58.6 を一貫して報告するようになりました
Version 2.58.5
追加 (Added)
InjectPdfEMarkersは、ISO 24517-1 §6.2 が要求する出力インテントを書き込むようになりました。埋め込み sRGB ICC 宛先プロファイル、それを名指しする/GTS_PDFE1出力インテント、カタログの/OutputIntents配列のすべてを、同じ増分更新の一部として書き込みます- プロファイルストリームは 3 成分を前提とするのではなく、ICC ヘッダーから
/Nを導出するため、CMYK プロファイルも正しく記述されます - PDF/E 検証は
pveiMissingOutputIntentとpveiMissingIccProfileを報告するため、色条件が示されていない候補は受理されなくなりました - Delphi、Lazarus、C++Builder のテストは、受理される出力インテント、宛先プロファイルのないもの、出力インテントがまったくないカタログをカバーします
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.58.5 を一貫して報告するようになりました
Version 2.58.4
追加 (Added)
- PDF/X 検証は、バイトスキャンから
pvxiFontNotEmbeddedを報告するようになり、埋め込まれていないフォントが、PDFium ベースのチェックのみでなく DLL 不要パスでも検出されます - PDF/A とは異なり、PDF/X では標準 14 フォントが免除されないため、埋め込みフォントプログラムのないフォント使用はすべて報告されます
- チェックは保守的なままです。記述子とプログラムを数え合わせると共有記述子で誤検知が生じるため、ファイルがフォント使用を示すのに
/FontFile、/FontFile2、/FontFile3のいずれもまったく持たない場合にのみ発火します - Delphi、Lazarus、C++Builder のテストは、プログラムのない記述子、埋め込みプログラム、フォントを使用しないドキュメントをカバーします
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.58.4 を一貫して報告するようになりました
Version 2.58.3
追加 (Added)
- PDF/X 検証は、PDF/X-1a 候補が
/DeviceRGB、/CalRGB、/Labを持つときにpvxiColorSpaceForbiddenを報告するようになりました。ISO 15930-1 §6.2 はこれらを CMYK 交換から除外しています - チェックは PDF/X-1a のみにゲートされるため、PDF/X-3 以降は引き続き RGB と、出力インテントと組み合わせるデバイス非依存空間を許可します
- 検査対象は曖昧さのないカラースペース名トークンのみです。
ICCBasedストリームは/Nの解決が必要なため、オブジェクトモデルレイヤに残されます - Delphi、Lazarus、C++Builder のテストは、フラグされる RGB 空間、フラグされる Lab 空間、受理される CMYK とグレースケールの組、PDF/X-3 での許可ケースをカバーします
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.58.3 を一貫して報告するようになりました
Version 2.58.2
追加 (Added)
- PDF/X 検証は、透明グループまたはアクティブなソフトマスクに対して
pvxiTransparencyForbiddenを報告するようになりました。ISO 15930-1 §6.2(PDF/X-1a)と ISO 15930-3 §6.3(PDF/X-3)がこれを禁止しています - チェックは検出された適合レベルにゲートされるため、PDF/X-4 と PDF/X-6 は引き続き透明度を許可し、レベルを識別できなかったファイルが、適用され得ないルールでフラグされることはありません
/SMask /Noneで明示的にオフにされたソフトマスクは透明度として扱われませんPdfHasActiveSMaskはFPdfPdfaからFPdfPdfCommonインターフェイスに移動したため、すべてのバリデータが 1 つのソフトマスクルールを共有できます- Delphi、Lazarus、C++Builder のテストは、X-1a でフラグされるグループ、X-3 でフラグされるソフトマスク、無効化されたソフトマスク、X-4 での許可ケースをカバーします
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.58.2 を一貫して報告するようになりました
Version 2.58.1
追加 (Added)
- PDF/X 検証は、ISO 15930-7 §6.2.4 が要求する出力インテントの形状をチェックするようになりました。
pvxiOutputIntentSchemeはサブタイプが存在するのに/GTS_PDFXでない場合を報告し、pvxiOutputIntentMissingIdentifierは/OutputConditionIdentifierの欠落を報告します - サブタイプは名前トークン全体として照合されるため、
/GTS_PDFXVersionのような長い名前は合格しなくなり、同じ名前の#xxエスケープ表記は引き続き合格します - サブタイプをまったく持たない出力インテントはそのまま放置されます。その不在はすでにマーカーレベルの問題として報告されているためです
- プリフライトレポートは両方の問題を出力インテントカテゴリに分類し、修正を提案します
- Delphi、Lazarus、C++Builder のテストは、受理されるサブタイプ、PDF/A サブタイプ、より長い名前トークン、不在のサブタイプ、欠落した条件識別子をカバーします
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.58.1 を一貫して報告するようになりました
Version 2.58.0
変更 (Changed)
- PDFium が自身の C++ フレームから呼び出す 35 のコールバックすべて(フォームフィル、XFA、JavaScript プラットフォーム、プログレッシブレンダーの一時停止、ストリームの読み書き)が、Pascal 例外をすべて受け止め、言語境界を越えて巻き戻す代わりにドキュメントされた失敗値を返すようになりました
- その結果、例外を発生させるイベントハンドラ、失敗する割り当て、コールバック内の予期しないエラーがプロセスをダウンさせたり PDFium を未定義状態にしたりすることはなくなりました
修正 (Fixed)
- 基礎となるタイマーを作成できなかったとき、フォームタイマーの登録がエントリをリークしていました
追加 (Added)
- Delphi、Lazarus、C++Builder のテストは、書き込みを拒否する宛先ストリームへの保存をカバーし、その後もドキュメントが利用可能で保存可能なままになることを表明するようになりました
Version 2.57.8
修正 (Fixed)
- より古い Delphi リリース(XE5 以前)で、
FPdfPades.pas内のE2003 Undeclared identifier: 'GetTickCount64'によりトライアルライブラリのコンパイルが停止していました。これらのコンパイラ付属の Windows ユニットがこのシンボルをエクスポートしていないためです - 同じコンパイラは
PDFium.pasのGetUserDefaultLocaleNameとGetXfaFormPacketsのTBytesからarray of Byteへの代入でも失敗していました。XFA ロケールコールバックとパケットスナップショットがそれらのコンパイラでもビルドできるようになりました
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.57.8 を一貫して報告するようになりました
Version 2.57.7
変更 (Changed)
- 保存側のすべての書き換えは、巻き戻すだけでなく書き込み前に宛先ストリームを切り詰めるようになりました。これにより、より長いドキュメントを既に保持していた呼び出し元提供のバッファが、新しい
%%EOFの後ろに古い末尾を残すことはできなくなりました - Delphi、Lazarus、C++Builder のテストは、事前に埋められたストリームへの保存をカバーするようになりました
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.57.7 を一貫して報告するようになりました
Version 2.57.6
修正 (Fixed)
- 暗号化の前に行われるオブジェクトスキャンが任意の長さの数字列を受け入れていたため、ファイル内のどこかにある長い数値が負または偽のオブジェクト番号に折り返され、再構築されたクロスリファレンステーブルにファントムエントリを追加する可能性がありました
- ISO 32000-1 Annex C の上限を超えるオブジェクト番号と 65535 を超える世代は、切り詰められる代わりにオブジェクトヘッダとして拒否されるようになりました
追加 (Added)
- Delphi、Lazarus、C++Builder のテストは、再構築されたテーブルの使用中エントリ数の正確な値を表明するようになりました
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.57.6 を一貫して報告するようになりました
Version 2.57.5
修正 (Fixed)
EncryptMetadata = Falseでの暗号化は、Encrypt 辞書に/EncryptMetadata falseを書き込む一方でドキュメントのメタデータストリームを暗号化し続けていたため、その宣言に従うリーダーは読み取れない XMP に行き着いていました- メタデータ暗号化がオフのとき、
/Type /Metadataストリームは変更なくコピーされ、それ以外のすべてのストリームは引き続き暗号化されます
追加 (Added)
AnsiNameTokenMatchesKeyが、デリミタを認識する名前比較のためにFPdfPdfCommonインターフェイスの一部になりました- Delphi、Lazarus、C++Builder のテストは、両方のメタデータ暗号化モードをカバーするようになりました
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.57.5 を一貫して報告するようになりました
Version 2.57.4
修正 (Fixed)
- 暗号化中に再構築されるクロスリファレンステーブルが、ISO 32000-1 §7.5.4 が要求する必須のオブジェクト 0 フリーリスト先頭を省略していたため、最初のサブセクションが 1 オブジェクト遅れて始まっていました
- 再構築されたすべてのエントリが世代 0 を主張していました。より高い世代で書かれたオブジェクトはその世代を保持するようになり、テーブルが指すオブジェクトヘッダと一致します
追加 (Added)
- Delphi、Lazarus、C++Builder のテストは、再構築されたテーブルのフリーリスト先頭エントリと世代保持をカバーするようになりました
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.57.4 を一貫して報告するようになりました
Version 2.57.3
修正 (Fixed)
- 暗号化出力がすべてのストリームオブジェクトの
streamキーワードを落としていたため、保存されたファイルは有効な PDF 構文ではなくなり、厳密なリーダーはページコンテンツをストリームともストリームの配列とも報告していました /Lengthの書き換えが/Lengthを単純な部分文字列として照合していたため、/Length1を持つストリーム辞書(埋め込みフォントすべて)はキー名が破壊され、実際の長さは古いままになっていました/Length N 0 Rとして間接的に長さを示すストリームは、オブジェクト番号が新しい長さで上書きされていました。このエントリは直接の暗号化済み長さに置き換えられるようになりました/Lengthをまったく持たないストリーム辞書は、リーダーが長さを得られないままになる代わりに、長さを受け取るようになりました
追加 (Added)
AnsiFindDictKeyTokenが、トップレベルのデリミタを認識する辞書キー検索のためにFPdfPdfCommonインターフェイスの一部になりました- Delphi、Lazarus、C++Builder のテストは、
/Length1の保持、間接長の置換、ストリーム本体サイズの一致をカバーするようになりました
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.57.3 を一貫して報告するようになりました
Version 2.57.2
修正 (Fixed)
Revision = erR6でのSaveAsEncryptedとSaveAsEncryptedToStreamは、約 4 ファイルに 1 つの割合で自身の正しいパスワードを拒否するドキュメントを生成していました。ISO 32000-2 §7.6.4.3 のアルゴリズム 2.B のラウンドカウンタが 1 ラウンド低く始まり、その余分なラウンドが/U、/O、/UE、/OEの値を変えていたためです- R6 暗号化ドキュメントは、適合するリーダーでユーザーまたはオーナーパスワードで再オープンできるようになり、誤ったパスワードは引き続き拒否されます
追加 (Added)
- Lazarus と C++Builder のテストスイートに、以前は Delphi のみだった暗号化カバレッジが加わりました。R6 鍵長、Encrypt 辞書フィールド、暗号化と再オープンの繰り返しラウンドトリップ、誤ったパスワードの拒否です
変更 (Changed)
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.57.2 を一貫して報告するようになりました
Version 2.57.1
変更 (Changed)
- フォームフィールドへの入力、キャレットの移動、チェックボックスの切り替えは、ビューア全体ではなく、PDFium が損傷として報告する領域のみを再描画するようになりました
- 損傷ボックスは上向きのページ Y 軸に対して正規化され、アンチエイリアスされたウィジェット境界がきれいに保たれるよう 1 ピクセル拡張され、可視クライアント領域にクリップされます
- ビューポートから完全にスクロールアウトした損傷ボックスは再描画をスケジュールしなくなり、非アクティブビューまたは未マッピングのページは引き続き全体再描画にフォールバックします
- Delphi、Lazarus、C++Builder のテストは、境界付きフォーム無効化、反転ページボックス、オフスクリーンボックス、非アクティブビューの安全性をカバーするようになりました
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.57.1 を一貫して報告するようになりました
Version 2.57.0
追加 (Added)
TPdfThumbnailView.Orientationは、既存の垂直デフォルトを保持しつつ、垂直および水平のサムネイルレイアウトをサポートしますFirstVisiblePageIndex、LastVisiblePageIndex、EnsureCurrentPageVisibleは、1 ベースのページインデックスでサムネイルビューポートを公開し制御します
変更 (Changed)
CurrentPageIndexの変更は、いずれの方向でも選択されたサムネイルを表示範囲にスクロールするようになりました- Delphi、Lazarus、C++Builder のテストは、方向のデフォルト、切り替え、可視範囲、選択ページの可視性をカバーするようになりました
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.57.0 を一貫して報告するようになりました
Version 2.56.2
変更 (Changed)
HighlightSearchText、AddSearchTextHighlight、ClearHighlightは、ビューア全体を再描画する代わりに、追加または削除された検索範囲のデバイス矩形のみを無効化するようになりました- 同じ一致でハイライトを置き換える場合や重複する一致を追加する場合、不要な再描画をスケジュールしなくなりました
- Delphi、Lazarus、C++Builder のテストは、境界付き無効化、冪等更新、クリア、非アクティブビューの安全性をカバーするようになりました
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.56.2 を一貫して報告するようになりました
Version 2.56.1
変更 (Changed)
TPdfThumbnailViewは、再描画や隣接するスクロール位置をまたいで可視なままのページに対して、描画済みビットマップを再利用するようになりました- キャッシュは現在の可視ページ範囲のみを保持し、ページがその範囲を離れるとき、割り当てられたドキュメントが変わるとき、サムネイル寸法が変わるときに正確にエントリを解放します
- Delphi、Lazarus、C++Builder のテストは、キャッシュ再利用、ビューポートの刈り込み、サイズ無効化、ドキュメント置換、コンポーネント破棄をカバーするようになりました
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.56.1 を一貫して報告するようになりました
Version 2.56.0
追加 (Added)
TPdfView.CutSelectedFormTextToClipboardとTPdfView.PasteFormTextFromClipboardは、フォーカスされた編集可能フォームウィジェットに Unicode クリップボード編集を提供します
変更 (Changed)
- フォーカスされたフォームエディタは、PDFium へテキスト入力を転送する前に、標準のコピー、切り取り、貼り付け、すべて選択のキーボードショートカットを処理するようになりました
- 切り取りと貼り付けは読み取り専用フィールドやフォーム入力・変更権限のないセッションを拒否し、切り取りは選択されたテキストを削除する前に正常にコピーします
- Delphi、Lazarus、C++Builder のテストは、フォーカスなし、ショートカットのラウンドトリップ、読み取り専用拒否の動作をカバーするようになりました
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.56.0 を一貫して報告するようになりました
Version 2.55.0
追加 (Added)
TPdfView.AddSearchTextHighlightは、別の検索語のユニークな一致を現在のページオーバーレイに追加し、複数のクエリを同時にハイライトしたままにできます
変更 (Changed)
HighlightSearchTextは引き続き置換エントリポイントであり、加算スキャナを共有するようになり、重複する文字範囲は無視されClearHighlightが蓄積された完全なセットを削除します- Delphi、Lazarus、C++Builder のテストは、個別クエリの蓄積と重複範囲の抑制をカバーするようになりました
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.55.0 を一貫して報告するようになりました
Version 2.54.0
追加 (Added)
TPdfは、完全なページオブジェクトスナップショット、バッチ化されたスタイル更新、アフィンオブジェクト変換、パスセグメント、クリップパス、Form XObject 子オブジェクトを公開するようになりました- 文字検査は、塗りつぶしとストロークの色、フォント名とフラグ、ゆるいグリフ境界、有効な行列、テキストオブジェクトハンドル、文字からテキストへのインデックス変換を含むようになりました
- 注釈は、境界ジオメトリと normal、rollover、down の外観ストリームをラウンドトリップするようになりました
- 新しい raw とデコード済みサムネイルアクセサ、ページコンテンツと注釈の変換、
RenderPageWithMatrixが、直接的な高度なレンダリングと編集パスを提供します
変更 (Changed)
- ページオブジェクトのスタイル変更は 1 つのバッチとしてコミットでき、PDFium がページコンテンツを一度だけ再生成するようにできます
- 行列レンダリングは、出力先ビットマップレイアウトが互換性がある場合、既存のゼロコピービットマップパスを使用します
Version 2.53.1
修正 (Fixed)
- 組み込みの中国語コピーメニューのキャプションは、エンコーディングに依存しない Unicode コードポイントを使用し、Lazarus ビルドで正しく表示されるようになりました
- 古い Delphi ツールチェーンは、
Winapi.WindowsユニットがGetTickCount64宣言を省略する場合でもFPdfAsyncをコンパイルできます
Version 2.53.0
追加 (Added)
- 以前はエンドツーエンドのテストカバレッジがゼロだった公開 TPdf API をカバーする新しい
Tests.ApiCoverageテストフィクスチャ:GetPageBox/SetPageBox(MediaBox/CropBox の読み書き、欠落ボックスエラー、保存ラウンドトリップ)、FlattenPage/FlattenAllPages(戻り値とページ数の保持)、GenerateFormAppearances(非フォームドキュメントでの無操作)、SaveAsEncrypted/SaveAsEncryptedToStream(パスワードラウンドトリップ付き AES-256 — 暗号化ファイルがパスワードなしでは開けず、パスワードがあれば開けることを検証)、DeletePage境界検証(ページ 0 と範囲外はEPdfErrorを送出)、および v2.38.0 で導入されたHasContents/HasAuthor注釈センチネル(Default(TPdfAnnotation)がそれらをFalseのままにすることを検証)
Version 2.52.0
追加 (Added)
TPdfView.CopySelectedFormTextToClipboardは、フォーカスされた AcroForm ウィジェット内のテキスト選択を Windows クリップボードへCF_UNICODETEXTとしてコピーします
変更 (Changed)
- ページテキストとフォーカスされたフォームのコピー操作は、同じ防御的な Unicode クリップボードライタを共有し、選択が空のときはクリップボードを変更しません
- Delphi、Lazarus、C++Builder のテストは、非アクティブまたはフォーカスされていないフォームコピーコールと、Windows クリップボードを通じたフォーカスされたフォーム選択のラウンドトリップをカバーするようになりました
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.52.0 を一貫して報告するようになりました
Version 2.51.0
追加 (Added)
TPdfView.SelectLineAtは、マウス入力を必要とせず、1 ベースのページと 0 ベースの文字インデックスを含む視覚テキスト行を選択します
変更 (Changed)
- プログラムによる行選択、トリプルクリック選択、
Shift+HomeまたはShift+Endは、1 つの文字ボックス行境界モデルを共有するようになりました - Delphi、Lazarus、C++Builder のテストは、安定した行選択と無効なページや文字インデックスをカバーするようになりました
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.51.0 を一貫して報告するようになりました
Version 2.50.0
追加 (Added)
TPdf.LoadDocumentは、TBytesバッファへの 0 ベースのIndexとCountウィンドウを受け付け、埋め込み PDF を一時バイト配列スライスを割り当てずに読み込めるようにしました
変更 (Changed)
- バイト範囲読み込みは、ドキュメント状態を変更する前に負または範囲外のウィンドウを拒否し、既存のバッファ付きおよび借用バッファの存続期間オプションを保持します
- Delphi、Lazarus、C++Builder のテストは、埋め込み PDF ウィンドウと無効なバイト範囲引数をカバーするようになりました
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.50.0 を一貫して報告するようになりました
Version 2.49.1
追加 (Added)
TPdfView.FitModeがpfmFitHeightをサポートし、現在のページを表示可能なビューポートの高さに合わせつつ、必要に応じて水平スクロールを許可するようになりました
修正 (Fixed)
- スクロールバーの表示变化がクライアント領域を変更した後もフィットモードが収束し、fit-page、fit-width、fit-height の結果が VCL と LCL で一貫するようになりました
- Delphi、Lazarus、C++Builder のビューアテストが
pfmFitHeightの選択と列挙型ラウンドトリップをカバーするようになりました TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.49.1 を一貫して報告するようになりました
Version 2.49.0
追加 (Added)
- 公開 PDFium バインディング面が、レビュー済みヘッダーの全 470 エクスポート関数をカバーするようになりました。
FPDFAttachment_SetDescriptionとFPDFAttachment_GetDescriptionによる添付記述アクセスを含みます TPdfが添付記述、相互参照の有効性、トレーラ終端オフセット、セキュリティハンドラ改訂、64ビットメモリ読み込み、署名バイト範囲、Webリンクテキスト範囲、および拡張された画像データ・フィルタ・メタデータ・ICCプロファイルスナップショットを公開するようになりました- フォームヘルパーがネイティブフィールドフォーカス、フォーカスされた選択肢オプションの照会と更新、マウスホイール転送、書き込み可能なインクストローク、プログレッシブレンダリング後のフォームオーバーレイをサポートするようになりました
変更 (Changed)
FormFieldCount、フォームフィールドインデックス、タブ順序が、無関係なページ注釈を含める代わりにウィジェット注釈のみを記述するようになりました- ヘッドレス
TPdfページがフォームフィルページライフサイクルに入退出するようになり、TPdfViewなしでネイティブフォーカスとフォーカスフィールド API が動作するようになりました - 添付記述エクスポートが機能制限されるため、古い PDFium ビルドを使用するアプリケーションでもライブラリを読み込み、利用不可の機能を検出できます
修正 (Fixed)
- フォームフィルが有効な場合、プログレッシブページレンダリングがフォームコントロールを描画するようになりました
- Delphi、Lazarus、C++Builder テストが新しいドキュメント診断、添付記述、インクパス、フォーム動作、署名バイト範囲、Webリンク範囲、画像メタデータをカバーするようになりました
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.49.0 を一貫して報告するようになりました
Version 2.48.0
追加 (Added)
TPdfMatrixがファクトリ、クローンと代入、有限状態と可逆性診断、許容差ベースの比較、平行移動アクセス、行列式報告、アフィン分解を公開するようになりました- prepend 合成、ピボット対応回転、スケーリング、スキュー、フリップ、および stretch、contain、cover 矩形マッピングが、手動係数演算なしでローカル空間とフィットレイアウトワークフローをサポートします
- 非破壊的逆アクセス、逆ポイントマッピング、ベクトルと四辺形変換、動的ポイントと矩形バッチ、インプレースバリアント、ワンパス変換済み境界が、再利用可能なジオメトリ面を拡張します
変更 (Changed)
- 平行移動、スケーリング、軸フリップが、汎用アフィン乗算を経由する代わりに、影響を受ける係数のみを更新するようになりました
- 矩形変換が入力を一度だけ正規化し、可能な場合は特殊化された厳密な軸整列パスを使用し、一時ポイントレコードなしで汎用回転境界を計算します
- ポイントと矩形バッチ変換が1つの結果配列を割り当てるか呼び出し元ストレージを再利用し、変換済みポイント境界は中間配列なしでワンパスで蓄積されます
修正 (Fixed)
- 矩形マッピングが、使用不能な行列を公開する前に、ゼロサイズ、非有限、
Singleオーバーフローの結果を拒否するようになりました - Delphi、Lazarus、C++Builder テストが、合成順序、ピボット不変量、逆ラウンドトリップ、フィット矩形、分解、バルクジオメトリ動作を検証するようになりました
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.48.0 を一貫して報告するようになりました
Version 2.47.0
追加 (Added)
FPdfAsyncが、元の API を保持する拡張インターフェースを通じて、構造化されたキャンセル理由とメッセージ、削除可能なコールバック登録、タイムアウトベースのソース、キャンセル待機、アトミック try-cancel 操作を提供するようになりましたTPdfFuture<T>.RunExが設定可能な応答ディスパッチとワーカー優先度を追加し、結果エンベロープが操作 ID、値の有効性、例外クラス名、完了タイミング、再利用可能な完了ヘルパーを公開しますTPdfAsyncExecutorが、4つの FIFO 優先レーン、オプションの有界キューバックプレッシャー、キャンセル可能なタスクハンドル、タイムアウト対応待機、タスクスナップショット、集計統計、グレースフルシャットダウンを持つ再利用可能な固定ワーカープールを追加しました
変更 (Changed)
- 繰り返しの非同期ジョブが、タスクごとにスレッドを作成する代わりに、ワーカースレッドと O(1) キュー操作を再利用でき、同期完了は UI ホストで引き続き利用可能です
- エグゼキュータと future の障害が例外クラスとメッセージ診断を保持し、キャンセルは元の理由を保持し、コールバック例外はワーカーライフサイクルとシャットダウンから隔離されたままです
- Delphi、Lazarus、C++Builder テストが、拡張されたキャンセル、future メタデータ、タスク制御、バックプレッシャー、優先度順序、統計、障害、シャットダウン面をカバーするようになりました
修正 (Fixed)
- 同時キャンセル所有者が、個別の観察とキャンセルシーケンスに依存する代わりに、決定論的な初回ライター結果を受け取るようになりました
- メインスレッドアイドル待機が同期タスク応答を処理し、完了したワーカーが調整されたシャットダウン中にエグゼキュータを永続的に非アイドルのままにするのを防ぎます
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.47.0 を一貫して報告するようになりました
Version 2.46.0
追加 (Added)
FPdfAsn1が識別子クラス、64ビット高タグ番号エンコードとデコード、解析済み TLV レコード、ゼロコピーチャイルドリーダーウィンドウ、型指定されたプリミティブデコーダ、コンテンツまたはエンコード済み値スライスを公開するようになりました- DER ライターが、完全な符号なし64ビット INTEGER 範囲、検証済みの任意の INTEGER コンテンツ、ENUMERATED、自動 UTCTime または GeneralizedTime 選択、application と private タグ、複数値 SEQUENCE、正準にソートされた SET OF 出力をサポートするようになりました
ValidateDerがオフセット対応の検証エラーを返し、設定可能なネスト、ノード数、コンテンツ長、エラー数、ルート、オプションの SET 順序制限を強制します
変更 (Changed)
- DER 連結と複数値合成が1つの出力割り当てを使用し、ライターバッファが reserve、count、capacity、所有権移行操作を公開し、SET OF ソートが
O(n log n)マージソートを使用するようになりました - BOOLEAN、INTEGER、BIT STRING、OBJECT IDENTIFIER、NULL、UTF8String、PrintableString、IA5String、UTCTime、GeneralizedTime 値が、エンコード、型指定デコード、または検証中に正準形式チェックを受け取ります
- Lazarus ランタイムパッケージが
FPdfAsn1をエクスポートするようになり、Delphi、Lazarus、C++Builder テストスイートが同じ公開 DER 面を演習します
修正 (Fixed)
- 30より大きい context-specific タグ番号が、識別子の下位5ビットに切り詰められなくなりました
- 不正な高タグ識別子、非最小定義長、無効な UTF-8、非ゼロ BIT STRING パディング、無効な時間フィールド、末尾ルート、リソース制限違反が決定論的に拒否されます
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.46.0 を一貫して報告するようになりました
Version 2.45.0
追加 (Added)
FPdfPreflightReportが各問題に Info、Warning、または Error の重大度を割り当て、標準ごとおよびレポートレベルの重大度、ステータス、カテゴリ、issue-code、lookup、search、flattening、filtering API を公開するようになりました- プレフライトレポートが、CI、自動化、ストリーミングパイプライン向けに、対応する
To*とSave*ToFileメソッドを通じて SARIF 2.1.0、JUnit XML、NDJSON、ネイティブ XML をエクスポートするようになりました - 安定した SHA-256 レポートフィンガープリントが、ソースパスと生成タイムスタンプに依存せずに同等の検証結果を識別します
変更 (Changed)
- JSON、CSV、text、Markdown、HTML レポートが重大度と拡張ステータスサマリーを含むようになりました。HTML はアクセス可能なテーブルキャプションとステータスサマリーを追加します
- Issue と標準コレクション構築が幾何学的容量増加を使用し、クエリ結果は事前サイズ設定され、JSON エスケープは1つの有界出力バッファに書き込み、すべてのレポートファイルが1つの直接 UTF-8 ライターを使用します
- Issue カテゴリサマリーが決定論的順序付けを使用し、タイムスタンプがミリ秒を含み、JSON が
formatVersion: 2を運び、CSV セルがスプレッドシート数式を中和します
修正 (Fixed)
- JSON エクスポートが有効な補助 Unicode ペアを保持し、不正なスカラー値データを発行する代わりに孤立した UTF-16 サロゲートコードユニットを置換するようになりました
- HTML エクスポートがアポストロフィをエスケープし、フィルタされたレポートビューが変更可能な結果ストレージを共有する代わりに独立した issue 配列を所有するようになりました
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.45.0 を一貫して報告するようになりました
Version 2.44.0
追加 (Added)
- ブックマークとデスティネーションが、展開状態、子孫の数、アクションのターゲット、デスティネーションのビューモード、および最大4つのビューパラメータを公開するようになりました
Metadata、GrantedPermissions、UserGrantedPermissions、HasPermission、およびUserHasPermissionが、型付きのドキュメント検査スナップショットと権限の問い合わせを提供しますExtractThumbnail(PageNumber)はアクティブなページを変更せずに要求されたページをレンダリングし、RFC 3161 タイムスタンプの結果がポリシー、生成時刻、および nonce の詳細を公開するようになりました
変更 (Changed)
- ブックマーク、JavaScript、メタデータ、デスティネーション、およびサムネイルの各パスが、検証済みの2パスバッファ、幾何学的なコレクション拡張、およびサイクルセーフなトラバーサルを使用するようになりました
- 保存のポスト処理が、現在の xref リビジョンを通じてアクティブなカタログ、ページツリー、およびオープンアクションを解決し、デコードされたオブジェクトストリームをキャッシュし、字句境界を持つ PDF 辞書をスキャンするようになりました
- 共有 PDF パース処理が、オブジェクトヘッダ、ジェネレーション、辞書キー、ストリーム長、予測子の幾何構造、整数範囲、およびコメント・リテラル文字列・16進数文字列の各境界を厳密に適用するようになりました
- RFC 3161 レスポンスの検証が nonce と SHA-256 の
messageImprintの両方をバインドし、構造的に有効な署名者を要求し、DER の長さ、OID、INTEGER、および GeneralizedTime の厳密なルールを適用するようになりました
修正 (Fixed)
- インクリメンタルドキュメントが、デフォルトのオープンアクションを追加する際に、非アクティブな重複カタログや不正な形式の参照サフィックスを選択しないようになりました
- 長い形式の DER 長を持つタイムスタンプトークンがエンコードされた完全なトークンを保持する一方で、不正な形式の CMS オプションフィールドの順序や空の署名者セットは拒否されるようになりました
- クリーンな Delphi ビルドが、アライメントセーフなバイトコピーを通じて PAdES の nonce シードフィールドを書き込み、XFA レスポンスバイトを正確なネイティブポインタ型で渡すようになりました
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラメタデータが Version 2.44.0 を一貫して報告するようになりました
Version 2.43.0
追加 (Added)
- XFDF フィールドレコードと注釈レコードが、省略された XML 値と明示的な空の値を区別するプレゼンスフラグを公開するようになりました
変更 (Changed)
- XFDF インポートは、名前空間プレフィックス付きの要素と属性、テキストと CDATA の混在内容、エンティティ参照、および空白が意味を持つ値を受け入れる一方で、無効な Unicode スカラー参照を拒否するようになりました
- XFDF のインポートとエクスポートがインデックス付きフィールドマッチングと境界付きの幾何学的バッファを使用するようになり、深くネストされたフォーム、大規模な注釈コレクション、インクリスト、頂点、およびマークアップの四角形におけるスループットとピーク時の割り当て動作が改善されました
- PDF/A および PDF/UA の検証が、大規模なページ、ストリーム、構造名、および RoleMap コレクションに対して境界付きの拡張を使用するようになりました;PDF/UA の RoleMap 解決は、直接配列と正確なジェネレーションの間接名オブジェクトまたは配列オブジェクトに従うようになりました
修正 (Fixed)
- XFDF のラウンドトリップが、深くネストされたフィールドパス、明示的な空のフィールド値、明示的な空の注釈コンテンツ、および不在と空のコンテンツの区別を保持するようになりました
- 無効なメモリバッファの読み込みや範囲外のページ割り当ては、部分的なドキュメントやページの状態を残さずに拒否され、ネイティブページの再読み込みに失敗した場合は以前アクティブだったページが保持されるようになりました
- 大規模なマーク付きコンテンツ識別子と署名メタデータバッファが、割り当てやネイティブアクセスの前に境界チェックと検証を行うようになりました
Version 2.42.0
追加 (Added)
TPdfMatrixが、座標マッピング、ヒットテスト、正規化された境界、および明示的な特異行列の処理のために、Invert、TryInvert、TransformPoint、およびTransformRectを提供するようになりましたTPdf.WrapTextにBreakLongWordsオーバーロードが追加され、CJK やその他のスペースを持たないテキストを、有効な UTF-16 サロゲートペアを維持したまま分割するようになりましたTPdfAnnotation.AttachmentPointSetsが、複数行のマークアップ注釈内のすべての四角形を公開するようになりました。一方、既存のAttachmentPointsフィールドは最初のセットのエイリアスのままとなります
変更 (Changed)
- テキスト抽出、読み取り可能なコンテンツの構築、単語検索、および音声テキストのオフセットマッピングが、境界付き割り当てとバイナリルックアップパスを使用するようになり、大規模なページでの繰り返される割り当てや線形スキャンが削減されました
- ASN.1 のシリアライズと暗号化 PDF の生成が幾何学的な出力バッファを使用するようになりました;暗号化オブジェクトの順序付けは
O(n log n)ソートを使用し、xref 行は最終バッファに直接書き込まれます WrapTextが CR、LF、および CRLF の行境界を保持し、操作全体で1つのネイティブメジャーオブジェクトを再利用するようになりました- XFDF のインポートとエクスポートがすべてのマークアップの四角形を保持するようになりました;インポートは RGB/内部色も適用し、プロセスのロケールに依存せずに小数の座標をパースします
修正 (Fixed)
- レガシーの呼び出し元は、新しい
HasContentsおよびHasAuthorセンチネルを設定せずに、空でない文字列を割り当てることで注釈のコンテンツと作成者を再び更新できるようになりました - 明示的に空の注釈文字列が有効なゼロ終端ネイティブバッファを使用するようになり、
/Contents、/T、およびその他のオプションのテキストキーをクリアしても PDFium に nil ポインタが渡されなくなりました
Version 2.41.0
変更 (Changed)
- Delphiにおいて、プリフライトレポートの
SaveJsonToFile、SaveMarkdownToFile、およびSaveTextToFileは、(既存のSaveHtmlToFileと同様に)システムの ANSI コードページの代わりに UTF-8 で書き込むようになりました;これにより、これらのメソッドを通じて保存した際に、Delphi上でファイルパス、推奨事項、およびスコープノート内の非 ASCII 文字が文字化けする問題が解消されます SaveCsvToFileは BOM プレフィックス付きの UTF-8 で書き込むようになり、Windows 用の Excel がエンコーディングを自動検出できるようになりました;BOM がないと、Excel は UTF-8 CSV をコードページ 1252 として扱い、非 ASCII 文字を文字化けさせます
修正 (Fixed)
ExtractImagesデモにおいて、フォームを明示的にクリアせずに閉じた場合にFExtractedImages内のキャッシュされたTBitmapオブジェクトがリークする問題がありました;フォームはDestroyをオーバーライドしてClearExtractedImagesを呼び出し、キャッシュされたすべてのビットマップを解放するようになりました
Version 2.40.0
変更 (Changed)
TPdf.RenderPage(HDC, ...)はFPDF_RenderPage呼び出しの周囲で FPU/SSE 例外をマスクするようになり、TPdfView.RenderPage(HDC)(v2.25.0 で修正)およびビットマップを返す他のすべてのレンダリングエントリポイントと一致させました;以前のTPdfレベルの DC 直接オーバーロードは、D12 より前のコンパイラで FPU 例外がマスクされないままになっていました
修正 (Fixed)
ColorToARGBはセンチネル値をリテラルの RGB カラーとして扱う代わりに、clNoneおよびclDefaultに対して完全に透明なピクセル(アルファ 0)を返すようになりました;以前の動作では、呼び出し元が「色なし」を期待してclNoneを渡したときに、暗くほぼ不透明な塗りつぶしが生成されていました
Version 2.39.1
修正 (Fixed)
- 明示的な PDF 1.3 保存において、デフォルト以外の透明度状態を拒否しつつ、初期グラフィックス状態を繰り返すだけの
/SMask /None、/AIS false、および/TK trueエントリを削除するようになりました
Version 2.39.0
変更 (Changed)
CreatePDFとImageToPDFは確認された保存先を使用し、SaveAsが正常に完了した場合にのみ成功を報告するようになりましたBatchExport、PDFtoJpg、およびSplitPDFは一意の出力ディレクトリを割り当てるようになり、繰り返し実行された場合や同名の入力があった場合でも、以前の結果が保持されるようになりましたSplitViewはキャンセルまたは不一致の後に非表示のページ状態を残すことなく、検索を1回で折り返すようになりました;また、不完全な印刷ジョブを中止し、部分的な出力が送信されるのを防ぎます
修正 (Fixed)
MergePDFは不正な形式 of ページ範囲トークンや、ソースを上書きする出力パスを拒否するようになりました;また、実際にインポートされたページ数をカウントし、空の結果の保存を拒否します- Delphi および C++Builder の
Attachmentデモは、同じパスへの保存をロールバック安全なファイル置換を通じてコミットするようになり、名前変更の失敗によって元の PDF が削除されるのを防ぎます
Version 2.38.0
変更 (Changed)
SetAnnotationDataはTPdfAnnotation上で/Contentsおよび/Authorの書き込みをHasContents/HasAuthorセンチネルの背後にガードするようになり、既存のHasName/HasSubject/HasIconパターンと一致させました;以前はこれら2つのフィールドが無条件で書き込まれていたため、色やフラグのみを更新するためにDefault(TPdfAnnotation)レコードを割り当てると、注釈の既存のコンテンツと作成者がサイレントに空文字列で上書きされていました;GetPageAnnotationはこれらのセンチネルを設定するようになり、リード・モディファイ・ライトのサイクルで元の値が保持されるようになりました
修正 (Fixed)
GenerateFormAppearancesは、(ウィジェット辞書を読み取るFPDFAnnot_GetStringValue(Annot, 'V', ...)の代わりに)ISO 32000-1 §12.7.5 に従って親フィールド辞書を参照するFPDFAnnot_GetFormFieldValueを介してチェックボックスやラジオボタンの値を読み取るようになりました;ウィジェットには通常/Vが含まれていないため、/ASがチェック状態に同期されず、フラット化されたチェックボックスやラジオボタンが未チェックとしてレンダリングされていました
Version 2.37.0
変更 (Changed)
ParseTsaUrlはパース後にポート番号を1..65535の範囲にクランプするようになりました;そうしないと、過大なポート値がDWORD切り捨てによってラップされ、有効なポートに着地する可能性がありました- XFDF の
ParseFieldは深度パラメータ(デフォルト 0、最大 64)を受け入れるようになり、制限に達した場合は空のフィールドを返すようになりました;これにより、悪意を持ってネストされた 100 000 階層の<field>チェーンがスタックをオーバーフローさせることがなくなりました
修正 (Fixed)
- TSA HTTP リクエストは
@ReqDer[0]をWinHttpSendRequestに渡す前に、リクエストボディが空でないことを保護するようになりました;長さゼロの動的配列参照は未初期化のポインタにアクセスする可能性があります;BuildTimeStampReqは常に空でない SEQUENCE を返しますが、呼び出し箇所で契約を守るようにガードを設けました
注意事項 (Notes)
- HTTPS 失効確認に関する
FPdfTsaWinヘッダーコメントが修正されました:WinHttp はデフォルトでサーバー証明書チェーンを検証しますが、WinHttpSetOptionを介して明示的に有効にしない限り、CRL/OCSP 失効確認は実行しません;以前の表現は、失効確認が「自動的についてくる」と主張しており、誤解を招くものでした
Version 2.36.0
変更 (Changed)
- TSA HTTP リクエストは、
Content-TypeおよびAcceptヘッダーに加えて、明示的なContent-Lengthヘッダーを送信するようになりました;WinHttp は全体の長さからこれを合成しますが、一部の RFC 3161 プロキシは明示的なヘッダーを要求し、それがないと411 Length Requiredでリクエストを拒否します - XFDF エクスポートは、無効なバックスラッシュ・16進数シーケンスを出力する代わりに、C0 制御文字(すでにエスケープされている TAB/LF/CR を除く)をドロップするようになりました;以前の
\-01Fエスケープは有効な XML ではありません(バックスラッシュは XML において特別な意味を持ちません);そのため、規格に準拠したリーダーはドキュメントを不正な形式として拒否していました InjectAssociatedFilesは、呼び出し元がTAssociateFile.MIMETypeを指定した場合に EmbeddedFile ストリーム辞書に/Subtypeを書き込むようになりました;このフィールドは宣言およびドキュメント化されていましたが、インジェクターは以前/Type /EmbeddedFileをハードコードし、これを無視していました(ISO 32000-2 §7.11.4 はストリーム上での/Subtypeを許可しています)
修正 (Fixed)
- XFDF インポートにおいて、UTF-8 BOMの後の最初のコンテンツバイト、および BOM が存在しない場合の最初のバイトがスキップされていました:
BytesToAnsiは 0 から始まる配列インデックスを受け取るため、BytesToAnsi(Bytes, 4, ...)(BOMあり)およびBytesToAnsi(Bytes, 1, ...)(BOMなし)が 1 ずれた開始オフセットを使用していました;呼び出しは3および0を使用するようになりました ExtractSignatureValueにおいて、オプションのcertificates [0]およびsignedAttrs [0]ブランチでR.Position:= CNが無条件に実行される2つの dangling-ifインデントのバグがありました;これらのブランチはbegin/endで囲まれ、オプションの TLV が実際に読み取られた場合にのみ位置が進むようになりました(v2.22.0 のAddSignatureTimestampToCmsで修正されたものと同じ種類のバグです)
Version 2.35.0
変更 (Changed)
TFPDFAvail_IsDocAvail、TFPDFAvail_IsPageAvail、およびTFPDFAvail_IsFormAvailは、var hints: FX_DOWNLOADHINTSの代わりにhints: PFX_DOWNLOADHINTSを受け取るようになりました;これにより、ドキュメントに記載されているnullptrクエリ専用モード(データを追加要求せずに現在の可用性を確認する)が Delphi から利用可能になりました;PDFium ヘッダーはhintsが null であることを明示的に許可していますが、以前のvarバインディングではそれが不可能でしたTFPDF_SetSystemFontInfoはvar pFontInfo: FPDF_SYSFONTINFOの代わりにpFontInfo: PFPDF_SYSFONTINFOを受け取るようになり、呼び出し元がnilを渡して PDFium に以前登録されたシステムフォントインターフェイスの使用を停止するように指示できるようになりました(ドキュメントに記載されている無効化パスです)TPdfThumbnailView.PaintはUpdateScrollBarRangeと同じ式(ClientHeight div RowHeight)でVisibleRowsを計算するようになり、描画される行数がスクロールバーのページサイズと一致するようになりました;以前の描画専用の式((ClientHeight - FMarginY) div RowHeight + 1)では、境界の高さで1行異なる可能性があり、ページ外の行の描画が無駄になったり、最後の表示行を見落としたりしていました
Version 2.34.0
追加 (Added)
TPdf.SaveAsEncrypted/SaveAsEncryptedToStream— ドキュメントを保存した後に PDF 2.0 の AES-256-CBC(V=5/R=5/R=6)で暗号化する高レベル API です;ユーザー/オーナーパスワード、権限、およびリビジョンを含むTPdfEncryptOptionsを受け取り、EncryptDocumentBytesに処理を委譲します- StrF リテラル文字列暗号化:
EncryptDocumentBytesは、非ストリームオブジェクト(Info 辞書など)内の(...)リテラル文字列を AES-256-CBC 16進数文字列に暗号化するようになりました;これはストリーム暗号化形式(16バイト IV + PKCS7 暗号文)と一致します;16進数文字列<...>はそのまま残されます
Version 2.33.0
追加 (Added)
FPdfEncrypt.pasにおけるドキュメント全体の AES-256-CBC 暗号化インジェクターです;EncryptDocumentBytesはプレーンテキストの PDF とパスワードを受け取り、すべての間接ストリームオブジェクトを暗号化(ファイルキーの下で 16バイト IV + AES-256-CBC PKCS7)し、/Lengthをパッチし、/Encrypt辞書オブジェクトを追加し、/Encryptと/IDを持つ完全なクラシック相互参照テーブル + トレーラーを再構築します;PDF 2.0 暗号化スタック(AES ブロック + GCM + SHA-512/384 + R6 キー派生 + 辞書 + ドキュメントスイープ)を完成させましたEncryptStreamPayloadヘルパー — PDF 2.0 の AES-256 ストリーム形式(AES-CBC-PKCS7 暗号文の前に IV を付加)であり、独自にオブジェクトレイアウトを管理する呼び出し元が再利用可能です
Version 2.32.0
追加 (Added)
- 新しい
FPdfSha512.pasユニットに、純 Pascal 実装の SHA-512 / SHA-384 ハッシュ(FIPS 180-4)を追加しました。PDF 2.0 R6 のパスワードハッシュ反復処理に必要な機能で、各ラウンドでは 128ビット値の mod-3 の結果に応じて SHA-256/384/512 を選びます。FIPS-180-4 B.1 の known-answer テストで検証済みです - 新しい
FPdfEncrypt.pasユニットに、PDF 2.0 の暗号鍵導出と Encrypt 辞書の生成機能を追加しました。ISO 32000-2 §7.6.4.3 のアルゴリズム 2.B(R6 のハッシュ反復処理:AES-128-CBC + SHA-256/384/512 の反復選択)を実装し、32バイトのファイル暗号鍵と/O、/U、/OE、/UE、/Permsの各エントリを導出して、/CFM /AESV3を使う V=5/R=5/R=6 の Encrypt 辞書を構築します。バイトバッファは TBytes 形式です
Version 2.31.0
追加 (Added)
- 新しい
FPdfAes.pasユニットに AES ブロック暗号プリミティブ(FIPS 197)を追加しました。AES-128 と AES-256 を純 Pascal で実装し、CBC モードのヘルパーと CSPRNG バックエンドも用意しています。FIPS-197 付録 C.2 / C.3 の known-answer テストで正しさを検証済みで、PDF 2.0 暗号化スタックの基盤となります - 新しい
FPdfAesGcm.pasユニットにおける AES-GCM 認証付き暗号(NIST SP 800-38D)です;AES ブロックプリミティブの上に GHASH(GF(2^128) 乗算)、GCTR、および GCM AEAD 構成を実装します;NIST GCM テストケース 1 および 3(AES-128)は信頼できる暗号文およびタグと正確に一致し、テストケース 13(AES-256)はラウンドトリップします;GCM は PDF 2.0 のための ISO/TS 32003 モードです - PDF/A Level A の ParentTree および ClassMap 整合性検証(ISO 19005-1 §6.8.3)です;
pvaiParentTreeMissingは /ParentTree 数値ツリーのない StructTreeRoot にフラグを立てます;pvaiClassMapUnresolvedは /ClassMap のない /C クラス参照にフラグを立てます
Version 2.30.0
追加 (Added)
- 関連ファイル(Associate Files)のインジェクション(
InjectAssociateFiles/TPdf.SaveAsWithAssociateFiles、ISO 32000-2 §7.11.4)です;新しいFPdfAssocFilesユニットは、カタログまたは任意のページ辞書にファイルスペック参照の/AF配列を添付し、8つの ISO 32000-2 表 45/AFRelationship値のすべてをカバーします;InjectPadesDssMarkersで実証されたインクリメンタルアップデートのパターンを再利用しています - PDF/X-6(ISO 15930-9:2020) サポートです;
TPdfXConformanceにpxc6を追加しました;インジェクターとバリデーターはこれをpdfxid:GTS_PDFXVersion識別経由で処理します;PDF/X-6 は、完全なデータ交換のための PDF/X-4 の後継となる PDF 2.0 ベースの仕様です - PDF/A は
/Threadアクションを禁止しています(ISO 19005-1 §6.6.1 ホワイトリストのギャップ);禁止アクションリストは、Launch、ResetForm、ImportData、SetOCGState、SetState、GoTo3DView、Rendition、および Hide に加えて Thread もカバーするようになりました
修正 (Fixed)
- PDF/A-4e 検証パスは、Level A と同じタグ付き構造、MarkInfo、およびワードブレークのチェックを尊重するようになりました;v2.29.0 の保存側のダウングレードは
PdfAIsLevelEをカバーしていましたが、3つのValidatePdfAComplianceゲートがPdfAIsLevelAのみをチェックしていたため、タグ付き構造を欠く PDF/A-4e ドキュメントが警告なしでパスしていました - OCG
/BaseStateテストの乖離:v2.28.0 の PostProcess パスは正しく許容範囲を/ONまたは/OFF(ISO 32000-1 表 8.70)に広げましたが、Delphi および C++ のテストは依然として/OFFが拒否されることを期待していました;テストは真に無効な値(/Undefined)を使用するようになり、新しい正常系テストで/OFFの許容を固定しました - 地理空間
/Subtype /GEOの過剰マッチング:ContainsDictionarySubtype('GEO')は、無関係な/ViewerPreferences << /Subtype /GEO >>など、トークンを持つすべての辞書にマッチしていました;新しいContainsMeasureDictionarySubtypeはさらに/Type /Measureまたは Measure 固有の兄弟キーを要求するようになり、非 Measure 辞書が ADBE ExtensionLevel 3 の要件を満たさなくなるようにしました
Version 2.29.0
追加 (Added)
- バリデーター、XMP インジェクター、および Pdfium オブジェクトモデルレイヤー全体における PDF/A-4(ISO 19005-4:2020)のサポートです;
TPdfAConformanceにpac4base、pac4f、およびpac4eを追加しました;基本レベルは PDF 2.0(ISO 32000-2)であり、従来の A/B/U レベルを base + F(フォーム)+ E(アクセシビリティ)に置き換えます;ValidatePdfAはpdfaid:part=4XMP パケットを読み取り(base は適合性要素を省略)、SaveAsPdfAはそれを出力し、SignPadesWithPdfAはpac4baseを長期アーカイブコンテナとして受け入れます FPDFBookmark_GetColorbinding — 最後の未バインドの PDFium 公開エクスポート(469/469)です;TBookmarkは、ブックマークの/C配列(ISO 32000-1 §12.3.3)から入力されるHasColorおよびColorフィールドを取得します;このバインディングは許容度の高い読み込みを使用するため、エクスポートより前の古い DLL でも引き続き動作します- PDF/E-1(ISO 24517-1 §5)ヘッダーバージョンチェック
pveiBadPdfVersion— PDF/E-1 は PDF 1.6 に基づいており、1.6 以外のヘッダーがフラグで示されるようになりました - PDF/R-1(ISO 23504-1)
pvriEncryptVersionMismatch— 暗号化は%PDF-2.0ヘッダーでのみ許可されます;/Encryptを持つ 1.x のボディがフラグで示されるようになりました(以前は no-op ステートメントでした) - PDF/R-1
pvriBadMediaBox— 各ページのMediaBoxは[0 0 w h]である必要があります;PdfRHasNonZeroMediaBoxOriginは、間接参照の MediaBox をスキップするロケールに依存しない ASCII スキャナーです - PDF/A Level A
pvaiRoleMapUnresolved(ISO 19005-1 §6.8.3.4)— カスタムの/S構造タイプをマッピングしないままにする、存在するが不完全な RoleMap がフラグで示されるようなり、既存の存在確認のみのpvaiRoleMapMissingチェックで残されていたギャップを埋めました
修正 (Fixed)
PdfVersionToName(20)は"2.0"の代わりに"1.0"を返し、すべての PDF 2.0 保存においてカタログの/Versionエントリとバリデーターメッセージを破損させていました;フォーマッターは、バージョンコードが>= 20の場合に major.minor を明示的に分割するようになりましたFPdfAsn1.pasの負の INTEGER エンコーダーが Delphi 12 でコンパイルに失敗し(Integer(-(V<0))でE2015)、テストプロジェクト全体をブロックしていました;符号拡張マスクにInt64(-Ord(V<0))を使用することで修正しました- PDF/A の禁止アノテーションリストに、すべてのパートにわたって
/RichMediaが含まれるようになりました(以前は見落とされていました;ISO 32000-1 §12.5.6.35 は PDF/A でこれを禁止しています)
Version 2.28.0
追加 (Added)
TPdfVersionに PDF 2.0(ISO 32000-2)用のpv20が含まれるようになりました;DecodePdfVersion(20)はpvUnknownの代わりにpv20を返し、EncodePdfVersion(pv20)は 20 を出力するため、PDF 2.0 ドキュメントのバージョンが読み戻し時に失われず、明示的に書き込めるようになりました
変更 (Changed)
DecodeDateは、完全な23文字のD:YYYYMMDDHHmmSSOHH'mm'形式を要求する代わりに、PDF リファレンス 3.8.3 に従ってオプションの末尾フィールドを持つ PDF 日付文字列をパースするようになりました;D:20260712、D:20260712153000、およびD:20260712153000Zなどの規格に準拠した切り捨てられた日付が受け入れられるようになりました(以前は厳格なLength=23ゲートによって拒否されていました);タイムゾーン時間のオフセットは、> 23の代わりに実際の UTC-12〜UTC+14 の範囲で検証されるようになりましたFPdfMeasure.MeasureTextは、非 ASCII ファミリ名が現在のコードページによって文字化けしていた単なるAnsiStringキャストの代わりに、ライブラリの他の FPDF_BYTESTRING 呼び出し箇所と一致する FPCAnsiString/ DelphiUTF8Encodeとしてフォント名をエンコードするようになりました
修正 (Fixed)
TDerWriter.Integerの負の値のパスがクラッシュするか、不正な形式の DER を生成していました:ループwhile V <> -1 do V := V shr 8は、Value = -1の場合にInnerを空のままにし(その後のInner[Length(Inner)-1]で範囲エラーが発生)、他の負の値では過剰なバイトを生成していました;エンコーダーは、符号拡張シフトを伴う2の補数バイトを抽出し、残りが純粋な符号拡張になったときに正しく停止するようになりました;CMS/PAdES の INTEGER フィールドは正であるため、これは負の値を渡す呼び出し元にのみ影響しますが、このパスが正しくなりましたTPdf.GetCharacterOriginおよびTPdfView.GetCharacterOriginはFPDFText_GetCharOriginの戻り値を無視し、失敗時に未初期化のポイントを返していました;結果はゼロ初期化されるようになり、読み取り失敗時は原点を返します(GetCharacterRectangleの契約と一致します)
Version 2.27.0
変更 (Changed)
- Delphi、C++Builder、Lazarus の
PDFViewerとMultiPageViewerデモは文書検索を循環し、EnterとF3で次の結果を選び、照合オプション変更時に検索コンテキストをリセットし、Escをアクティブな検索または印刷ジョブのキャンセル用に予約します - ビューアー印刷は現在のビューアー回転に従って縦または横の出力を選択し、ツールバーの回転を印刷ページへ反映します
- 3 つの
ViewerInteractionLabデモはCtrl+A、Ctrl+C、Enter、F3、Escをサポートし、ネイティブ編集コントロールの選択とコピーを妨げません
修正 (Fixed)
- C++Builder と Lazarus のビューアー印刷キャンセルはプリンター ジョブを中止し、キャンセル前に描画されたページを送信しません。Lazarus はネストしたコピー、ページ、照合ループも明示的に終了します
- Delphi
MultiPageViewerのキャンセル ボタンをハンドラーへ接続し、C++Builder/Lazarus のMultiPageViewer検索フィールドは矢印、Home、End によるネイティブ編集を保持します
Version 2.26.0
変更 (Changed)
TPdf.GetObjectBitmap、TPdf.GetBitmap、TPdf.GetThumbnailとTPdfView対応メソッドはFPDFImageObj_GetBitmap/FPDFPage_GetThumbnailAsBitmap呼び出しの周囲で描画ロックを取得し、RenderPage/RenderTileと一致します。以前はロックなしで実行され、同じ文書の並行UnloadPage/ReloadPageと競合する可能性がありましたTPdf.RenderPageThumbnailはページ/Rotateを考慮し、/Rotate 90または270では回転後のサイズでフィットを再計算して、FPDF_GetPageSizeByIndexの未回転サイズではなくビューアー表示と同じ比率にします
修正 (Fixed)
TPdfView.GetCharacterRectangleはFPDFText_GetCharBoxの戻り値を無視し、PDFium が失敗を報告したとき未初期化のTPdfRectangleをPageToDeviceに渡していました。矩形をゼロ初期化し、失敗時のGetCharBoxはRect(0,0,0,0)を返しますGetLinkAnnotationsの URI パスとファイル パスのバッファー長が 1 つ少なくなっていました。2 回目のFPDFAction_GetURIPath/GetFilePath呼び出しは、size-1として割り当てたバッファーへ末尾の NUL を含むsizeをバッファー長として渡していました。呼び出しは自己クランプしない PDFium ビルドで割り当てを超えて書き込めないようsize-1を渡すようになりました
Version 2.25.0
変更 (Changed)
TPdf.AddText、SetText、AddPath、InsertFormObjectFromXObjectはページ内容を再生成する前にキャッシュ済みテキスト ページとリンク注釈を無効化し、SetTextPositionsおよびRemoveObjectと一致します。編集後のGetText/GetWebLinks/FindFirstが古いデータを返す問題と、再生成後のFPDF_TEXTPAGEハンドル使用による未定義動作を解消しますTPdfView.RenderPage(HDC, ...)は描画ロックを取得し、FPDF_RenderPage周囲の FPU/SSE 例外をマスクします。以前の DC 直接オーバーロードは並行UnloadPage/ReloadPageと競合し、D12 より前のコンパイラーで FPU 例外を未マスクのままにしていました- Delphi
PrintPDFデモはキャンセル時にPrinter.Abortを呼び、finallyがPrinter.EndDocに到達してキャンセル前のページを送信することを防ぎます
修正 (Fixed)
TPdf.GetCharacter、TPdf.GetCharcodeとTPdfView対応メソッドはFPDFText_GetUnicodeの補助平面コードポイントをWideChar()で下位 16 ビットへ切り捨てていました。U+FFFF 超は U+FFFD を返し、完全な UTF-16 はGetTextで取得しますGetWebLinksがSetLength(Rectangles, FPDFLink_CountRects(...))の-1を保護せずEOutOfMemoryを起こす問題を修正し、負の数をゼロにしますTPdf.Destroyは参照カウント バッファー解放前にUniqueString+FillCharでPasswordをメモリから消去します
Version 2.24.0
追加 (Added)
TPdf.DeletePage、GetAttachment、GetAttachmentName、GetAttachmentType、SetAttachment、DeleteAttachmentはページ/添付ファイル インデックスを検証し、範囲外でEPdfErrorを発生させます
修正 (Fixed)
TPdf.AddText、AddBitmap、AddJpegImageの失敗時のページオブジェクト ハンドル リーク:オブジェクト作成後、FPDFPage_InsertObjectがページへ渡す前にFPDFText_SetText、FPDFImageObj_SetBitmap、FPDFImageObj_SetMatrix、またはFPDFImageObj_LoadJpegFileInlineが例外を発生させると、ネイティブのFPDF_PAGEOBJECTハンドルがリークしていました。各パスは再送出前に例外時にオブジェクトを破棄しますTPdf.UnloadPageは、CreatePathで設定されたがAddPathでまだ消費されていない処理中のFPathハンドルを、FPDFPageObj_Destroyを呼ばずにnilへ設定して破棄していました。作成後に放棄された(またはページ切り替えで中断された)パスがリークしないよう、ハンドルは破棄されるようになりましたTPdf.InsertFormObjectFromXObjectは、すべての兄弟挿入(AddText/AddPath/AddBitmap/AddJpegImage/SetText/RemoveObject)が行うUpdatePage(FPDFPage_GenerateContent)呼び出しを省略していたため、この方法で挿入された Form XObject は次の再読み込みまたは保存で消えていました。挿入後はUpdatePageが呼ばれるようになりました
Version 2.23.0
修正 (Fixed)
- オプショナル コンテンツ
/BaseState検証が/ONに加えて/OFFを受け入れるようになりました(ISO 32000-1 Table 8.70 は両方を許可)。以前のチェックは、適合ファイルであっても正規の/OCProperties /D /BaseState /OFF構成を “malformed optional content” エラーで拒否していました - オプショナル コンテンツ
/Intent検証が、リテラルの/Viewだけでなく/Designや[/View /Design]のような名前配列も受け入れるようになりました。ISO 32000-1 Table 8.70 は/Intentを/Viewと/Designから取る名前または名前配列と定義しており、以前の単一値チェックは標準的な作成出力を過剰に拒否していました - 地理空間 Measure 辞書の PDF 1.7
/Extensions /ADBEExtensionLevel 3 判定は、ISO 32000-1 Table 254 が任意とする/Type /Measureを必須としなくなりました。/Typeを省略する GeoPDF プロデューサ(PDFBox、QGIS、FME)は以前ゲートを迂回して非適合の PDF 1.7 出力を生成していました。検出器は/Subtype /GEOだけで照合するようになりました
Version 2.22.0
変更 (Changed)
TPdfViewのフィット ズーム計算(GetPageZoom、GetPageWidthZoom、GetPageHeightZoom)がウィンドウのWidth/HeightではなくClientWidth/ClientHeightを使うようになり、pfmFitPage/pfmFitWidth/pfmFitHeightはスクロール バーや境界を含む外枠ではなく可視ビューポートへページを合わせます。これにより、フィットしたページがクライアント領域よりわずかに大きいときに現れていた冗長なスクロール バーが解消されますAddSignatureTimestampToCmsは、読み取れない CMS SignerInfo フィールド(version / sid / digestAlgorithm / signedAttrs / signatureAlgorithm)を特定する明示的なExceptionを発生させるようになり、完全な署名 CMS であるかのように部分的なパースを静かにExitして進める代わりになります。任意のsignedAttrs [0]分岐の周囲にbegin/endブロックがなくR.Positionが進まない問題も修正されます
修正 (Fixed)
ResolveWinSignerの CNG 秘密鍵ハンドル リーク:CryptAcquireCertificatePrivateKeyが成功した後、続く issuer/serial 抽出またはTWinCmsSigner.Createが例外を発生させると、所有権は成功したコンストラクタでのみ署名者へ移るためNCryptKeyHandleは解放されませんでした。取得後のセットアップは、失敗時にハンドルがNCryptFreeObjectで解放されるようラップされましたEcDsaP1363ToDerは、全ゼロのrまたはsをINTEGER 0として出力する代わりに拒否するようになりました。r = 0またはs = 0の ECDSA 署名は無効であり(RFC 4754 §6 / FIPS 186-4 §6 は1 ≤ r, s ≤ n-1を要求)、そうでなければ寛容な検証者に本物として受け入れられていました
Version 2.21.12
修正 (Fixed)
- PDF 1.5〜PDF 1.7 への明示的な保存では、必要な
/OCGsまたは/Dエントリの欠落、無効なデフォルト設定値、非配列状態エントリを含む不正形式のカタログ/OCProperties構造を拒否するようになりました
Version 2.21.11
修正 (Fixed)
- PDF バージョンへの明示的な保存では、アノテーション辞書に必要な
/Subtypeまたは/Rectエントリが欠落しているページの直接または間接の/Annotsエントリを拒否するようになりました
Version 2.21.10
修正 (Fixed)
- PDF 1.7 への明示的な保存では、地理空間
/Type /Measure /Subtype /GEO辞書と Projection アノテーションが/BaseVersion /1.7と/ExtensionLevel 3以降で/Extensions /ADBEを宣言することを必須とするようになりました
Version 2.21.9
修正 (Fixed)
- PDF 1.7 への明示的な保存では、RichMedia アノテーションと
RichMediaExecuteアクションが/BaseVersion /1.7と/ExtensionLevel 3以降で/Extensions /ADBEを宣言することを必須とするようになりました
Version 2.21.8
修正 (Fixed)
- PDF 1.7 への明示的な保存では、PRC を PDF 1.7 のコア機能として扱うのではなく、PRC 3D ストリームが
/BaseVersion /1.7と/ExtensionLevel 1以降で/Extensions /ADBEを宣言することを必須とするようになりました
Version 2.21.7
修正 (Fixed)
- PDF 1.4 以前への明示的な保存では、画像 XObject の
/SMaskInDataエントリ(明示的な値0を含む)を拒否するようになりました。埋め込まれた JPEG 2000 ソフトマスクチャネルには PDF 1.5 以降が必要なためです
Version 2.21.6
修正 (Fixed)
- PDF 1.4 以前への明示的な保存では、PDF 1.5 以降が必要な 16 ビット画像 XObject を拒否するようになりました。PDF 1.5〜PDF 1.7 のターゲットでは、
/BitsPerComponent 16画像データが保持されます
Version 2.21.5
修正 (Fixed)
- PDF 1.4 以前への明示的な保存では、PDF 1.5 以降が必要なドキュメントカタログの
/PageLayout /TwoPageLeftおよび/TwoPageRightの値を拒否するようになりました。PDF 1.5〜PDF 1.7 のターゲットでは、要求された二段ページレイアウトが保持されます
Version 2.21.4
修正 (Fixed)
- PDF 1.3 への明示的な保存では、PDF 1.4 以降が必要なドキュメントカタログの
/Langエントリを拒否するようになりました。PDF 1.4〜PDF 1.7 のターゲットでは言語識別子が保持されます
Version 2.21.3
修正 (Fixed)
- PDF 1.3 への明示的な保存は、PDF 1.4 以降が必要なドキュメントの
/EmbeddedFiles名前ツリーを拒否するようになりましたが、古いファイル仕様で参照される埋め込みファイルストリームは拒否しません
Version 2.21.2
修正 (Fixed)
- PDF 1.3 を明示して保存すると、PDF 1.4 以降が必要な有効なメタデータストリームを拒否するようにしました。PDF 1.4 から PDF 1.7 を指定した保存では、そのストリームを保持します
Version 2.21.1
修正 (Fixed)
- ハイブリッド参照検証は、同一リビジョンのクラシックな xref プレースホルダーより前に補完
/XRefStmエントリを適用するようになりました。そのため、互換性テーブルがそれらを空きとしてマークする場合でも、圧縮された注釈やバージョン制限オブジェクトが見落とされたりしなくなります
Version 2.21.0
変更 (Changed)
- すべての Delphi、C++Builder、Lazarus のビューアーサンプルは、最初のコマンドライン引数として渡された PDF を開くことができるようになりました。C++Builder および Lazarus の
MultiPageViewerサンプルには、全選とコピーの明示的なショートカットキーも追加されています
修正 (Fixed)
- ビューアーサンプルは無効なブックマークやリンクの移動先ページを拒否し、読み込みエラーを保持して、手動ズームの入力を一貫して検証します。印刷では表示中のページを繰り返さず、要求されたフォーム入力済みページを使います。キャンセルした Delphi の印刷ジョブは、途中までの出力を送らずに中止します
Version 2.20.0
変更 (Changed)
- Delphi、C++Builder、Lazarus のすべてのビューアーサンプルで、開く、検索、保存、印刷、ズーム、ページ移動のショートカットを統一しました。
ViewerInteractionLabの各版では、ページへの移動、10–600% の範囲を検証する手動ズーム、操作ログの保持、クリック座標の往復変換チェックも使えます
Version 2.19.1
修正 (Fixed)
- PDF バージョンを明示した検証は、圧縮オブジェクトのエントリも含め、現在有効な classic、hybrid、xref-stream のリビジョンチェーンをたどるようにしました。置き換え済み、解放済み、未参照のオブジェクトが、機能の対応バージョン違反として誤検出されなくなります
Version 2.19.0
変更 (Changed)
- C++Builder と Lazarus の添付ファイル、画像抽出、テキスト抽出、ページ変換、分割のサンプルは、専用の出力フォルダーまたは安全に確定したファイルを使うようにしました。ゼロ埋めした安定したファイル名、応答性のある進捗更新、項目別エラー数を含む完了サマリーも提供します
修正 (Fixed)
- C++Builder の
CJKTextLabはエクスポートされた PDFium 編集関数を介してテキストを測定するようになり、MergePDFは曖昧な VCL メッセージオーバーロードを回避し、クリーンな RAD Studio 37 ビルドを復元します
Version 2.18.3
修正 (Fixed)
- PAdES B-LTA Document Time-stamp が、署名フィールド列挙検証ツールが検出できなかった到達不可能な孤立オブジェクトの代わりに、最初のページの
/Annotsおよび AcroForm の/Fields(ETSI EN 319 142-1 §5.4.3)から到達可能な非表示の Widget として検出可能な署名フィールドに登録されるようになりました。既存の注釈とフィールドは保持されます
Version 2.18.2
修正 (Fixed)
- PAdES 署名およびクラシッククロスリファレンス書き込みにおいて、バイトオフセットが固定の 10 桁のフィールド幅(~9.3 GB)を超えた場合に、書き込まれない
/ByteRangeプレースホルダーをサイレントに残す(無効な署名を生成する)または 20 バイトの xref 行(ISO 32000-1 §7.5.4)をオーバーランする代わりに、明確なエラーを発生させるようになりました。クロスリファレンスストリーム出力は 8 バイト of バイナリフィールドを使用するため影響を受けません
Version 2.18.1
修正 (Fixed)
- PAdES 署名は、間接的な最初のページの
/Annots、/AcroForm、および/Fields参照を、オブジェクトヘッダー全体(ISO 32000-1 §7.5.3)および参照の実際の世代番号によって解決するようになりました。以前の単純な部分文字列検索では、より長いオブジェクト番号内のオブジェクト番号と一致し(5 0 Rを15 0 objに解決)、ハードコードされた世代ではgen>0オブジェクトが見落とされ、署名フィールド配列が破損するか、有効なドキュメントが拒否されていました - カタログ、最初のページ、
/Annots、/AcroForm、または/Fieldsがオブジェクトストリーム内に存在する場合、署名はドキュメントを即座に拒否する代わりに、失敗する前に展開されたコピーで再試行するようになりました
Version 2.18.0
追加 (Added)
ReadPdfVersionInfoは、PDF ストリームからヘッダーバージョン、有効なコアバージョン、カタログオーバーライド、および Adobe 開発者拡張レベルを報告します
変更 (Changed)
- 明示的な PDF 1.3-1.7 保存は、所有するオブジェクトコンテキストにおいてカタログ、ページリソース、XFA、墨消し、および開発者拡張構造を検証するようになりました。ドキュメントの整合性を維持するため、暗号化された明示的バージョンの出力および PDF 1.3 インクリメンタル正規化は拒否されます
- ファイルパス保存は、同じディレクトリの一時ファイルに書き込み、すべての圧縮、正規化、およびバージョンチェックが成功した後にのみ宛先を置き換えるようになりました
修正 (Fixed)
- PDF 1.3 出力は、必要な完全な
/ProcSetリソースを伝送し、PDF 1.4 透過性キーが PDF 1.3 初期グラフィックス状態値を繰り返すだけの場合はそれを削除するようになりました - ハイブリッド参照、xref ストリーム、およびオブジェクトストリームファイルはクラシック xref 圧縮プログラムによって書き換えられなくなり、圧縮オブジェクトエントリのドロップが防止されます
- 文字列、コメント、または無関係なリソースマップ内の透過性またはカタログ機能キーに類似する名前が、誤ったターゲットバージョンの失敗を引き起こさなくなりました
Version 2.17.0
追加 (Added)
- PAdES 署名が、最初のページの
/Annots配列および AcroForm の/Fields配列に非表示の Widget 注釈として登録されるようになり、既存の注釈とフォームフィールドが保持されます
変更 (Changed)
- インクリメンタルな PDF/A、PDF/X、PDF/E、PDF/R、PDF/UA、PDF/VT、および PAdES の更新は、元のクロスリファレンス表现を保持するようになりました。xref ストリームドキュメントは ISO 32000-1 §7.5.8.1 で要求されている xref ストリーム更新を受け取り、クラシックドキュメントは引き続き xref テーブルを受け取ります
- クロスリファレンスオフセット、
startxref、/Prev、PAdES ByteRange 値、および SHA-256 範囲処理が、チャンクハッシュを伴う 64 ビット位置を使用するようになり、64 ビットビルドで 2 GB を超えるファイルをサポートします - 生成された書き込み可能な XMP パケットは、パケット終了命令の前に入力用パディングとして 2048 バイトを予約するようになりました
Version 2.16.10
修正 (Fixed)
- オブジェクトストリームの展開は、インクリメンタルアップデートがオブジェクトストリーム外のプレーンな定義に移行させたオブジェクトの古いコピーを復活させなくなりました(ISO 32000-1 §7.5.7)。以前の適合性チェックとマーカー注入は、そのようなファイルで期限切れのカタログまたはメタデータ辞書を解決していました
Version 2.16.9
修正 (Fixed)
- Free Pascal において、入力が有効な UTF-8 ではないテキスト文字列は Latin-1 としてバイトごとに拡張され、UTF-16BE 16 進文字列として書き込まれます。以前は生のハイバイトがリテラル文字列にリークしていましたが、これは PDF 1.7 の適法なテキスト文字列エンコーディングではありません
- ストリームデコードは、RFC 1950 zlib ラッパーのない生の deflate データを認識し(壊れたライターの一般的な欠陥)、生モードで展開するようになったため、適合性スキャンがそのようなストリームでサイレントに機能しなくなることがなくなりました
Version 2.16.8
修正 (Fixed)
- 保存後処理パスによって書き込まれるインクリメンタルアップデートが、ISO 32000-1 §14.4 で要求されているように、2 番目の(変更される)トレーラー
/ID要素を更新するようになりました。以前は両方の要素が逐語的にコピーされていたため、キャッシュおよび同期ツールは更新ごとに変更されていない識別子を認識していました
Version 2.16.7
修正 (Fixed)
- 適合性スキャンで使用されるストリームボディの空白化において、
streamキーワードの後に改行を伴うことが要求されるようになりました(ISO 32000-1 §7.3.8.1)。以前は(downstream)などのリテラル文字列内の単語が、次のendstreamまでのすべての後続構造を空白化し、バイトレベルのチェックから実際の違反を隠していました - PDF/X および PDF/E の禁止機能スキャンは、さらにリテラル文字列とコメント(§7.2.2)を空白化するようになったため、
/Title (see /JavaScript docs)などの値やコメント化されたトークンが誤ったJavaScript、AcroForm、またはLZWDecodeの検出を引き起こさなくなりました
Version 2.16.6
修正 (Fixed)
- PDF/VT DPM エントリがドキュメントどおりに書き込み時に検証されるようになりました。ISO 16612-2 §6.6 NMTOKEN ルールまたは Annex E 登録者プレフィックスルールに違反するキー名、および重複する名前は、DPart 辞書に書き込まれる代わりに拒否されます。以前はスペースを含む名前が誤ったキー/値ペアに分割され、辞書が破損していました
Version 2.16.5
修正 (Fixed)
- 値が 16 進文字列である辞書エントリ(
/Check <...>など)の削除において、エントリ全体を削除するようになりました。以前はインジェクターが孤立した 16 進値を残し、構文的に破損した辞書を生成していました - トークン間に改行を使用する間接参照(ISO 32000-1 §7.3.10 は任意の空白文字を許容)を持つエントリの削除において、世代番号と
Rキーワードを残さなくなりました
Version 2.16.4
修正 (Fixed)
- 最大オブジェクト番号スキャンにおいて、オブジェクトヘッダーが行頭から始まることを要求しなくなりました(ISO 32000-1 §7.5.3 はその前に任意の空白文字または区切り文字を許容)。これにより、インジェクターがインライン
N G objヘッダーと衝突するオブジェクト番号を割り当ててファイルをサイレントに破損させることがなくなりました。オブジェクト番号は Annex C の上限によって制限されます /Lengthが間接参照であるストリームにおいて、参照される整数オブジェクトを解決し、それが終了のendstreamと並ぶときにその値を使用するようになりました。以前は、そのようなストリームはパターン検索によって制限されていたため、endstreamバイトシーケンスを適法に含む本体(埋め込まれた PDF 添付ファイルで一般的)が切り捨てられていました
Version 2.16.3
修正 (Fixed)
- ストリーム圧縮において、クロスリファレンスストリームドキュメント(クラシックな
trailerキーワードのない PDF 1.5+ ファイル)を変更なしでスルーするようになりました。以前の再構築パスはstartxrefをテーブルの位置として誤って解析し、推測されたトレーラーを合成していたため、開けないファイルが作成される可能性がありました - 圧縮プログラムは XMP メタデータストリームをスキップするため、PDF/A ドキュメントは必須のフィルタリングされていないメタデータストリーム(ISO 19005-1 §6.7.2)を保持し、外部ファイルストリーム(
/FFilterを伴う/F)はそのまま残されます - 再構築されたクロスリファレンステーブルは、ドキュメントのストリームが除去されたコピーをスキャンするため、バイナリストリームのコンテンツがオブジェクトヘッダーを偽装したりテーブルを膨張させたりすることがなくなりました。再構築されたトレーラーの
/Sizeは実際のテーブルを反映するようになり、オブジェクト番号は Annex C の上限に制限されます - 元のクロスリファレンステーブルの検出において、CR のみの行末文字(ISO 32000-1 §7.5.1)を受け入れるようになり、
startxref内のxref文字と一致しなくなりました。ストリームキーワードスキャンは、他で使用されているものと同じendstream-tail ガードを備え、スキップされたストリームボディを通過して進むようになりました
Version 2.16.2
修正 (Fixed)
- 整数解析において、ISO 32000-1 §7.3.3 で許可されている明示的な
+記号を受け入れるようになり、オーバーフローするデジタルランを拒否するようになりました。これにより、悪意のあるドキュメントや破損したドキュメントが解析された長さやオフセットを誤解を招く値にラップすることがなくなりました
Version 2.16.1
修正 (Fixed)
- PDF/UA インジェクターは、カタログの
/Lang値を適切な PDF テキスト文字列として書き込むようになりました。以前は値を XML エスケーパーに通していたため、&や括弧を含む言語タグが破損したエントリを生成し、非 ASCII 入力は生の UTF-8 として書き込まれていました - PDF/E の
/ISO_PDFEVersion情報エントリが共有テキスト文字列エンコーダーを使用するようになり、非 ASCII 値が PDF 1.7 で適法になりました - XMP パケット用の XML エスケープにおいて、XML 1.0 で無効な制御文字をドロップするようになったため、破損した元のドキュメントからコピーされたメタデータがメタデータストリーム全体を整形式ではない状態にすることがなくなりました
- PDF から XMP への日付変換において、日付フィールドが数値であることを検証し、欠落している分フィールドを埋めることで、生成される XMP での不正な ISO 8601 日付を防止するようになりました。非 Windows プラットフォームでは、フォールバックのタイムスタンプに日付だけでなく時刻も含まれるようになりました
Version 2.16.0
追加 (Added)
- ストリームデコードは、FlateDecode の後に
/DecodeParmsプレディクター(PNG プレディクター 10-15 および TIFF プレディクター 2、ISO 32000-1 §7.4.4.4)を再構築するようになり、/Colors、/BitsPerComponent、および/Columnsを尊重します。プレディクターで圧縮されたオブジェクトストリーム(一般的な PDF 1.5+ ライターの選択)は以前は差分バイトを表示していたため、それらが運ぶオブジェクトは適合性スキャンやマーカー注入に対してサイレントに不可視になっていました
修正 (Fixed)
- FlateDecode 検出において、部分文字列一致ではなく、
/Filter値を名前または配列として解析するようになったため、カスケードされたフィルターチェーンや無関係な値の内部での単語の出現が誤ったインフレートを引き起こさなくなりました。サポートされていないチェーンは以前と同様に生のバイトにフォールバックします
Version 2.15.1
修正 (Fixed)
- 辞書スキャナーは、
<</>>のバランスを取る際にリテラル文字列、16 進文字列、およびコメントをスキップするようになり(ISO 32000-1 §7.2.2)、(A >> B)などの値や閉じデリミタに隣接する 16 進文字列を含む辞書が、トレーラー、カタログ、および適合性スキャンの解析中に切り捨てられなくなりました - リテラル文字列の抽出において、エスケープ文字を逐語的にコピーする代わりに、完全な §7.3.4.2 Table 3 エスケープセット(
\n \r \t \b \f、8 進数\ddd、行継続、およびエスケープされていない EOL 正規化)をデコードするようになり、8 進エスケープを使用するライターに対する正しい/Producer、/GTS_PDFXVersion、および/ISO_PDFEVersionの比較が復元されました - マーカーインジェクターによって書き込まれるリテラル文字列において、CR、LF、およびその他の制御文字をエスケープするようになったため、値がリーダー側の行末正規化をバイト単位で通過できるようになりました
Version 2.15.0
修正 (Fixed)
- PDF/A、PDF/X、PDF/E、PDF/R、PDF/UA、および PDF/VT マーカーインジェクター、ならびに PAdES 署名および DSS パスによって書き込まれるインクリメンタルアップデートが、元のドキュメントの永久ファイル識別子を保持するようになりました。最初のトレーラー
/ID要素は ISO 32000-1 §14.4 で要求されているように逐語的に引き継がれ、2 番目の(変更される)要素のみが更新されます。以前は両方の要素が再生成されていたため、外部参照や長期検証ワークフローでは保存ごとに異なるドキュメントIDが認識されていました - PAdES 署名、DSS 注入、および B-LTA Document Time-stamp は、元のトレーラーの
/Info参照を前方にキャリーするようになり(ISO 32000-1 §7.5.6)、署名後にリーダーパネルからドキュメントのプロパティが消えなくなりました。Document Time-stamp トレーラーも/ID配列を取得します - クロスリファレンスストリームドキュメント用のトレーラー
/Infoフォールバックが、XRef ストリーム辞書を正しく検出し、参照の世代番号を保持するようになりました。以前は準拠している PDF 1.5+ ファイルで一致せず、/Infoがサイレントにドロップされていました
Version 2.14.4
修正 (Fixed)
TPdf.SignPadesおよびSignPadesBytesによって書き込まれる署名辞書/Mの日付が、ISO 32000-1 §7.9.4 で要求されている必須のD:プレフィックスとZUTC オフセットマーカーを運ぶようになりました。厳密な検証ツールは以前、署名時刻を不正な形式の日付文字列として拒否していました
Version 2.14.3
修正 (Fixed)
- 共有 PDF リーダーでの辞書キーのルックアップが、名前トークン全体と一致するようになりました(ISO 32000-1 §7.3.5)。以前は、辞書に
/Lengthの前に/Length1がリストされているストリーム(FontFile ストリームで一般的)が誤ったバイト数に切り捨てられ、フォント、CMap、またはメタデータストリームを読み取る PDF/A、PDF/UA などの適合性スキャンがサイレントに機能しなくなっていました /Encrypt、/Root、/Size、および/Infoトレーラールックアップにおいて、同じプレフィックスを共有するより長いキー(/EncryptMetadataなど)と一致しなくなりました- オブジェクトストリームの展開において、破損したまたは悪意のある
/N値を信頼しなくなりました。非整数値は未初期化の数値の代わりに 0 を生成するようになり、/Firstから導出された上限によって不正な形式のドキュメントをスキャンする際の過剰な割り当てが防止されます
Version 2.14.2
修正 (Fixed)
- PDF/X、PDF/VT、PDF/UA、PDF/E、および PDF/R マーカーインジェクターは、プレーンテキストの更新セクションを追加する代わりに、暗号化された元のドキュメントを変更なしでコピーするようになりました。以前の動作では、最新のトレーラーが
/Encryptエントリ(ISO 32000-1 §7.5.6)を失ったファイルが生成され、準拠しているリーダーが暗号化された本体をプレーンテキストとして誤読していました - 元のドキュメントが暗号化されている場合に、
TPdf.SignPades、SignPadesBytes、およびInjectPadesDssMarkersが破損したまたは検証不可能なファイルをサイレントに出力する代わりに、EPadesCryptoを発生させるようになりました。署名または DSS マテリアルの埋め込みの前に暗号化を解除してください
Version 2.14.1
修正 (Fixed)
TPdf.SignPadesおよびSignPadesBytesが、署名辞書の 4 つの/ByteRangeフィールドすべてをバックフィルするようになりました。以前は最後の 3 つのフィールドがゼロプレースホルダーのままであったため、生成された署名が空のバイト範囲を宣言し、準拠している検証ツールでの検証に失敗していました- PAdES B-LTA Document Time-stamp 辞書が同じ
/ByteRangeバックフィル修正を受け取るようになりました ValidatePadesComplianceは、バイト範囲のギャップが 16 進の/Contents値を保持する標準的な署名レイアウトを受け入れるようになり、2 番目の範囲セグメントがファイルの末尾で正確に終了することを確認するようになりました。以前はギャップのない範囲のみがカバレッジチェックに合格していました
Version 2.14.0
追加 (Added)
TPdf.ExportXFDFは、すべてのページのすべてのフォームフィールド値および注釈を XFDF ドキュメント(ISO 19444-1)にシリアル化し、階層フォーム値に対して<fields>を、サポートされているすべての注釈サブタイプ(text、highlight、underline、strikeout、squiggly、line、circle、square、caret、polygon、polyline、stamp、ink、freetext、fileattachment、sound、link、redact)に対して<annots>を出力しますTPdf.ImportXFDFは、XFDF ドキュメントをロードされた PDF に読み戻し、一致するページに注釈を再作成し、ウィジェット注釈にフィールド値を適用しますTPdfAnnotationレコードがName(NM)、Subject、ModificationDate(M)、CreationDate、Icon、Opacity(CA)、ラインエンドポイント、ポリゴン/ポリラインの頂点、およびインクリストジェスチャフィールドを取得し、XFDF ラウンドトリップが完全な注釈メタデータを保持するようになりました- Delphi、C++Builder、および Lazarus デモセットの新しい
XfdfLabサンプルが、エクスポート/インポートのラウンドトリップを実証します
Version 2.13.6
修正 (Fixed)
ValidatePdfAは、/Type /Metadataまたは/Subtype /XMLのないカタログ/MetadataストリームをpvaiMissingXmpMetadataを介して欠落している XMP メタデータとして扱うようになりました- PDF/A プリフライトレポートは、
pvaiMissingXmpMetadataを Metadata として分類し、/Type /Metadata、/Subtype /XML、フィルタリングされていない XMP、およびpdfaidマーカーを含むカタログ/Metadataストリームを推奨するようになりました
Version 2.13.5
修正 (Fixed)
ValidatePdfAは、アピアランス辞書のない Widget 注釈、および/APを必要とするが欠落している PDF/A-2 / PDF/A-3 注釈をpvaiAnnotationApDictViolationを介して報告するようになりました- PDF/A プリフライトレポートは、
pvaiAnnotationApDictViolationをマーカー注入で修復できないコンテンツとして分類するようになりました
Version 2.13.4
修正 (Fixed)
ValidatePdfAは、既存の Image XObject 辞書のカバレッジと一致する、/Iまたは/Interpolate値がtrueである PDF/A-2 および PDF/A-3 インライン画像をpvaiImageDictionaryViolationを介して報告するようになりました- PDF/A プリフライトレポートは、
pvaiImageDictionaryViolationをマーカー注入で修復できないコンテンツとして分類するようになりました
Version 2.13.3
修正 (Fixed)
ValidatePdfAは、既存の PDF/A-2 および PDF/A-3 インライン画像のカバレッジと一致する、コンテンツストリーム内で/LZWDecodeまたは短縮された/LZWフィルターを使用する PDF/A-1 インライン画像をpvaiInlineImageLzwForbiddenを介して報告するようになりました- インライン画像フィルタースキャナーが、
/GS1などの先行するリソース名を越えて進むようなり、より広範な PDF/A-1 コンテンツストリームをスキャンする際のストールを回避します
Version 2.13.2
追加 (Added)
TPdf.SetFocusedFormFieldTextは、FocusedFormFieldTextと対称的に、FORM_ReplaceSelectionを介して現在フォーカスされているフォームフィールド of 編集バッファにテキストを書き込みます。AcroForm テキスト/コンボフィールドの場合、値はフォーカス喪失時に/Vにコミットされ永続化されます。XFA テキストフィールドの場合、書き込みはメモリ内バッファにのみ行われます(PDFium は XFA 値を datasets パケットに戻す公開 API を公開していないため、保存をまたいで永続化されません)- ドキュメントが XFA であるかどうかに関わらず、V8 エンジンが利用可能な場合は常に JavaScript ホストプラットフォームがアタッチされるようになったため、埋め込まれた AcroForm JavaScript(ドキュメントレベルのスクリプト、フィールド計算、
app.alert)も実行できます。以前はm_pJsPlatformは XFA ドキュメントにのみ配線されており、AcroForm JS はサイレントに無効化されていました
変更 (Changed)
- JavaScript プラットフォームのアタッチが、
InitializeFormFillにおける XFA の決定から独立するようになりました。m_pJsPlatformテーブルはV8FeaturesAvailableが true の場合に常に構築され、XFA バージョン/コールバックの配線の内部にネストされるのではなく、その後に適用されます
Version 2.13.1
追加 (Added)
- v2.13.0 フォーム入力コールバックが以前飲み込んでいた情報を、新しいホストイベントが表面化するようになりました:
OnXfaUriAction、OnXfaPageCountChanged、OnXfaFocusChange、OnXfaEmail、OnXfaHttpRequest、OnXfaOpenFile、OnJavaScriptBeep、OnJavaScriptPrint、OnJavaScriptMail、OnJavaScriptSubmitForm。未割り当ての場合、すべてのイベントは既存の no-op 動作にデフォルト設定されるため、既存のホストは影響を受けません TPdf.XfaFormPackets読み取り専用プロパティが、すべての XFA パケット(TXfaPacketList)のワンショットスナップショットを返すようになり、以前宣言されていながら使用されていなかったTXfaPacket/TXfaPacketList型を満たします- XFA 固有の PDFium エラーコード
FPDF_ERR_XFALOAD/FPDF_ERR_XFALAYOUTがバインドされ、LastPdfErrorを介して表面化するようになり、XFA のロード/レイアウトの失敗に対する一般的な「Unknown error」に置き換わりました
変更 (Changed)
FFI_DoURIActionWithKeyboardModifierは、XFA フィールドからの URI をシェル実行する前にOnXfaUriActionを参照するようになり、ホストに拒否権を与えます(セキュリティ:悪意のある XFA フィールドが以前は無条件に任意の URL を起動できました)。未割り当てのハンドラは以前のShellExecuteWデフォルトを保持しますDecodeFormFieldTypeは、明示的な 8 分岐の case ではなくIsXfaFormFieldを介して XFA フィールド型をルーティングするようになり、列挙型を序数オフセットでFPDF_FORMFIELD_XFA_*と整列させ続けます
修正 (Fixed)
ValidatePdfAは、PDF 1.5 クロスリファレンスストリームまたはオブジェクトストリームを使用する PDF/A-1 クレームを新しいpvaiPdfA1Pdf15Structureの問題で報告するようになりました。一方で PDF/A-2 および PDF/A-3 のオブジェクトストリームは引き続き許可します
Version 2.13.0
追加 (Added)
- 完全な XFA(XML Forms Architecture)ランタイムサポート:
TPdf.InitializeFormFillは 14 のバージョン 2FPDF_FORMFILLINFOコールバックすべて(FFI_DisplayCaret、FFI_GotoURL、FFI_PageEvent、FFI_PopupMenu、FFI_OpenFile、FFI_EmailTo、FFI_UploadTo、FFI_GetPlatform、FFI_GetLanguage、FFI_DownloadFromURL、FFI_PostRequestURL、FFI_PutRequestURL、FFI_OnFocusChange、FFI_DoURIActionWithKeyboardModifier)を配線し、IPDF_JsPlatformをアタッチするようになったため、XFA 対応のpdfium.dllが動的 XFA フォームをレンダリングおよびスクリプト処理できるようになりました - 以前コメント内でのみ参照されていた XFA 定数(
FXFA_PAGEVIEWEVENT_*、FXFA_MENU_*、FXFA_SAVEAS_*、FPDF_FORMFIELD_XFA_*)およびTXfaPacket/TXfaSaveFormat型を宣言する新しいLib\FPdfXfa.pasユニットを追加しました TPdf上の XFA 静的パケットリーダー:GetXfaPacketCount/GetXfaPacketName/GetXfaPacketContent/GetXfaPacketByNameに加えてGetXfaTemplate/GetXfaDatasets/GetXfaConfigが、XFA 対応ランタイムを必要とせずに XFAtemplate、datasets、およびconfigパケットを生 XML として抽出するようになりました(コンプライアンス監査やデータ移行に便利です)- 機能プローブ:グローバルな
XfaFeaturesAvailable、およびドキュメントごとのTPdf.XfaRuntimeAvailable(FPDF_LoadXFAが実際に成功したかどうか)とTPdf.XfaStaticReadable(パケットリーダーのエクスポートが解決されるかどうか) TPdfFormFieldTypeがfiXfa、fiXfaCheckBox、fiXfaComboBox、fiXfaImageField、fiXfaListBox、fiXfaPushButton、fiXfaSignature、fiXfaTextFieldで拡張され、DecodeFormFieldTypeが新しいFPDF_FORMFIELD_XFA_*値をマッピングするようになりましたTPdf上の JavaScript ホストイベント:OnJavaScriptAlert、OnJavaScriptResponse、OnXfaGotoUrl、およびOnXfaRuntimeMissingにより、ホストが JS ダイアログや XFA ナビゲーションをカスタマイズしたり、XFA ドキュメントがエンジンを実行できない場合に反応したりできるようになりました- XFA 検出、パケット抽出、機能プローブ、およびランタイム欠落フォールバックパスを示す新しい
XfaLabDelphi サンプルを追加しました
変更 (Changed)
TPdf.LoadDocumentは、入力で XFA マーカー(AcroForm 辞書内の/XFAまたはカタログ/NeedsRendering)を事前スキャンし、検出された場合、シングルトンライブラリが最初にロードされる前にEnableV8Engine := Trueを設定してpdfium.v8.dllを自動選択するようになりました。一度プレーンなpdfium.dllがロードされるとプロセスは切り替えられないため、その場合はOnXfaRuntimeMissingがシグナルを送りますTPdf.GetPageCountは、静的な PDF ページツリーだけでなく、動的な再レイアウトの後にFFI_PageEventを介して XFA エンジンのページ数を反映するようになりました- XFA ドキュメントが開かれたがランタイムが利用できない場合、
InitializeFormFillは割り当てられていないコールバックを持つバージョン 2 を要求する代わりに、version=1およびxfa_disabled=1を固定するようになりました(以前は不正なコールバックポインタのデリファレンスのリスクがありました)
Version 2.12.2
修正 (Fixed)
ValidatePdfAComplianceは、拡張機能の宣言がない標準的なpdfaidメタデータを受け入れつつ、pdfaExtension:schemasのない使用されているカスタム XMP 名前空間を報告するようになりました- PDF/A-3 埋め込みファイルの検証において、filespec 辞書のトップレベルの
/Fおよび/UFエントリの両方を必要とし、それらの名前を確認する際に入れ子になった/EFストリームキーを無視するようになりました
Version 2.12.1
修正 (Fixed)
ValidatePdfAComplianceは、JavaScript、LZWDecode、Type1、および関連する禁止名と一致させる前にエスケープされた PDF 名前トークンをデコードするようになったため、難読化されているがセマンティクス的に同一である名前が正しく報告されるようになりました- PDF/A インライン画像チェックにおいて、配列およびエスケープ名形式を含め、
/LZWDecode、短縮された/LZW、または/Cryptを使用する/Filterおよび/F値を拒否するようになりました - PDF/A 検証において、禁止されたストリームフィルターを持つメタデータストリーム、
/Nコンポーネント数が欠落しているか不一致である OutputIntent ICC プロファイル、および/AFRelationshipが欠落しているか無効である PDF/A-3 埋め込みファイル仕様を報告するようになりました
Version 2.12.0
追加 (Added)
- TSA HTTP リクエストにおいて、WinHttp の暗黙のデフォルトに依存する代わりに、
WinHttpSetTimeoutsを介して各フェーズ(解決/接続/送信/受信)に明示的な 30 秒のタイムアウトを設定するようになり、遅いまたは到達不可能なタイムスタンプ局が署名スレッドを無期限にハングアップさせることがなくなりました - 呼び出し元が
TPadesSignOptions.Nonceを省略した場合の PAdES B-T / B-LTA タイムスタンプリクエストにおけるリクエストごとの nonce 派生において、単調増加カウンタ + ウォールクロック +GetTickCount64+ プロセス ID の SHA-256 フォールドが以前の固定された$100000000フォールバックに置き換わるようになり、同じミリ秒内に発行された 2 つのリクエストが同じアンチリプレイ nonce を再利用しなくなりました PdfInflateは、悪意のあるまたは破損した入力(「zlib 爆弾」)で zlib 圧縮ストリームがメモリを使い果たすのを防ぐために、解凍された出力を 256 MiB に制限するようになりました。この上限は、実際の PDF ストリームに対しては寛大です
変更 (Changed)
TPdfViewオーバーレイブレンディング(検索ハイライト、テキスト選択、単語読み取り、スプレッド選択)において、ピクセルごとのGetPixel/SetPixelVを使用しなくなりました。矩形は 32-bpp オフスクリーンのTBitmapおよびScanLineを介して単一パスでブレンドされるようになり、ペイントごとの数千回の GDI カーネル交差を排除し、大きな選択範囲のレスポンスを向上させますFPdfAsn1.TDerReader.ReadIntegerは、8 バイトを超える INTEGER フィールド(および符号ビットにshl >= 64が必要な 8 バイトの負数)を拒否するようになり、CMS/PAdES ASN.1 入力での未定義シフト動作によって誤った値を計算する代わりに 0 を返しますParseTimeStampRespは、リクエストの nonce をTPadesTimestamp.Nonceとしてエコーバックしなくなりました。返された nonce を検証する TSTInfo ウォーカーが実装されるまで、フィールドは「未検証」を示す 0 のままになり、タイムスタンプの応答が新鮮であるという誤った確信を呼び出し元に与えません
修正 (Fixed)
PointsToPixelsがすべての DPI に対して入力を変更せずに返していた問題を修正しました(除数がリテラルの 72 ではなくPointsPerInch(定数の 72)であったため、式がResult := Pointsに崩壊していました)。このヘルパーを介してポイント→デバイスピクセルサイズ調整を行う外部の呼び出し元は、正しいPoints × PixelsPerInch / 72を取得するようになりました- オブジェクトストリームを使用するドキュメント(PDF 1.5+ ObjStm)で
PdfMaxObjNumが少なくカウントされていた問題を修正しました。/ObjStm内で圧縮されたオブジェクトはN 0 objマーカーを持たないため、生のバイトスキャンで見落とされ、新しいオブジェクトにMaxObj+1を割り当てるインジェクターが非表示の ObjStm メンバーと衝突してファイルをサイレントに破損させていました。スキャンはまずオブジェクトストリームを展開するようになり、すべてのオブジェクト番号が表示されます InjectPdfAMarkersは、暗号化されたドキュメントで PDF/A 適合性クレームを伪装しなくなりました。PDF/A(ISO 19005-1 §7.1)は暗号化を禁止しており、インジェクターは次の検証で拒否されるにもかかわらず、以前はマーカーとともにソースをコピーしていました。HasEncryptが設定されている場合、ソースは変更なしで渡されるようになりました。通常のTPdf.SaveAsPdfAパスは、注入の前にすでに暗号化を解除しているため(saRemoveSecurity)、これは直接の呼び出し元にのみ影響しますPdfReadStreamBytesは、結果バッファを割り当てる前にファイル全体よりも大きい/Lengthを拒否するようになり、破損したまたは悪意のある間接長に対する早期割り当てパスを閉じました
Version 2.11.0
追加 (Added)
- PDFium の
FPDF_FILEHANDLERレコードが、C ヘッダーのレイアウトと一致するように、コメントではなく 6 つのコールバック(Release、GetSize、ReadBlock、WriteBlock、Flush、Truncate)を実際のフィールドとして宣言するようになりました。PFPDF_FILEHANDLERを返す、または消費する XFA FFI ファイル転送コールバック(FFI_OpenFile/FFI_EmailTo/FFI_UploadTo/FFI_DownloadFromURL)は、Pascal フォーム入力レイヤーではまだ未実装のままですが、この型は将来の XFA 送信/アップロードパスに対して構造的に正しくなりました - PDFium ライブラリのロードおよびアンロード(
LoadLibrary/UnloadLibrary)がプロセスグローバルなクリティカルセクションによってシリアル化されるようになり、2 つのTPdfFuture<T>ワーカースレッド(またはメインスレッドと競合するワーカー)が両方ともPDFiumLibrary=0を監視して二重バインドする、または別のスレッドがバインドしている最中に DLL を解放することがなくなりました initialization/finalizationセクションがユニットアンロード時にUnloadLibraryを呼び出すようになり、OS による DLL の回収に依存する代わりに、確実にFPDF_DestroyLibraryが実行されるようになりました(ワーカースレッドの結合、V8 アイソレートの破棄、フォント/キャッシュの解体)
変更 (Changed)
TPdf.SetActiveがロード中のあらゆる例外(以前はEPdfErrorのみ)を飲み込むようになったため、フォーム/ページセットアップ中のストリームエラーやアクセス違反が発生したときに、不安定な状態の一部ロードされたコンポーネントではなく、Active=Falseのままになるようになりました- PDFium メタデータキー引数の一貫した文字エンコーディング:
TPdf.GetMetaTextが、単なるAnsiString(Tag)キャストの代わりに、GetViewerPreferenceおよびロードパスと同じ FPCAnsiString/ DelphiUTF8Encodeの分岐を使用するようになりました BytesToAnsi、AnsiToBytes、WriteBytes、およびWriteStrヘルパーを重複排除しました:FPdfCompressはこれらをFPdfPdfCommonからインポートするようになり(そのWriteBytesToStream/WriteAnsiToStreamエイリアスは廃止)、FPdfPdfa内の冗長な 3 引数のBytesToAnsiオーバーロードは削除されました。FPdfAsn1は暗号化レイヤーを適合性レイヤーユニットから独立させておく設計のため、ローカルコピーを保持します
修正 (Fixed)
TPdf.LoadDocument(ファイル、メモリ、TBytes、TMemoryStream、カスタムストリーム)およびTPdf.CreateDocumentにおけるリソースリークを修正しました:FPDF_LoadDocument/FPDF_CreateNewDocumentが成功した後にInitializeFormFillまたはReloadPageが発生した場合、その時点でFActiveはまだ False であったため、ネイティブのFPDF_DOCUMENTハンドルがリークしていました。各パスはロード後のセットアップをtry/exceptで囲み、失敗時にドキュメントを閉じることで、コンポーネントをクリーンに非アクティブにするようになりました- よりわかりやすい PDFium DLL ロード診断:
CheckLoadLibraryはERROR_BAD_EXE_FORMAT(193)を検出し、一般的な OS エラーのみを中継する代わりに、対応するDLLs/Win32またはDLLs/Win64ビルドを指し示す 32/64 ビットアーキテクチャの不一致を報告するようになりました。CheckGetProcAddressは、必要なエクスポートが欠落している場合、単なる OS の「手続きが見つかりません」というテキストではなく、配置されたpdfium.dllがバインディングよりも古いことを示すようになりました
Version 2.10.1
修正 (Fixed)
- PAdES SignerInfo sid 標準化: 署名者識別子が RFC 5652 §5.3 の
issuerAndSerialNumber形式(issuer Name + serialNumber、いずれも署名者証明書 DER からそのまま抽出)を使用するようになり、Adobe Acrobat やその他の準拠バリデータが拒否していた以前の非標準subjectKeyIdentifier+ full-cert SHA-256 プレースホルダー形式に取って代わりました。新しい TbsCertificate DER ウォーカー(ExtractIssuerAndSerial)は issuer SEQUENCE と serial INTEGER を生の TLV バイトとして読み取ります — シリアルはInt64範囲を超えることが多いため、生の TLV が必須です。subjectKeyIdentifier形式は証明書 DER の解析に失敗した場合のフォールバックとしてのみ残ります
変更 (Changed)
TCmsSignerId.SerialNumber: Int64がSerialDer: TBytes(生の serialNumber TLV)に置き換えられました。CMS ビルダーはIssuerAndSerialNumberにスライスされた TLV をそのまま埋め込み、20 バイト CA シリアルでのInt64オーバーフローを回避します(RFC 5280 §4.1.2.2 上限)
Version 2.10.0
追加 (Added)
- PAdES B-LT 長期検証:
TPadesSignOptions.Level >= plB_LTの場合、SignPadesBytesは署名者証明書と完全な中間チェーンを格納した/DSS辞書(自己署名ルートは RFC 5652 §10.2.3 に従い除外)を運ぶインクリメンタルアップデートを追加し、さらに/Extensions /ESICLevel 1 マーカー(EN 319 142-1 §5.4.2)を付加します - PAdES B-LTA アーカイブタイムスタンプ:
Level >= plB_LTAかつTsaUrlが設定されている場合、/ByteRangeがファイル全体をカバーする Document Time-stamp 署名辞書(/SubFilter /ETSI.RFC3161)が追加され、ESIC マーカーは Level 2 に昇格します。これにより 4 つの PAdES ベースラインレベル(B-B、B-T、B-LT、B-LTA)が完成します - 証明書チェーン収集:
ResolveWinSignerはCertGetCertificateChainを呼び出し、TPadesResolvedSigner.ChainCertDerに中間 CA 証明書を設定するようになりました。これにより B-LT/DSS /Certsは外部ルックアップなしで署名を検証するために必要なすべての証明書を運びます。CertFreeCertificateContextがバインドされ、v2.8.0 で指摘された sign ごとに 1 コンテキストのリークが解消されました - PDF/A 統合ワークフロー:
TPdf.SignPadesWithPdfAはまずドキュメントを PDF/A に変換し(ライブラリが現在出力する最高レベル)、続いて要求された PAdES 署名を適用します — EN 319 142-1 附属書 A.7 が推奨する長期アーカイブコンテナパターンです
Version 2.9.0
追加 (Added)
- PAdES B-T 信頼できるタイムスタンプ:
TPadesSignOptionsにLevel、TsaUrl、Nonceフィールドが追加されました。Level >= plB_TかつTsaUrlが設定されている場合、SignPadesBytesはビルドした CMS から署名値を抽出し、それに対して RFC 3161 タイムスタンプを要求し、返された TimeStampToken を SignerInfo unsigned 属性signature-time-stampとして組み込みます — B-T 信頼済み時間のステップ(EN 319 142-1 §6.3 要求 o)です FPdfTsa: クロスプラットフォーム RFC 3161 クライアント —BuildTimeStampReq(version 1、署名値に対する SHA-256 messageImprint、nonce、certReq=true)、ParseTimeStampResp(PKIStatus 0/1 を受理、2+ を拒否、TimeStampToken ContentInfo をそのまま抽出)、RequestTimestamp(build+POST+parse のワンショット)。PadesTsaAvailableは HTTP バックエンドのないプラットフォームで機能をゲートしますFPdfTsaWin: Windows WinHttp バックエンド。winhttp.dll から動的にバインド(コンパイル時の新規依存関係はゼロ、HTTPS は Windows 証明書ストアでネゴシエート)。FPdfCryptoWinの動的バインディングパターンを踏襲しますFPdfCms:ExtractSignatureValueはビルド済み CMS を走査して生の署名オクテット(TSA ハッシュ入力)を復元し、AddSignatureTimestampToCmsはタイムスタンプ属性を運ぶ新しいunsignedAttrs [1](0xA1)で ContentInfo を再構築します。stage-1 バリデータは結果を B-T 署名として認識します
Version 2.8.0
追加 (Added)
- PAdES B-B 署名スタック: 4 つの新しい純粋 Pascal/クロスプラットフォームビルディングブロック(
FPdfSha256、FPdfAsn1、FPdfCms、FPdfCrypto)に加え Windows CNG バックエンド(FPdfCryptoWin)により、TPdf.SignPades/SignPadesToStreamが PAdES B-B 署名をエンドツーエンドで生成できるようになりました。署名者証明書は Current User “MY” ストアから SHA-1 サムプリントで解決され、RSA-PSS(推奨)、RSA PKCS#1 v1.5、ECDSA はいずれもNCryptSignHash経由でサポートされます FPdfSha256: 自己完結型 FIPS 180-4 SHA-256(Init/Update/Final + ワンショットヘルパー)。FPC 3.2.2 には SHA-2 ユニットが同梱されていないため、ライブラリが独自に所有し、すべての CMS コードパスを RTL 分岐なしで単一のTSHA256Digest型に統一しますFPdfAsn1: DER エンコーダー(TDerWriter)とリーダー(TDerReader)。SEQUENCE/SET/OID/INTEGER/OCTET STRING/UTCTime/GeneralizedTime/コンテキスト固有タグをカバーし、CMS が要求する定長エンコーディングと IMPLICIT タグ処理を備えますFPdfCms: CAdES SignedData ビルダー(BuildSignedData)。PAdES ベースラインが必須とする content-type、message-digest、signing-certificate-v2 signed 属性を出力し、signing-time と commitment-type-indication をオプションで付加します。signedAttrs ダイジェストは SET タグ付き(0x31)形式で計算され、RFC 5652 §5.4 に従い IMPLICIT [0](0xA0)タグで再出力されますFPdfCrypto+FPdfCryptoWin:PadesCryptoAvailable/ResolvePadesSignerを備える暗号バックエンド抽象化。Windows 実装は crypt32.dll / ncrypt.dll を動的にバインドします(コンパイル時の新規 DLL 依存関係なし)。ECDSA 署名は Windows IEEE P1363 r¦s 形式から CMS が要求する DERECDSA-Sig-Value形式に再エンコードされますSignPadesBytes: バイトレベルの署名注入 — 固定幅の/Contentshex スロットを予約し、カバーする/ByteRangeを計算し、ドキュメントをダイジェストし、CMS をビルド・組み込み、インクリメンタルアップデートを追加します。バリデータ(v2.7.0)は出力を PAdES B-B 署名として認識します
Version 2.7.0
追加 (Added)
- PAdES 構造バリデータ(ETSI EN 319 142-1 V1.2.1): 新しい
FPdfPadesユニットとTPdf.ValidatePadesメソッドは、/ByteRangeから到達可能な署名値辞書を検査し、/Contents内の CMSSignedDataを CAdES detached 形式を確認するのに十分な深さまで走査し、4 つのベースラインレベル(B-B、B-T、B-LT、B-LTA)と Document Time-stamp 辞書(/SubFilter /ETSI.RFC3161)を検出します - PAdES 条項レベルの問題セット: 26 の
ppei*列挙型が/SubFilterの妥当性(adbe.pkcs7.sha1とadbe.x509.rsa_sha1を禁止としてフラグ)、/ByteRangeのファイルカバレッジ、/Certの禁止、CMSSignedDataの形式(単一署名者、detached eContent、バージョン範囲)、必須の signed 属性(content-type、message-digest、signing-certificate/v2)、禁止ダイジェスト(MD5、SHA-1)、/Reasonとcommitment-type-indicationの相互排他(要求 d)、B-T 信頼済み時間要件、B-LT/DSS+/Certs+ ESIC Level 1 マーカー、および B-LTA Document Time-stamp + ESIC Level 2 マーカーをカバーします - DSS インジェクター:
TPdf.SaveAsPadesDss/SaveAsPadesDssToStreamはドキュメントのコピーに/DSS辞書(/Certs、/OCSPs、/CRLsストリーム配列を含む)と/Extensions /ESICマーカー(Level 1 または 2)を運ぶインクリメンタルアップデートを追加し、元のバイトを保持します — B-LT/B-LTA 検証マテリアル埋め込みステップ(条項 5.4.2)です - クロスプラットフォーム、依存関係ゼロの段階: バリデータとインジェクターは純粋 Pascal であり、サポートされるすべての IDE(Delphi、Lazarus、FPC、C++Builder)で動作します。このリリースには暗号バックエンドは不要で、新規 DLL 依存関係も導入されません
Version 2.6.0
変更 (Changed)
- 規格横断的重複排除: さらに 7 つの重複ヘルパー関数(PdfEnclosingObjNum、PdfDictRefNum、PdfExpandObjectStreams、PdfTextStr、ExtractLiteralString、ExtractXmpAttr)が個別規格ユニットから削除され
FPdfPdfCommonに統合され、約 300 行のコピーアンドペーストのメンテナンス負担が削減されました - PreflightReport 品質: 以前は汎用の “missing marker” カテゴリに落ちていた PDF/X および PDF/E コンテンツクラスの問題が、正確な Content/Metadata/Security カテゴリと条項固有の推奨事項を持つようになりました(両規格で約 15 列挙型)
- PDF/E および PDF/R テストカバレッジ: カバレッジゼロだった 6 つの列挙型にポジティブテストが追加されました(
pveiLzwForbidden、pveiJavaScriptForbidden、pveiFormFieldsForbidden、pveiEmbeddedFilesForbidden、pvriBadHeader、pvriProhibitedInfoEntry) - Lazarus ビルド修正:
Tests.PdfVT(v2.5.x で追加された Delphi 専用 DUnitX ユニット)が Lazarus プロジェクトから除外され、コンパイルが復旧しました
Version 2.5.3
追加 (Added)
- OutputIntent 完全性(PDF/X-4 §6.2.4):
pvviOutputIntentSchemeは/Sが/GTS_PDFXでない OutputIntent をフラグし、pvviOutputIntentMissingIdentifierは欠落した/OutputConditionIdentifierをフラグします - PDF/VT-2 Reference XObject 例外(§6.2.2):
pvviReferenceXObjectForbiddenは X-5g/5pg ベース上で Reference XObject を合法的に使用できるPDF/VT-2ファイルに対して発火しなくなりました - MIME boundary 文字検証(RFC 2046 §5.1.1):
vtmviBoundaryInvalidCharは文字が bchars セット外にある、または長さが 70 を超える boundary をフラグします
修正 (Fixed)
InjectPdfVTMarkersが保存オプションから Info/CreationDateと/ModDateを書き込むようになり、生成ファイルが偽のpvviInfoModDateMismatchなしでValidatePdfVTComplianceをラウンドトリップします(インジェクターは以前 XMP 日付を書き換えていましたが Info 辞書の日付を古いまま残していました)
Version 2.5.2
追加 (Added)
- Info
/ModDate整合性(§6.3 NOTE 2、PDF/X-4 ベース):pvviInfoModDateMismatchは PDF 日付から XMP 日付への正規化後にxmp:ModifyDateと一致しない Info 辞書/ModDateをフラグします - PDF/VT-2s インラインチャンク適合(附属書 A.2): MIME バリデータは各インライン
application/pdfパートに対してValidatePdfVTComplianceを実行し、非 PDF/VT 本体をvtmviInlinePdfNotPdfVTでフラグするようになりました
Version 2.5.1
追加 (Added)
- DParts チャンク分割検証(ISO 16612-2 §6.5 表 4):
pvviDPartsBadChunkingは非最終サブ配列がちょうど 8192 エントリでない、または最後のサブ配列が 1..8192 外である/DParts配列をフラグします - RecordLevel ストリーム間整合性(附属書 A.2): PDF/VT-2s MIME バリデータは各インライン PDF の
/RecordLevelを抽出し、vtmviRecordLevelMismatchで不一致をフラグし、既存の NodeNameList チェックを補完します - 繰り返しグラフィックオブジェクトヒント(§6.7):
pvviGtsScopeInvalidValueは {SingleUse, Record, File, Stream, Global, Unknown} 外の/GTS_Scopeをフラグします。pvviGtsScopeRecordWithoutRecordLevelは/RecordLevelのない/Recordをフラグします。pvviGtsXidNotUuidは RFC 4122 uuid: URI でない/GTS_XIDをフラグします。pvviGtsEnvMissingは/GTS_Scopeが Stream または Global の場合に欠落した/GTS_Envをフラグします(§6.7.4) - MIME 前方参照検出(附属書 A.2):
vtmviForwardReferenceはストリーム内の以前の添付パートで導入されていないファイル名(/EF /F経由)を引用するインライン PDF をフラグします
修正 (Fixed)
FPdfPdfvtMimeのExtractNodeNameListFromPdfとExtractRecordLevelFromPdfは、AnsiFindKeyが返す 1 ベースのオフセットが展開された PDF への絶対バイトオフセットとして扱われるという繰り返し発生する off-by-one エラーを解決しました
Version 2.5.0
追加 (Added)
- PDF/VT Document Part Metadata(DPM、ISO 16612-2 §6.6):
TPdfVTSaveOptionsにDpmEntriesとDpmTargetが追加され、ライターが合成された DPart ノードに/DPM辞書を付加できるようになりました。キー名検証は附属書 E の第二クラスプレフィックスルールとバリデータ側の §6.6 NMTOKEN / 一意性 /GTS_Managed形式ルールに対して行われます - PDF/VT-2s ストリーミング交換(附属書 A): 新しい
FPdfPdfvtMimeユニットがインライン PDF/VT チャンクと添付 ICC プロファイルを運ぶmultipart/mixedMIME エンベロープ向けにBuildPdfVT2sStreamとValidatePdfVT2sStreamを提供します。X-PDFVT-Stream-version: 1ヘッダー順序ルールとストリーム間NodeNameList整合性チェックを備えます TPdf.ValidatePdfVTはFPDFDoc_GetJavaScriptActionCountにより権威ある JavaScript-action カウントを実行するようになり、バイトレベルの/JavaScript名スキャンを補完します
修正 (Fixed)
- PDF/X-4 ベースでの PDF/VT
Trappedの正確性:ptvUnknown列挙値が削除され(PDF/X-4 は/Unknownを禁止)、ptvUnspecifiedは書き込み時に/Falseに正規化され(欠落した/Trappedも禁止)、新しいpvviTrappedInvalid問題が不在またはUnknown値をフラグします ValidatePdfVTComplianceはスキャン前にオブジェクトストリーム(PdfExpandObjectStreams)を展開するようになり、圧縮 ObjStm 内に格納されたカタログ、OutputIntent、Metadata 辞書(PDF 1.5+、PDF/X-4 プロデューサーで典型)がバイトレベルルックアップで到達可能になりました
変更 (Changed)
- PDF/VT-1 は完全な PDF/X-4 コンテンツ禁止を継承するようになりました:
pvviAcroFormForbidden(/AcroFormまたは/XFA)、pvviAdditionalActionsForbidden(カタログ/AA)、pvviMissingTrimBox、pvviReferenceXObjectForbidden(Reference XObject、X-5g/5pg のみ) - 規格横断的重複排除:
BuildDictObj、IccComponentCount、組み込み sRGB ICC プロファイル(GetSrgbIccProfile)、PdfTextStr、PdfEnclosingObjNum、PdfDictRefNum、PdfExpandObjectStreamsがFPdfPdfa/FPdfPdfx/FPdfPdfvt内の 3 重複製ローカルコピーからFPdfPdfCommonの単一の正規の場所へ昇格されました。3144 バイトの ICC リテラルはコードベースに正確に 1 つだけ存在するようになりました
Version 2.4.0
修正 (Fixed)
InjectPdfUaMarkersが cross-reference-stream ベースでトレイラー of/Info参照をドロップしなくなりました: ローカルのSourceTrailerInfoRef(xref-stream のフォールバックが欠落していたもの)が、共通のPdfSourceTrailerInfoRef(v2.0.0 以降フォールバックを備えていた PDF/A コピーから昇格)に置き換えられました- 共通の
PdfReadStreamBytesが間接的な/Length N G R参照(ローカルの PDF/A コピーから移植)を処理するようになり、間接的な Length を使用するツール(Acrobat、Ghostscript)によって生成された XMP メタデータストリームを PDF/VT、PDF/R、および PDF/E バリデータが誤読またはスキップしなくなりました
変更 (Changed)
- 規格横断的な重複排除:
FPdfPdfaおよびFPdfPdfx内のローカルなPdfReadTrailerコピー、FPdfPdfaおよびFPdfPdfua内のローカルなSourceTrailerInfoRefコピー、およびFPdfPdfa内のローカルなPdfReadStreamBytesがすべて削除され、共通のFPdfPdfCommonバージョンがどこでも適用されるようになりました。これにより、約 330 行の重複コードが削減され、コピー間の同期を維持するメンテナンス負担が解消されました - PDF/X テスト債務の解消: 以前はカバレッジがゼロだった 7 つの content-class 列挙型がポジティブテストを獲得しました(
pvxiLzwForbidden、pvxiJavaScriptForbidden、pvxiFormFieldsForbidden、pvxiAdditionalActions、pvxiEmbeddedFilesForbidden、pvxiMissingTrimBox、pvxiTrappedNotSet)
Version 2.3.0
変更 (Changed)
- PDF/A テスト債務の解消が継続: カバレッジがゼロだったさらに 3 つの列挙型がポジティブテストを獲得しました;
pvaiForbiddenRenderingIntent(§6.2.9)は content stream 内の非標準の rendering-intent 名をフラグ立てします;pvaiJpeg2000Violation(§6.2.2)は Part 2 において/NumComponentsが {1,3,4} の範囲外である JPXDecode 画像をフラグ立てします;pvaiInlineImageLzwForbidden(§6.1.10)は Part 2 において LZW フィルタを使用しているインライン画像をフラグ立てします
Version 2.2.0
変更 (Changed)
- 相互参照ストリームの回帰テスト:既存の
Validate_XrefStreamTrailer_DetectsConformanceが、カタログの/Metadata参照が解決され、XMP のpdfaid:partが xref-stream ベースで読み取られること(単に/Root+/IDだけでなく)も検証するようになりました;新しいInjectPdfA_XrefStreamBase_RoundTripsテストにより、v2.0.0 で追加されたインジェクターの xref-stream パスが保護されます;また、2つの規格横断テスト(PdfE_XrefStreamBase_NotRejectedAsUnparsable、PdfR_XrefStreamBase_NotRejectedAsUnparsable)により、PDF/E および PDF/R 検証ツールが xref-stream PDF を解析不能として拒否しなくなったことを検証します - PDF/A テスト負債の解消:
Validate_MinimalPdf_FlagsRequiredMarkersが、最小限の構成の PDF がpvaiMissingPdfAIdentifier、pvaiMissingOutputIntent、pvaiMissingIccProfile、pvaiMissingXmpMetadata、およびpvaiMissingXmpDatesをトリガーすることをアサートするようになり、すでに同等のテストを備えていた PDF/E および PDF/X 検証ツールとの対称性のギャップが解消されました;カバレッジがゼロだったさらに2つの列挙型(pvaiUnembeddedFont、pvaiSubsetMissingCidSet)に正常系テストが追加されました
Version 2.1.0
修正 (Fixed)
- PDF/E が v2.0.0 の相互参照ストリーム修正から誤って除外されていました:
InjectPdfEMarkersとValidatePdfEComplianceの両方が依然としてAcceptXrefStreamなしでPdfReadTrailerを呼び出していたため、PDF/E インジェクターが PDF 1.5+ の出力(pdfium のSaveAsCopyデフォルト)に対して警告なしで失敗していました;現在は両方の呼び出し元でTrueが渡されるようになっています - 共有されている
PdfReadTrailerの相互参照ストリーム・フォールバックに、PDF/A および PDF/X のローカルコピーがすでに備えていた/Type /XRefガードが追加されました;これにより、無関係な辞書を指す破損したstartxrefオフセットが、トレーラーとして誤って解析される代わりに、正常にエラーとして失敗するようになります ValidatePdfUaCompliance(v2.0.0)の間接参照/Langリゾルバーが到達不能になっていました:PdfFindObjDictは<<辞書のみを検出しますが、/Lang文字列オブジェクトは辞書を持たない(...)または<...>です;文字列トークンを特定する直接的なオブジェクトボディ・スキャンに置き換えられました
変更 (Changed)
- 共有されている
FPdfPdfCommonバージョンとバイト単位で同一のコピーであった7つの不要な(デッドシャドウ)ヘルパー重複(PdfStructureBytes、PdfHasName、PdfCountName、BuildStreamObj)が、FPdfPdfaおよびFPdfPdfuaから削除されました;これにより、共有されたバージョンがusesを介してすべての場所に適用されるようになります
Version 2.0.0
修正 (Fixed)
- 複数規格における警告なしの失敗:共有の
PdfReadTrailerヘルパー(PDF/UA、PDF/X、PDF/VT、および PDF/R のマーカーインジェクターと検証ツールで使用)がAcceptXrefStreamパラメータを受け入れるようになり、trailerキーワードが存在しない場合(PDF 1.5+)は相互参照ストリーム・オブジェクト辞書にフォールバックするようになりました;以前は、相互参照ストリームを使用する pdfium のSaveAsCopy出力によってすべてのマーカーインジェクターが警告なしで失敗していました(ソースバイトが変更されずにそのままコピーされ、呼び出し自体は成功を返していました);また、PDF 2.0 ベースが常に相互参照ストリームである PDF/R-1.0 検証ツールは、実質的に機能していませんでした(no-op);PDF/A 検証ツールの成熟した実装が共有ヘルパーに移植され、すべての規格がその恩恵を受けるようになります InjectPdfUaMarkersおよびInjectPdfAMarkersでのトレーラー辞書スキャンにおいて、単なる>>検索の代わりに、入れ子の深さを考慮したPdfDictEndを使用するようになりました;これにより、ネストされた辞書を含むトレーラー(例:/Encrypt << ... >>)が、末尾の/Infoエントリの前に途切れることがなくなります
変更 (Changed)
TPdf.ValidatePdfUaは、高精度な Pdfium オブジェクトモデルによるpvuaiPdfiumFontNotEmbeddedがすでに発生している場合、粗いバイトレベルのpvuaiFontNotEmbeddedを抑制するようになりました;これにより、プリフライトレポートに同じ欠陥に対して重複に近い「フォントを埋め込んでください」という行が2つ記載されることがなくなりますpvuaiLangInvalidFormat(§7.2)が、間接参照の/Lang(N 0 R)をその文字列オブジェクトに解決してコンテンツを検証するようになりました;これにより、間接的に参照される言語タグがブラインドスポットにならなくなります
Version 1.99.0
修正 (Fixed)
pvuaiLangInvalidFormat(§7.2) において、16進エンコードされた/Lang文字列が無条件でパスしないようになりました: UTF-16BE ペア(FE FFBOM 付き)および素の ASCII 16進文字列がデコードされ、リテラル(...)文字列と同じ BCP 47 文法チェックが行われるようになったため、不正な16進形式の/Langは検出され、適合するもの(UTF-16BE のen-USなど)が誤って検出されるリスクがなくなりました
変更 (Changed)
pvuaiFontMissingToUnicode(§7.21.7) において、仕様に記載された4つの除外条件と一致するように、/WinAnsiEncodingおよび/MacRomanEncodingに加えて/MacExpertEncodingも除外されるようになりました
Version 1.98.0
追加 (Added)
pvuaiNeedAppearancesTrue(§7.18.4) は、/NeedAppearancesフラグが true である AcroForm にフラグを立てます。これにより、ウィジェットの外観が信頼性を持ってロックされず、支援技術がそれらを構造ツリーに関連付けることができなくなるためです。PDF/A 検証ツールから移植され、スキャン対象を絞り込むために/AcroFormの存在を条件として制限されます
変更 (Changed)
- veraPDF コーパスの回帰テスト: §7.20 の Reference-XObject のパス/不合格ペア、および §7.21.4.2 のサブセットの CharSet/CIDSet のパス/不合格ペアを
Live_Corpus_ValidatePdfUaMatchesConformanceに統合しました。また、§7.21.7 の ToUnicode-forbidden-value と §7.18.6.2 の media-clip パスサンプルも、偽陽性防止ガードとして組み込まれました(これらの不合格サンプルはバイトレベルスキャンで検出できない辞書レイアウトを使用しているため、パス側のみが組み込まれています) - コーパスのパス側アサーションリストに 15 個の新しいゼロ偽陽性ガードが追加され、アクティブなすべての
pvuai*バイトレベルおよび構造チェックが適合サンプルに対してテストされるようになりました(以前は 60 個のアクティブな問題のうち約 30 個のみがガード対象でした)。pvuaiLangInvalidFormatガードは、バイトレベルチェッカーがデコードできない16進エンコードされた/Lang文字列を安全のためにフラグ検出するため、意図的に除外されています
Version 1.97.0
修正 (Fixed)
ValidatePdfUaStructureElementsの堅牢化:EnclosingTableの親チェーン走査にホップカウンター(要素数で制限)が追加され、合成構造要素配列の不正なParentIndex循環によって呼び出し元がハングアップすることがなくなりました。ValidatePdfUaPageContentTaggingのマーク付きコンテンツ ID(marked-content-ID)配列割り当て制限は最大100万エントリに設定され、不正または悪意のあるMarkedContentIDによる数 GB のメモリ割り当てを防止します
変更 (Changed)
pvuaiOrderedListMissingListNumbering列挙型のドキュメントコメントが、実際のチェック動作を正確に説明するように修正されました:ListNumberingの値が ISO 32000-1 Table 347 の範囲外であるL要素にフラグを立てます(属性が存在しない場合はフラグを立てません)。以前のコメントは、属性が欠落している順序付きリストも検出するかのように記述されていましたが、実際の実装ではその検出は行われません- 2つの
7.21.3.3-t02WMode 不一致コーパス不合格サンプルがLive_Corpus_ValidatePdfUaMatchesConformanceに組み込まれました — v1.95.0 以降、CMap ストリームが FlateDecode で解凍されるようになったため、辞書とコンテンツの比較が読み取り可能な側で実行されるようになりました。古くなった「組み込まれていない」というコメントは削除されました
Version 1.96.0
追加 (Added)
- 規格間の整合性:
TPdf.ValidatePdfUaに PDF/A 検証ツールから移植された2つのチェックが追加されました。pvuaiAnnotationFlagsViolation(§7.18.1) は、Hidden、Invisible、または NoView フラグを持つ除外対象外の注釈にフラグを立てます。これにより支援技術の読み上げフローが妨げられるためです。pvuaiActionTargetMissing(§7.18.5) は、必要なターゲットキー(/F+/D、/URI、/F)が欠落している GoToR、URI、または SubmitForm アクションにフラグを立て、支援技術でリンクを利用できないようにします
修正 (Fixed)
- 複数ページ間での構造ツリーのマージ:
TPdf.ValidatePdfUaのAllElems累積ループにおいて、各要素のParentIndexがページローカル配列からマージされた配列に再ベースされるようになりました。これがないと、ページ 2 の子要素がページ 1 のスライスを指すページローカルインデックスを保持したままになり、ParentIndex に依存するすべてのチェック(テーブル/リスト構造、§7.4.4 H の子要素数、EnclosingTable)が警告なしで破損していました - RoleMap のパース:
PdfReadRoleMapPairsは、値が間接参照(N 0 R)または配列([...])である場合(どちらも ISO 32000-1 14.8.5.1 において有効な RoleMap 形式です)に、キー/値のスキャン全体を終了しないようになりました。スキャンを終了(Break)する代わりに該当エントリをスキップ(Continue)するようになったため、間接参照や配列エントリの後にマッピングされたタイプで発生していたpvuaiRoleMapUnresolvedの偽陽性が解消されました
変更 (Changed)
FPdfPreflightReport: 以前は包括的な「マーカー不足」カテゴリと推奨事項に分類されていた 18 個のアクティブなTPdfUaValidationIssue値が、正確なカテゴリ(Structure、Content、Metadata、Security)および箇条書き(項)固有の推奨事項を持つようになりました。また、PDFSpecComplianceMatrix.mdにおけるpuaNone / pua1→pucNone / puc1の誤字も修正されました
Version 1.95.0
変更 (Changed)
TPdf.ValidatePdfUaのリコールおよび健全性パス: §7.21.3.3 のpvuaiCMapWModeMismatchチェックおよび §7.21.7 のpvuaiToUnicodeForbiddenValueチェックにおいて、スキャン前にFlateDecode圧縮された CMap / ToUnicode ストリームを解凍するようになりました(以前は未圧縮のストリームのみが判定されており、既知の偽陰性となっていました)。共有ヘルパーのPdfInflateおよびPdfReadAndDecodeStreamがFPdfPdfa/FPdfPdfxからFPdfPdfCommonに昇格され、すべての適合ユニットで1つのコピーを共有するようになりました
追加 (Added)
pvuaiSubsetCharSetEmpty(§7.21.4.2) は、値が空の/CharSetキーを持つ Type 1 サブセットのFontDescriptorにフラグを立てます(既存のpvuaiSubsetMissingCharSetはキーの欠落のみを検出していました)。CID を持たないフォントが空のビットマップを保持することは適法であるため、空の/CIDSetはフラグ検出されません
Version 1.94.0
追加 (Added)
- 2回目の
TPdf.ValidatePdfUa監査により、条項ごとのレビューおよび、すでにラップされているが PDF/UA パスで使用されていなかった Pdfium ネイティブ API の再スキャンによって明らかになった ISO 14289-1 の 6 つのギャップが解消されました。pvuaiHeadingFormatInvalid(§7.4.3) は、H で始まるが純粋なアラビア数字の代わりに区切り文字、スペース、またはローマ数字を含むユーザー定義の見出しタグにフラグを立てます。pvuaiMissingDocumentOutline(§7.17, 推奨) は、ブックマークのアウトラインがない複数ページのドキュメントにフラグを立てます(単一ページのドキュメントは除外されます)。pvuaiStructElementLangInvalid(§7.2) は、有効な BCP 47 タグではない構造要素の/Lang値にフラグを立てます。pvuaiWidgetMissingPrintField(§7.14 / §7.18.4) は、PrintField 属性オーナーが欠落している Widget 構造要素にフラグを立てます。pvuaiLinkNotInStructureTree(§7.18.5) は、/Subtype /Linkの注釈が Link 構造要素として公開されていないドキュメントにフラグを立てます。pvuaiPdfiumAnnotationMissingContentsおよびpvuaiPdfiumLinkMissingContents(§7.18.1 / §7.18.5) は、非表示のもの、CropBox 範囲外のもの、Popup および Widget 注釈を除外する正確な Pdfium オブジェクトモデルによる注釈スキャンを追加し、/Fフラグや/Rectを読み取れないバイトレベルヒューリスティクスの偽陽性を解消します
Version 1.93.0
追加 (Added)
TPdf.ValidatePdfUaは、PDF/A ラウンド 7 のアーキテクチャを反映して、バイトレベルのインスペクターの上に Pdfium オブジェクトモデルパスをレイヤー化するようになりました:FPDFTextObj_GetFont→FPDFFont_GetIsEmbeddedを介して各ページのテキストオブジェクトを走査し(pvuaiPdfiumFontNotEmbedded, §7.21.4)、FPDFText_HasUnicodeMapError(pvuaiPdfiumUnicodeMapError, §7.21.7)およびFPDFText_GetUnicode(pvuaiPdfiumNotDefGlyph, §7.21.8)を介してすべての文字をスキャンします。これは、フォントプログラムがゼロ個の場合、または/ToUnicodeが全く存在しない場合にのみ機能するバイトレベルのヒューリスティクスよりも正確です。この走査は 3 つのレベルでショートサーキットします: 3つの Pdfium レイヤーの問題すべてが設定された場合にページループが終了し、最初の埋め込みなしフォントが検出された場合にオブジェクトごとのループが終了し、UnicodeMapErrorが既に発生している場合に文字スキャンでの.notdefパスがスキップされます。PDF/UA は、Pdfium オブジェクトモデルレイヤーを持たない最後の PDF 標準検証ツールでした
Version 1.92.0
追加 (Added)
Tests.PdfRを作成しました — PDF/R-1 検証ツール(FPdfPdfr)の最初のテストファイルであり、ヘッダー検証、ObjStm の禁止、ラスターマーカーの検出、および適合ファイルの偽陽性防止ガードを網羅しています。これにより、6 つの PDF 標準テストスイートすべてに専用のテストファイルが用意されました: PdfA(80), PdfUa(101), PdfX(7), PdfE(5), PdfVT(15), PdfR(4) = 計 212 テスト
Version 1.91.0
追加 (Added)
ValidatePdfEおよびValidatePdfVTに、以前は PDF/A、PDF/UA、および PDF/X 検証ツールでのみ利用可能だったコンテンツレベルのチェックが追加されました:pveiLzwForbidden,pveiJavaScriptForbidden,pveiFormFieldsForbidden(PDF/E のみ),pveiEmbeddedFilesForbidden(PDF/E のみ),pveiOpiForbidden,pvviLzwForbidden,pvviJavaScriptForbidden,pvviEmbeddedFilesForbidden,pvviOpiForbidden。TPdf.ValidatePdfEおよびTPdf.ValidatePdfVTには、FPDFFont_GetIsEmbeddedを介してページのテキストオブジェクトを走査し、最初の埋め込みなしフォントでショートサーキットする Pdfium オブジェクトモデルレイヤー(pveiPdfiumFontNotEmbedded/pvviPdfiumFontNotEmbedded)も追加されています
Version 1.90.0
追加 (Added)
TPdf.ValidatePdfXは、バイトレベルのインスペクターの上に Pdfium オブジェクトモデルパスをレイヤー化するようになりました:FPDFTextObj_GetFont→FPDFFont_GetIsEmbeddedを介して各ページのテキストオブジェクトを走査し、埋め込みのないフォントをpvxiPdfiumFontNotEmbeddedとして報告します。これは、フォントプログラムがゼロ個の場合にのみ機能するバイトレベルのヒューリスティクスよりも正確です。この走査は、検出された最初の埋め込みなしフォントでショートサーキットします
変更 (Changed)
TPdf.ValidatePdfUaの構造ツリー走査: ページごとのValidatePdfUaPageContentTagging呼び出し(マーク付きコンテンツ ID の要求マップを構築し、すべてのテキスト/画像オブジェクトをクロスチェックする処理)において、一度pvuaiUntaggedContentが検出された後は、それ以降のページでの呼び出しがスキップされるようになりました。ページ間チェック用の構造要素の収集(注記のユニーク ID、見出しシーケンスなど)は行われますが、負荷のかかるページごとのコンテンツタグ付けパスは早期に終了します
Version 1.89.0
変更 (Changed)
TPdf.ValidatePdfAの Pdfium オブジェクトモデルレイヤーのパフォーマンス向上: ページ/オブジェクトの走査が 3 つのレベルでショートサーキットするようになりました。すべての対象となる Pdfium レイヤーの問題が既に検出された場合にページループが終了し、両方のオブジェクトごとの問題(フォント埋め込み + 透過性)が設定された場合にオブジェクトごとのループが終了し、UnicodeMapErrorが既に発生している場合にテキストページの文字スキャンでの.notdefパスがスキップされます。Assigned()API 利用可能性チェックと適合フラグは、ループの前にローカルのブール値に一度キャッシュされるようになり、すべてのページ/オブジェクト/文字で再評価されなくなりました。これにより、大きな非適合ドキュメントではすべてのページをスキャンする代わりに最初のページで走査を停止できるようになり、適合ドキュメントではページごとのオーバーヘッドが低減されました(Assignedの繰り返しの呼び出しが不要になりました)
Version 1.88.0
追加 (Added)
ValidatePdfXに、ファイルフォーマットマーカーを超えて PDF/X が課す印刷交換制限をカバーする 8 つの新しいコンテンツレベルのTPdfXValidationIssue値が追加されました:pvxiLzwForbidden(/LZWDecode)、pvxiJavaScriptForbidden(/JavaScript)、pvxiFormFieldsForbidden(/AcroForm//XFA)、pvxiAdditionalActions(/AA)、pvxiEmbeddedFilesForbidden(/EmbeddedFiles//FileAttachment)、pvxiOpiForbidden(/OPI//Alternates)、pvxiMissingTrimBox(いずれのページにも/TrimBoxが存在しない)、およびpvxiTrappedNotSet(/Trappedが欠落しているか、または/Unknown)。PDF/X 検証ツールは以前は XMP/OutputIntent マーカーのみをチェックしていましたが、これが最初のコンテンツレベルのパスになります。すべての適合ユニットで使用できるように、共有のPdfStructureBytes、PdfHasName、およびPdfCountNameヘルパーがFPdfPdfCommonに追加されました
Version 1.87.0
追加 (Added)
- PDF/UA 検証が ISO 14289-1 §7.21.3 の複合フォント規則に対応しました:
pvuaiCidSystemInfoMismatchは埋め込み CMap と下位 CIDFont のRegistry/Orderingが一致しない Type0 フォント、または CIDFont のSupplementが CMap のものを超えているフォントにフラグを立てます。pvuaiCMapNotEmbeddedは名前参照 (EncodingまたはUseCMap) されている CMap のうち ISO 32000-1 Table 118 の定義済み CMap でないものにフラグを立てます。pvuaiCMapWModeMismatchは辞書のWModeがストリーム内容の WMode と異なる埋め込み CMap にフラグを立てます
修正 (Fixed)
- §7.21.3.2 の
pvuaiCidFontMissingCidToGidMapチェックが、Subtypeキーと値の間に改行が入っている CIDFontType2 辞書を見逃していた問題を修正しました。また、CIDToGIDMapの名前値がIdentity以外の場合もフラグを立てるようになりました
Version 1.86.0
追加 (Added)
- PDF/UA 検証が ISO 14289-1 §7.21.6 の TrueType エンコーディング規則に対応しました:
pvuaiTrueTypeEncodingInvalidはEncodingが存在しない、またはMacRomanEncodingでもWinAnsiEncodingでもない (直接指定およびBaseEncoding経由を含む) 非シンボリック TrueType フォントにフラグを立てます。pvuaiSymbolicTrueTypeEncodingは標準外のEncoding名を持つシンボリック TrueType フォントにフラグを立てます
Version 1.85.1
変更 (Changed)
- ISO 14289-1 §7.18.3 のタブ順序チェック
pvuaiMissingTabsOrderがページ単位で実行されるようになりました。注釈を含む各ページはそれぞれ自身のページ辞書に/Tabs /Sを宣言する必要があるため、適合しているページが注釈のないページを隠蔽することがなくなりました
Version 1.85.0
追加 (Added)
- PDF/UA 検証が ISO 14289-1 §7.15 に基づき、動的 XFA フォームと静的 XFA フォームを区別するようになりました:
pvuaiXfaDynamicは XFA 設定でdynamicRenderがrequiredに設定されているフォームにフラグを立てます
変更 (Changed)
- 以前の任意 XFA 候補フラグ
pvuaiXfaPresentは廃止され、今後は発生しません (静的 XFA は §7.15 に適合します)。API 互換性のため enum 値は残ります
Version 1.84.0
追加 (Added)
- PDF/UA 検証が ISO 14289-1 §7.1 で要求されるタグなし実コンテンツを検出するようになりました:
pvuaiUntaggedContentは、マークドコンテンツ ID によるページの構造ツリーへの関連付けがなく、かつ Artifact としてマークされていない描画テキストおよび画像オブジェクトにフラグを立てます - 新しいページレベルのヘルパー
GetPageContentMarkInfosおよびValidatePdfUaPageContentTaggingと、直接利用できるTPdfPageContentMarkInfoレコードを追加しました
Version 1.83.0
追加 (Added)
- PDF/UA 検証が ISO 14289-1 §7.4.4 の見出しモデルを適用するようになりました:
pvuaiHeadingModelMixedは汎用タグHと番号付き見出しH1..Hnを混在させているドキュメントにフラグを立て、pvuaiHeadingMultipleInNodeは子にH見出しを複数持つ構造ノードにフラグを立てます
Version 1.82.0
追加 (Added)
- PDF/UA 検証が ISO 14289-1 §7.1 で要求される RoleMap を解決するようになりました:
pvuaiRoleMapRemapsStandardは標準構造型を再定義する RoleMap エントリにフラグを立て、pvuaiRoleMapUnresolvedは RoleMap チェーンが欠落・途絶・循環している使用済み非標準構造型にフラグを立てます — 標準型に到達する間接チェーンは許容され、未使用の RoleMap エントリは判定されません - 直接利用できる新しいヘルパー
PdfUaIsStandardStructType、PdfReadRoleMapPairs(PDF 名の#hhエスケープデコード対応)、およびValidatePdfUaRoleMapUsageを追加しました
Version 1.81.0
追加 (Added)
- PDF/UA 検証が ISO 14289-1 §7.6 で要求される ISO 32000-1 のリストタグ付けに対応しました:
pvuaiListStructureInvalidは L コンテナ外の LI 項目と LI 項目外の Lbl/LBody 部分にフラグを立てます。入れ子のリストおよび Note・BibEntry 要素内での正当な Lbl 使用は許容されます
Version 1.80.0
追加 (Added)
- PDF/UA 検証が ISO 14289-1 §7.5 で要求される ISO 32000-1 のテーブルタグ付けに対応しました:
pvuaiTableStructureInvalidは TR 行外の TH/TD セルおよびテーブルコンテナ外の行・行グループにフラグを立てます。pvuaiTableHeaderMissingScopeは Scope 属性および Headers/ID 関連付けのいずれによっても関係性が確定できないヘッダーセルにフラグを立てます。pvuaiTableHeadersUndefinedIdは構造要素 ID を定義していないドキュメント内の Headers 参照にフラグを立てます TPdfStructureElementが構造ツリーのウォーク時に解決されるテーブル属性Scope、HasHeaders、HeadersIds、ColSpan、RowSpanを公開するようになりました
変更 (Changed)
- 構造ツリーのウォークが、各要素の属性辞書を属性ごとに個別スキャンするのではなく、1回のパスですべてのレイアウト属性およびテーブル属性を読み取るようになりました
Version 1.79.1
追加 (Added)
- 既存の Delphi コンソールサンプルに加えて、
AnnotationsLabサンプルを Lazarus と C++Builder に移植しました
修正 (Fixed)
- クアッドポイントを使用するマークアップ注釈 (Highlight, Underline, StrikeOut, Squiggly) に対して、置き換えるためのクアッドスロットが新しい注釈にまだ存在しなかったため、
TPdf.CreateAnnotationが「Cannot set attachment points」エラーを発生させる可能性があった問題を修正しました。代わりに最初のクアッドを追加するようにしました
Version 1.79.0
追加 (Added)
- 新しい
AnnotationsLabDelphi コンソールサンプル: Text、Highlight、Square、および Circle の注釈を作成して PDF に書き込み、ファイルを再読み込みしてページの注釈リストを列挙します
Version 1.78.0
追加 (Added)
- 新しい
TPdf.MeasureTextおよびTPdf.MeasureTextWidth: ページにコンテンツを追加することなく、特定のフォントとサイズの文字列のレンダリングされる幅と高さを (PDF ユーザー単位で、1 単位 = 1/72 インチ) 測定し、AddTextの上にレイアウトやワードラップのロジックを実装できるようにしました。クラスヘルパーとして独立したFPdfMeasureユニットによって提供されます - 新しい
TPdf.WrapText:MeasureTextWidthを基に構築された貪欲なワードラップで、スペースでテキストを分割し、指定された幅 (PDF ユーザー単位) を超えないように単語を行にパックします。長すぎる単一の単語は (単語内での分割なしに) 独自の行となり、ラップされた行を配列として返します
Version 1.77.0
追加 (Added)
ValidatePdfAに、以前のギャップ監査で「NO」または「リーダーの動作 (reader behaviour)」と評価されていた条項をカバーする、3つの新しいTPdfAValidationIssue値を追加しました (追加された序数で既存の値は変更されません):pvaiPdfiumNotDefGlyph(PDF/A-2 6.2.11.8 —.notdefグリフ参照のランタイム症状である、マッピングエラーなしに Unicode 0 に解決される文字。Pdfium のオブジェクトモデルレイヤーを介して検出されます)、pvaiWordBreakMissing(Level A 6.8.3.2 — スペースを含まない 20 文字より長いコンテンツストリームの表示文字列で、結合された単語の違反である可能性が高いもの。CJK の誤検知を回避する粗いヒューリスティック)、およびpvaiLinkActionMissingTarget(6.6.3 — GoToR/URI/SubmitForm アクションに表示ターゲットキーが欠落しているため、リーダーがそれを表示できないもの)
Version 1.76.0
追加 (Added)
ValidatePdfAに 3 つの新しいTPdfAValidationIssue値を追加しました (序数を末尾に追加、既存の値は変更なし):pvaiNameNotValidUtf8(PDF/A-2/3 6.1.8 — 0x80 以上のバイトを含み、有効な UTF-8 を構成しない/BaseFontまたは/FontNameトークン)、pvaiInlineImageLzwForbidden(PDF/A-2/3 6.1.10 — ページコンテンツストリーム内のインライン画像が LZW または Crypt フィルターを使用している)、およびpvaiTrueTypeDifferencesForbidden(6.3.7 Cor.2 — Encoding 辞書に/Differencesが含まれる非シンボリック TrueType フォント)
Version 1.75.0
追加 (Added)
ValidatePdfAに 3 つの新しいTPdfAValidationIssue値を追加しました (序数を末尾に追加、既存の値は変更なし):pvaiIntegerImplementationLimit(PDF/A-2/3 6.1.13 — 32 ビット符号付き整数の上限 2,147,483,647 を超える数値トークン)、pvaiBlendModeNotWhitelisted(PDF/A-2/3 6.2.10 — ISO 32000-1 §11.3.5 の標準 blend-mode セット外の/BM値。Normal/Compatible のみを許可する PDF/A-1 のpvaiTransparentColorSpaceを補完)、およびpvaiHexStringOddDigits(6.1.6 — 奇数個の 16 進数字を持つ<...>16 進文字列)
Version 1.74.0
追加 (Added)
ValidatePdfAに 3 つの新しいTPdfAValidationIssue値を追加しました (序数を末尾に追加、既存の値は変更なし):pvaiPermissionsViolation(6.1.12 —/DocMDPと共に/DigestLocation、/DigestMethod、または/DigestValueを含む/Perms辞書)、pvaiTransActionForbidden(PDF/A-2 6.5.1 — Trans 画面切り替えアクション。/Transparencyの誤検出を避けるため/S /Transaction-dict パターン経由で検出)、およびpvaiPdfiumObjectTransparency(PDF/A-1 6.4 —FPDFPageObj_HasTransparencyによりページオブジェクトが実際の透明度を持つこと。バイトレベルの名前スキャンでは検出できない blend-mode/soft-mask 効果を捉えるため、v1.73.0 で導入された Pdfium オブジェクトモデル層を拡張)
Version 1.73.0
追加 (Added)
TPdf.ValidatePdfAは、バイトレベルのインスペクターの上に Pdfium オブジェクトモデルのパスを重ねるようになりました:FPDFPage_GetObject→FPDFTextObj_GetFont→FPDFFont_GetIsEmbedded経由で各ページのテキストオブジェクトを巡回し、埋め込まれていないレンダリングされたフォントをpvaiPdfiumFontNotEmbedded(ISO 19005 6.3.4) として報告し、各テキストページを読み込んでFPDFText_HasUnicodeMapErrorをスキャンし、壊れた Unicode マッピングをpvaiPdfiumUnicodeMapError(6.3.8) として報告します。これらはバイトレベルのインスペクターでは実行できないチェックであり (解決されたフォントハンドルや文字ごとのマッピング状態ではなく、名前トークンのみを認識するため)、バイトレベルの結果にマージされます。スタンドアロンのValidatePdfAComplianceバイトレベル関数は変更されていません
Version 1.72.0
追加 (Added)
ValidatePdfAに 5 つの新しいTPdfAValidationIssue値を追加しました (序数を末尾に追加、既存の値は変更なし):pvaiNeedsRenderingPresent(PDF/A-2 6.4.2 — カタログに/NeedsRenderingが含まれてはならない)、pvaiDestOutputProfileRef(PDF/A-3 6.2.3 — OutputIntent に/DestOutputProfileRefが含まれてはならない)、pvaiEmbeddedFileMissingUF(PDF/A-3 6.8 —/EFを持つファイル仕様には/UFも含まれなければならない)、pvaiXmpPacketBytesAttr(6.7.5 — XMP パケットヘッダーに非推奨のbytes=またはencoding=属性が含まれてはならない)、およびpvaiAnnotationToggleNoView(PDF/A-2 6.3.2 — アノテーションの/FToggleNoView ビット、値 512 は禁止されている)
Version 1.71.0
変更 (Changed)
ValidatePdfUaはpvuaiOrderedListMissingListNumbering(ISO 14289-1 7.6) を発生させるようになりました:構造ツリーウォーカーは、Pdfium 属性 API を介してすべてのL要素のListNumberingレイアウト属性を解決し、ISO 32000-1 の表 347 のセット (Decimal、UpperRoman、LowerRoman、UpperAlpha、LowerAlpha、None、Circle、Disc、Square) に含まれない値にフラグを立てます。リストが順序付けられていない可能性があるため、属性が存在しない場合はフラグが立てられません。これにより、ラウンド 5 の最後に記録された最後の残存する ISO 14289-1 のギャップが解消されます
Version 1.70.0
追加 (Added)
ValidatePdfUaに 4 つの新しいTPdfUaValidationIssue値が追加されました (追加された序数であり、既存の値は変更されていません):pvuaiSubsetMissingCidSet(ISO 14289-1 7.21.4.2 — CID サブセットFontDescriptorは/CIDSetを宣言しなければなりません)、pvuaiToUnicodeForbiddenValue(7.21.7 — ToUnicode CMap はどのコードもU+FEFFまたはU+FFFEにマッピングしてはなりません。非圧縮ストリームは<FEFF>/<FFFE>出力形式がないかスキャンされます)、pvuaiLangInvalidFormat(7.2 —/Langは有効な RFC 1766 / BCP 47 タグでなければなりません。許容力のある文法によりen、en-US、zh-Hans、es-419が受け入れられ、明らかに不適合な値にはフラグが立てられます)、およびpvuaiOrderedListMissingListNumbering(7.6 — API の完全性のために保持されています。順序付きリストと順序なしリストを確実に区別するには構造ツリーウォーカーが公開していないListNumbering属性値が必要なため、バリデーターによってはまだ発生しません)
Version 1.69.0
追加 (Added)
ValidatePdfUaに 2 つの新しいTPdfUaValidationIssue値が追加されました (追加された序数であり、既存の値は変更されていません):pvuaiWidgetOutsideForm(ISO 14289-1 7.18.4 — Widget 構造要素はForm要素内にネストされなければなりません。構造ツリーウォーカーは各 Widget の直接の親タイプを検証するようになりました)、およびpvuaiSubsetMissingCharSet(7.21.4.2 — Type 1 サブセットFontDescriptorは/CharSetを宣言しなければなりません。これは/FontNameの 6 文字の+サブセット名プレフィックスによって識別されます)
Version 1.68.0
追加 (Added)
ValidatePdfUaに 2 つの新しいTPdfUaValidationIssue値が追加されました (追加された序数であり、既存の値は変更されていません):pvuaiUriActionIsMap(ISO 14289-1 7.18.5 — URI アクション辞書は、アクセス可能なリンクのターゲットを無効にするため、値がtrueの/IsMapを保持してはなりません)、およびpvuaiHeadingSequenceViolation(7.4.2 — 番号付き見出しはH1から開始しなければならず、降順のシーケンスは中間のレベルをスキップしてはなりません。たとえばH1→H3は違反です)。見出しチェックは、バリデーターにおける最初の構造ツリーレベルの PDF/UA ルールです:ValidatePdfUaStructureElementsは型付き要素リストを走査し、ドキュメントの順序でH1…H6(および 7.4.3 に従いH7+) のシーケンスを検証するようになりました
Version 1.67.0
追加 (Added)
ValidatePdfUaに 5 つの新しいTPdfUaValidationIssue値が追加されました (追加された序数であり、既存の値は変更されていません):pvuaiLinkMissingContents(ISO 14289-1 7.18.5 — Link 注釈は/Contentsを介して代替説明を保持しなければなりません)、pvuaiAnnotationMissingContents(7.18.1 —/Contentsを持たない免除されていない注釈は代替説明を持たなければなりません。Popup と Widget は免除されます)、pvuaiEmbeddedFileMissingName(7.11 — ファイル指定辞書には/Fと/UFが含まれなければなりません)、pvuaiMediaClipMissingAlt(7.18.6.2 — メディアクリップデータ辞書には/CTと/Altが含まれなければなりません)、およびpvuaiCidFontMissingCidToGidMap(7.21.3.2 — 埋め込まれた Type 2 CIDFont には/CIDToGIDMapが含まれなければなりません)
Version 1.66.0
追加 (Added)
ValidatePdfUaに 5 つの新しいTPdfUaValidationIssue値が追加されました (追加された序数であり、既存の値は変更されていません):pvuaiRoleMapMissing(ISO 14289-1 7.1 — 非標準の構造タイプを持つタグ付きドキュメントは/RoleMapを保持しなければなりません)、pvuaiOptionalContentAsKey(7.10 — オプションコンテンツ構成辞書は/AS自動状態キーを保持してはなりません)、pvuaiXfaPresent(7.15 — 動的 XFA は禁止されているため、AcroForm/XFAの存在にはフラグが立てられます)、pvuaiTrapNetAnnotation(7.18.2 —/TrapNet注釈は禁止されています)、およびpvuaiReferenceXObject(7.20 —/Refマーカーをキーとする Reference XObject は禁止されています)
修正 (Fixed)
ValidatePdfUaは、暗号化されたすべてのファイルでpvuaiEncryptionPresentを誤検知しなくなりました:PDF/UA では、暗号化辞書の/Pキーのビット位置 10 (値 1024) が設定されている限り、暗号化が許可されており、これにより支援技術のアクセスが許可されます (7.16)。正確な違反は新しいpvuaiEncryptionPBitMissingを介して報告されるようになりました。pvuaiEncryptionPresentは API 互換性のために enum に保持されていますが、バイトレベルのバリデーターによって発生することはなくなりました
Version 1.65.0
追加 (Added)
ValidatePdfAに 5 つの新しいTPdfAValidationIssue値が追加されました (追加された序数であり、既存の値は変更されていません):pvaiCidFontMissingCidToGidMap(ISO 19005-1 6.3.3.2 Cor.2 — 埋め込まれた Type 2 CIDFont は/CIDToGIDMapを保持しなければなりません)、pvaiSubsetMissingCharSet(6.3.5 — Type 1 サブセットFontDescriptorは/CharSetを保持しなければなりません)、pvaiSubsetMissingCidSet(6.3.5 — CID サブセットFontDescriptorは/CIDSetを保持しなければなりません)、pvaiWidgetActionForbidden(6.6.1 — Widget 注釈は/Aまたは/AAを保持してはなりません)、およびpvaiOptionalContentAsKey(ISO 19005-2 6.9 — オプションコンテンツ構成辞書は/AS自動状態キーを保持してはなりません。これは PDF/A-2 がオプションコンテンツを許可しているため、新たに関連しています)
Version 1.64.0
追加 (Added)
ValidatePdfAに 8 つの新しいTPdfAValidationIssue値が追加されました (追加された序数であり、既存の値は変更されていません):pvaiHeaderBinaryMarkerMissing(ISO 19005-1 6.1.2 —%PDF-x.yヘッダーの後に、127 より大きい少なくとも 4 バイトの%コメントが続かなければなりません)、pvaiExternalStreamRef(6.1.7 — ストリーム辞書は/F、/FFilter、または/FDecodeParmsを保持してはなりません)、pvaiOutputIntentScheme(6.2.2 — OutputIntent の/Sは/GTS_PDFA1でなければなりません)、pvaiInfoXmpDateMismatch(6.7.3 — Info のCreationDate/ModDateはxmp:CreateDate/xmp:ModifyDateとしても表示されなければなりません)、pvaiMarkInfoMissing(6.8.2.2 — Level A では/Marked trueを持つ/MarkInfoが必要です)、pvaiAnnotationApDictViolation(6.5.3 Cor.2 — 注釈の/AP辞書には/Nのみが含まれなければなりません)、pvaiEmbeddedFileMissingAFRelationship(ISO 19005-3 Annex E.2 — 関連付けられた各ファイル指定は/AFRelationshipを保持しなければなりません)、およびpvaiJpeg2000Violation(ISO 19005-2 6.2.8.3 — JPEG2000 画像は 1、3、または 4 コンポーネントを宣言しなければなりません)
修正 (Fixed)
ValidatePdfAは、/Font << /F 5 0 R >>のような 1 文字のフォントリソース名を使用するドキュメントでpvaiAnnotationFlagsViolationを誤検知しなくなりました。/Fフラグのスキャンは、文書化された動作と一致して、注釈コンテキスト (注釈タイプの/Subtype) によってゲートされるようになりました (6.5.3)ValidatePdfAはファイルごとに PDF/A-3 関連ファイル要件を報告するようになりました:ドキュメントは、以前のドキュメント全体の any-or-none チェックではなく、/EFを介して埋め込みストリームを参照する埋め込み/Type /Filespecに/AFRelationshipが欠けている場合にのみフラグが立てられます (ISO 19005-3 Annex E.2)- 非推奨の
/SetStateアクションを/SetOCGStateとともに禁止アクションセットに追加しました。これにより、PDF Reference のアクション名が直接捕捉されるようになります (6.6.1)
Version 1.63.0
追加 (Added)
TPdf.MeasureTextとTPdf.MeasureTextWidthを追加しました。ページに内容を追加せず、指定したフォントとサイズで描画する文字の幅と高さを PDF ユーザー単位(1 単位 = 1/72 inch)で測れます。AddTextを使うレイアウト計算や自動改行に利用でき、独立したユニットFPdfMeasureの class helper として提供します
変更 (Changed)
- 3つのIDE向け
Demo\Delphi\MergePDF、Demo\CBuilder\MergePDF、Demo\Lazarus\MergePDFを強化:ファイルごとのページ範囲選択、出力パスの選択、重複除去、実行ログ、キャンセルボタン、結合完了サマリーをサポート;最初のソースのインポート時にブックマークとメタデータを引き継ぎ - すべてのIDE向け
CreatePDFデモに「ヨーロッパテキスト」オプションを追加:チェコ語・フランス語・ドイツ語・スペイン語・ポルトガル語・ポーランド語・トルコ語のアクセント付きテキストを書き込んでフォント選択Unicode処理を検証可能(旧来のEuropeanTextサンプルは統合済み) ExtractTextPagesとEuropeanTextサンプルを削除:ExtractTextPagesのページ単位テキスト出力機能はExtractTextのページ範囲・ページ区切りオプションですでにカバー済み;EuropeanTextの多言語テキストレンダリングはCreatePDFに統合済み
Version 1.62.2
修正 (Fixed)
- C++Builder ヘッダー (
.hpp) をすべての RAD Studio バージョンとプラットフォーム (Win32/Win64/Win64x) 向けに再生成しました。Pascal ソースからずれてしまっており、古い関数シグネチャと不足しているユニットがソース配布経由で C++Builder ユーザーに届いていました
Version 1.62.1
修正 (Fixed)
- RAD Studio 12 Athens 以前でのソースのコンパイルを復旧しました: PDF/UA 検証パス内の
TArray<Byte>代入が Delphi 13 専用の暗黙配列変換を使っており、古い IDE ではコンパイルできませんでした
Version 1.62.0
追加 (Added)
TPdf.RenderPageThumbnailは、文書の現在ページ、読み込まれたページを変更したりOnPageChangeを発火させたりせずに、任意のページをインデックス指定でアスペクト適合ビットマップへ描画します
修正 (Fixed)
TPdfThumbnailViewは描画中にホスト文書のPageNumberを操作しなくなりました。以前は再描画のたびにページを再読み込みし、OnPageChangeを発火し、テキストページを破棄していたため、接続されたTPdfViewを乱し再描画ループを引き起こすことがありました。サムネイルは今後RenderPageThumbnailで描画され、この副作用はありません- PDF/X 準拠検証は、クロスリファレンスストリームを持つ文書 (PDF 1.6、典型的には PDF/X-4) と圧縮オブジェクトストリームに格納されたオブジェクトを、非準拠として一括判定する代わりに調べるようになりました。
GTS_PDFXVersionマーカーは XMP の要素形式と RDF 属性形式の両方から読み取られます - PDF/R 検証は、Info ディクショナリと XMP が Producer または Creator で一致しない場合に
pvriInfoXmpMismatchを報告するようになりました。問題は以前から宣言されていましたが、発火していませんでした - フォーム入力タイマーは要求ごとに追跡されるようになり、例えば JavaScript のインターバルとフィールドカーソルの点滅を同時に動かす文書でも、最後のタイマー以外を失うことなくすべて保持します
TPdfViewの描画と公開メソッドRenderPage/RenderTileは、同じTPdfのワーカースレッド描画に対して直列化されるように、文書の描画ロックを保持します (PDFium はスレッドセーフではありません)- PDF/X, PDF/R, PDF/VT メタデータに書き込まれる非 ASCII テキスト (OutputIntent の条件名、Creator、Producer) は、UTF-8 の生データではなく ISO 32000-1 §7.9.2.2 に従う UTF-16BE 文字列としてエンコードされるようになり、準拠リーダーが誤読することはなくなりました
- 準拠ヘルパーは、
/Lengthが間接参照である埋め込みメタデータストリームを正しく読み取り、ReadBufferでソースバイトを読み込むため短い読み取りはきれいに失敗し、負のstartxrefオフセットを範囲外読み取りの危険なしに拒否します
Version 1.61.0
変更 (Changed)
- 影響を受けるコールバックを実装しているコードでは再コンパイルが必要になる可能性がある FFI/ABI 宣言修正です。フォーム入力コールバック
FFI_OpenFileはcdecl(Win32 のスタック規約) を持つようになり、valueパラメータはFPDFAnnot_SetStringValueとFPDFAttachment_SetStringValueの両方で PDFium ヘッダーに合わせてFPDF_WIDESTRING(UTF-16LE) になりました - プログレッシブロードのコールバック
FX_FILEAVAIL.IsDataAvailとFX_DOWNLOADHINTS.AddSegmentはsize_tオフセットを取るようになり、Free Pascal / Lazarus Win64 ではsize_tがポインタ幅になりました (以前は 32 ビットに切り詰められていました)。これにより FPC Win64 のデータ利用可否とoutsize_tAPI 呼び出しが修正されます
修正 (Fixed)
- メモリ安全性を修正しました。アクティブな AcroForm キャレットを持つ
TPdfを破棄するときのフォーム入力タイマーの use-after-free、FPDF_CloseDocumentがImportNPagesToOneのエラーパスで二重に呼ばれる問題、保存と JPEG 挿入中にFPDF_FILEWRITE/FPDF_FILEACCESSコールバックから C 境界を越えて抜ける Pascal 例外、開始インデックスからページ末尾まで読む際のテキスト抽出での整数オーバーフローを解消しました TPdfFuture<T>は結果コールバックを確実に返すようになりました。以前はワーカーがキューに積まれた応答の実行前に自分自身を解放していたため、応答はほぼ常に失われ、解放済みスレッドに触れることもありました- PDF/A, PDF/X, PDF/E, PDF/R, PDF/VT, PDF/UA の出力は、ISO 32000-1 §7.5.4 の要件どおり、ちょうど 20 バイトのクロスリファレンス項目を書き込むようになりました
- 標準マーカーの注入は、削除されたキー (たとえば
/Trapped) が最後の項目だった場合でもディクショナリを壊さなくなりました。以前は閉じ括弧>>を飲み込み、壊れたオブジェクトを生成していました - OutputIntent の ICC プロファイルストリームは、PDF/X と PDF/VT に必要な
/Nコンポーネント数を宣言するようになりました (PDF/A では既に存在)。暗号化されたソース文書は PDF/X, PDF/E, PDF/R, PDF/VT, PDF/UA マーカーの注入前に復号されるため、出力は黙って壊れるのではなく有効になります - 生成された XMP 内の UTF-8 xpacket BOM は正確なバイトとして出力されるようになり、ANSI コードページが Latin-1 ではない Delphi 環境での破損を修正しました。増分更新トレーラは文書の
/Info参照を保持するようになりました SaveAswith compression は、/Lengthが間接参照であるストリームを切り詰めなくなり、再構築されたクロスリファレンステーブルは 20 バイト項目、実際の生成番号、そして古い/Prevポインタの破棄を使うようになりました- 適合性検証は、PDF/E と PDF/X の属性形式 XMP バージョンマーカーを正しく読み取り、属性シリアライズされた PDF/X-4 ファイルを認識するようになりました。正確な
PDF/E-1識別子を要求し、間接/Lengthのメタデータストリームを正しく読み取り、PDF/UA トレーラの確認時に構造要素の/IDまたは/StructTreeRootキーを誤一致しなくなりました。壊れたstartxrefオフセットは範囲エラーを引き起こしません TPdfThumbnailView: 最後のページがスクロールバーで到達可能になり、サムネイル描画後にホスト文書の現在ページが復元され、標準の mouse-leave 処理が再び送出されます- グレースケールのページおよび画像ビットマップが誤ったパレットで描画されなくなり、
TPdfViewはTPdfが先に解放された場合でもぶら下がり参照を持たなくなりました - Preflight レポート: HTML は宣言された charset に合わせて UTF-8 で保存され、JSON 文字列のエスケープは Free Pascal で非 ASCII 文字に対して正しい
\uシーケンスを生成します - 試用版ビルド: 試用版リマインダーダイアログが表示される前に抑止されるのではなく、今は表示されます
TPdfStreamAdapterは、4 GiB を超えるストリームを PDFium に渡す長さを黙って切り詰める代わりに、明確なエラーで拒否するようになりました
Version 1.60.1
変更 (Changed)
- AccessibilityReader デモ (Delphi、Lazarus、C++Builder) は
TPdfReadingSession上で読み上げを実行するようになりました。各ページはBuildSpokenTextFromWordsで 1 つの音声チャンクにまとめられ、SAPI の単語位置がFeedSpokenPositionに渡され、セッションがページを進めてビューの単語カーソルを駆動します。各デモにあった手書きのオーケストレーションは置き換えられました - デモの単語レベルのカラオケ追跡は、NVDA が音声エンジンでも動作するようになりました。
EstimatePacingは経過した読み上げ時間に応じて読書カーソルの速度を調整し、以前の NVDA は単語追跡なしでそのまま読み上げていました - デモの Pause と Resume は NVDA でも動作するようになりました。
ResumeRestartsChunkは Resume 時に現在ページを先頭から読み直し、SAPI は従来どおりその場での pause / resume を維持します
Version 1.60.0
追加 (Added)
TPdfViewのライブ低視力描画: 新しい描画オプションreInvertとreNightDuotoneは、検索、選択、読み上げ、単語カーソルのオーバーレイが描画される前に、描画済みの各ページタイルの色を再着色します (全面反転、または夜間用の 2 色調パレット)。既存のビットマップ色変換を、単一ページ配置と見開き配置の両方に対する対話型ビューアへ持ち込みます。オプションを切り替えると即座に再描画されますNightDuotoneInkとNightDuotonePaperは夜間パレットを設定し、既定は黒いページに琥珀色のテキストです。両方のオプションが設定されている場合はreInvertが優先されます
Version 1.59.0
追加 (Added)
TPdfReadingSessionは、音声エンジンに依存しない読み上げオーケストレーション用コンポーネントです。チャンクカーソル、単語カーソル、再生状態 (Play/PlayFrom/Pause/Resume/Stop) を保持し、読み込まれたTPdfSpokenTextチャンクをホストがTickでエンジンのアイドルを通知するたびに進め、読み上げテキストのオフセットをページ文字へ戻し、接続されたTPdfViewの単語カーソルを自動で駆動します。ホストはOnSpeakと cancel / pause / resume 要求イベントを通じて任意の音声エンジンを接続でき、ライブラリ自体は音声 API をリンクしませんFeedSpokenPositionはエンジンの単語位置 (SAPI のStatus.InputWordPositionなど) を取り込み、EstimatePacingはEstimatedWordsPerMinuteと組み合わせて位置信号のないエンジンの進み方を推定し、ResumeRestartsChunkはネイティブ pause を持たないエンジン向けに現在のチャンクを読み直しますOnChunkChange、OnWordChange、OnFinishedは実際の変更時にのみ発火し、解放済みの接続ビューは自動で切り離されるため、ホストコードはちらつきなくクラッシュ安全です
Version 1.58.0
追加 (Added)
EstimateSpokenWordIndexは、経過時間と 1 分あたりの語数から音声エンジンが発声している単語を推定し、長い単語に比例して多くの時間を与えることで、単語位置を報告しないエンジン (NVDA controller client など) でも単語レベルの読書カーソルを駆動できるようにします。呼び出し側が経過時間を渡すため、ルーチンは時計に依存せず単体テスト可能です
Version 1.57.0
追加 (Added)
- 読み上げ追跡のための 2 ドメインマッピングを備えた音声テキスト組み立て:
BuildSpokenTextFromWordsとSpokenTextAppendは、ページの単語ボックスからテキスト読み上げエンジンに渡す文字列を組み立てながらスパン表を記録し、SpokenToPageCharはエンジンが報告した読み上げオフセット (SAPI のStatus.InputWordPositionなど) をページ文字インデックスへ戻します。これにより、読み上げテキストがページ全体のテキストではない場合でも単語レベルのハイライト追跡が正しく保たれます (スキップ領域、単位ごとの読書、発音上書き) TPdfSpokenTextとTPdfSpokenSpan型は、話された文字列と、それが構築された元のページ範囲を保持します。挿入された区切り文字上のオフセットは次のマップ済み単語に解決され、マップ済み範囲を超えたオフセットは一致なしとして扱われます
Version 1.56.9
追加 (Added)
Demo\Delphi\PreflightReportは非通過の基準、優先度、次アクション、問題コード、および推奨事項を 1 つの修復チェックリストにまとめた Action Plan プレビューを追加しますDemo\Delphi\PreflightReportCliは単一ファイル実行とバッチ実行でplan/actionplanを出力形式として受け付け、同じ修復チェックリストをテキストファイルに書き込みます
変更 (Changed)
- 両方の Delphi PreflightReport デモで、総基準数と問題数に加え pass / action / review ステータスのカウントが表示されるようになりました
Version 1.56.8
変更 (Changed)
ViewerInteractionLabはページジャンプコントロール、手動ズームコントロール、クリックベースのDeviceToPage/PageToDevice座標ログ記録、選択、検索、回転、ナビゲーション検査向けの明確なインタラクションログを追加しますViewerInteractionLabの readme ページは、ローカライズ済みデモ readme セット全体で追加されたインタラクションワークフローを説明するようになりました
Version 1.56.7
追加 (Added)
AccessibilityWorkbenchCliは、トリガーされた各検出結果を WCAG 2.1 Success Criteria と ISO 14289-1 (PDF/UA-1) 条項領域に関連付け、レポートに standards-coverage セクションを表示しますAccessibilityWorkbenchCliは公開された penalty ルーブリックと excellent / good / needs work / poor 区分を使い、ファイル別とバッチ平均で 0-100 のアクセシビリティスコアを計算しますAccessibilityWorkbenchCliはfailscore=Nを受け付け、任意のファイルが N 未満の場合に実行を失敗(終了コード 2)させますAccessibilityWorkbenchCliはバッチサマリー名が.sarifで終わる場合に SARIF 2.1.0 ログを書き出し、WCAG 2.1 と PDF/UA タグを保持する finding 種別ごとに 1 ルールを持たせ CI とコードスキャン取り込みで使いますAccessibilityWorkbenchCliは、紐付けられた PDFium Delphi Component バージョンを表示するversionコマンドを追加します
Version 1.56.6
追加 (Added)
IntakeWorkbenchCliは各入力ファイルの SHA-256 フォレンジックハッシュを計算し(unavailableへのフォールバックはSystem.Hashを持たないコンパイラで行われます)、すべての形式で報告しますIntakeWorkbenchCliは候補リストからパスワード必須ドキュメントを試験的に解除するためのpasswords=file.txtを受け付け、候補インデックスの一致を記録し、パスワード文字列は記録しませんIntakeWorkbenchCliはcopyto=dirを受け付け、監査対象ファイルをリスクレベル別サブフォルダーへ振り分け、インテイク用ソート機能を提供しますIntakeWorkbenchCliはバッチサマリー名が.sarifで終わる場合に、リスクフラグごと 1 ルール、フラグ付きファイルごとに 1 結果を持つ SARIF 2.1.0 ログを書き出し、CI とコードスキャン取り込み向けに利用できますIntakeWorkbenchCliは、紐付けられた PDFium Delphi Component バージョンを表示するversionコマンドを追加します
Version 1.56.5
追加 (Added)
IntakeWorkbenchCliは accept、request-password、manual-review、quarantine、deduplicate などの推奨 post-intake アクションを導出し、バッチサマリーでアクション数を公開しますAccessibilityWorkbenchCliは pass-through、remediate-tags、run-ocr、remediate-semantics、manual-review などの推奨修復アクションを導出し、対応するバッチアクション数を公開します
変更 (Changed)
- 2 つのツール向け CLI デモは、推奨アクションをコンソール、text、HTML、JSON、CSV 出力のすべてに表示するため、バッチ運用者は後処理のリスクやステータス項目を使わずにファイルを振り分けできます
Version 1.56.4
修正 (Fixed)
- アノテーション、ブックマーク、リンクアノテーションをループで読む際に、前項目の文字列がメモリ漏れしなくなります
TPdfAnnotation、TBookmark、TLinkAnnotationの結果レコードは生メモリゼロ初期化ではなく managed-type を考慮した初期化でクリアされるため、大量のテキスト付きアノテーションを含む文書でアプリケーション生存期間中のプロセスメモリ増加が抑えられます TPdfでOnUnsupportedFeatureハンドラを登録した状態で破棄すると、プロセス全体の PDFium コールバックからハンドラが切り離されるため、別のTPdfインスタンスが独自ハンドラなしで次に読み込んだドキュメントを開くと、解放済みコンポーネントへディスパッチされなくなります
Version 1.56.3
修正 (Fixed)
AccessibilityWorkbenchCliは空ページを heuristic reading-order ページとして数えなくなったため、空の区切りページを含む tagged ドキュメントのアクセシビリティ状態が正しく保たれます。読める内容のないページは別途報告されますAccessibilityWorkbenchCliのテーブルヘッダー検出では、ネストされた表に属するTHセルを外側の表に付与しなくなり、フォームフィールド名とフォント名は大文字小文字を区別して一致させるため別名のフィールドが結合されませんIntakeWorkbenchCliの URL host インベントリは userinfo、query、fragment を除去し、[email protected]のような細工リンクは実際のホストに割り当てられ、mailto:対象のドメインも見えなくならず反映されますIntakeWorkbenchCliの Markdown レポートは攻撃者制御のパス、ホスト、添付名内のバッククォートをエスケープして、文書内から報告書フォーマットを壊せないようにします
変更 (Changed)
AccessibilityWorkbenchCliは font-scan と form-field-scan 失敗を個別カウンタとして報告し、埋め込みインスタンスを持つ非埋め込みフォントに印を付け、長いフォントリストは明示的なトランケーションマーカーで上限を付けますIntakeWorkbenchCliのバッチサマリーは添付注釈数列を追加し、ページごとの注釈カウントはページあたり 20000 で上限となり、その上限は各形式で報告されます
Version 1.56.2
追加 (Added)
AccessibilityWorkbenchCliは、フォント埋め込み、フォームフィールド tooltip、読み上げ順序の由来、ドキュメントアウトライン、表とリストの構造、疑わしい代替テキスト、より詳細なページ単位のレビュー情報を監査し、accessibility バッチレポートがより多くの修正対象を特定できるようになりましたIntakeWorkbenchCliは、ページスキャン上限、launch と remote-go-to アクション、URI host インベントリ、注釈数、未対応の PDFium 機能、重複ドキュメント識別子、自動 intake レビュー向けの拡張リスクフラグをレポートするようになりました
変更 (Changed)
IntakeWorkbenchCliは単一ファイルモードとバッチモードでmaxpages=Nを受け付け、metadata、attachment、script、XFA、signature、risk のレポートを完了しながら、ドキュメントごとのページスキャンを制限できます
Version 1.56.1
修正 (Fixed)
- 新しいエクスポートが欠けている古い
pdfium.dllを読み込んだ場合、現在は正常に失敗します。失敗パスはバインド済みのすべての API エントリポイントをリセットするため、Assigned()チェック(FPDF_GetLastErrorやFPDF_GetSecurityHandlerRevisionなど)は、すでにアンロードされたモジュールを呼び出してアクセス違反でクラッシュするのではなく、ライブラリが読み込まれていないことを報告します UnloadLibraryは、オプションの V8 補助関数だけでなくすべての PDFium API バインディングをクリアするようになったため、DLL 解放後に古い関数ポインタが残りません
Version 1.56.0
追加 (Added)
TPdfViewの単語単位 karaoke 読み上げカーソル:TrackReadingWordAtは SAPIStatus.InputWordPositionなどのテキスト読み上げエンジンの現在単語文字オフセットをページ単語ボックスへ対応付け、そのオフセットを含む単語を読み上げブロックの上に独立したオーバーレイとして強調表示し、表示位置へスクロールして単語インデックスを返すため、音声が進むにつれて読み上げ中の単語が点灯しますSetReadingWordとClearReadingWordはTPdfWordBoxから強調表示単語を直接設定またはクリアします。同じ単語を再設定しても何もしないため、単語単位の追跡でビューがちらつきませんReadingWordColorとReadingWordFollowは単語カーソル色と、ビューが読み上げ中の単語を自動的に表示位置へスクロールするかどうかを制御します
Version 1.55.2
修正 (Fixed)
- ViewerInteractionLab はツールバー行により多くの垂直スペースを与えるようになり、スケールされたフォントでも Open PDF、Create Sample、ナビゲーション、検索、選択コントロールが重ならなくなりました
Version 1.55.1
修正 (Fixed)
- ViewerInteractionLab は Prev、Next、Rotate を 2 行目のツールバーに配置するようになり、起動時に Open PDF と Create Sample に重なる問題を避けます
Version 1.55.0
追加 (Added)
- 読み上げて選択するための単語から選択への橋渡し:
TPdfView.SelectWordBoxとSelectWordSpanはPageWordBoxesから単一の単語ボックスまたは同一ページ上の範囲を文字範囲で選択し、読み上げ中の単語や行を選択してコピーできるようにします WordBoxIndexAtCharIndexは文字インデックスをそれを含む単語ボックスに戻し、TTS 読み上げカーソルの進行に合わせて単語ごとのハイライトを駆動します
Version 1.54.0
追加 (Added)
- 音声によるフォーム入力向けアクセサです。
FocusedFormFieldValue、FocusedFormFieldName、FocusedFormFieldDetailsがTPdfとTPdfViewに追加され、現在のフィールド値、人間向けの名前 (/TUツールチップを優先し、なければ/T)、および完全なTPdfFormFieldInfo(型、フラグ、選択肢) を返すため、音声 UI がフォームをたどりながら必要な情報を読み上げられます
修正 (Fixed)
FocusedFormFieldValueは pdfium の対話フォーカスではなくFocusedFormFieldIndexでフィールドを読むようになったため、画面上にキャレットがなくても音声駆動フォーム入力で正しい値を取得できます (既存のFocusedFormFieldTextは引き続き pdfium のフォーカスを反映し、仕様は変わりません)
Version 1.53.0
追加 (Added)
- 単語単位のハイライト支援を追加しました。
TPdf.PageWordBoxesとTPdfView.PageWordBoxesは、単語テキスト、文字範囲、ページ座標の矩形を持つTPdfWordBoxレコードへページを分割するため、アクセシビリティ読み上げ側は矩形をSetReadingHighlightに渡して、読み上げ中の単語を順番に強調表示できます BuildWordBoxesはトークナイザー段階を単独で公開し、ページテキストを文字範囲付きの単語ボックスへ変換します
Version 1.52.0
追加 (Added)
- 低視力向け描画ヘルパー
InvertPdfBitmap、GrayscalePdfBitmap、DuotonePdfBitmapは、レンダリング済みの 32 ビットビットマップに対してインプレースの色変換を適用し、アクセシビリティ読み上げアプリが低視力ユーザー向けにページを反転表示 / ダークモード、グレースケール表示、または任意の 2 色配色 (たとえば暗い背景に明るい文字) で提示できるようにします - これらの変換はピクセルごとに処理し、VCL と Lazarus/LCL で同じ動作をします。ビットマップの寸法は変えません
Version 1.51.0
追加 (Added)
- 支援的な listen-reading 向けに文単位の読み上げユニットを追加しました。
TPdf.ReadingUnits、TPdf.DocumentReadingUnits、TPdfView.ReadingUnitsは、読み取り可能なコンテンツストリームを順序付きの文サイズTPdfReadingUnitレコードへ線形化します。各レコードは読み上げテキスト、意味種別、ページ、ハイライト矩形、言語タグを保持するため、スクリーンリーダー系アプリがページ単位または文書全体を 1 発話単位ずつ移動できます NextReadingUnitOfKind指定された TPdfContentFragmentKind に Kind が一致する次または前の TPdfReadingUnit を検索しますBuildReadingUnitsは任意のTPdfContentFragmentsを直接読み上げユニットへ変換します。見出しや図の代替説明は 1 単位のまま保たれ、段落は文境界で分割され、小数点は保持され、読み上げカーソルは呼び出し側が所有する単純なインデックスです
Version 1.50.0
追加 (Added)
ValidatePdfAは、カタログ、OutputIntent、その他の辞書を圧縮オブジェクトストリーム(/Type /ObjStm)内に格納する PDF 1.5 以降のドキュメントも検査できるようになりました。オブジェクトストリームは展開され、その中に格納されたオブジェクトが解決されるため、こうしたドキュメントは PDF/A マーカーが欠落していると報告される代わりに、その実体に基づいて検証されます
Version 1.49.5
修正 (Fixed)
ValidatePdfAは、pdfaExtension:schemas記述の欠落を問題として報告しなくなりました。PDF/A 識別子スキーマ(pdfaid)は周知のものであり、veraPDF も PDF/A-2/-3 もそのための拡張スキーマ記述を要求しないため、その欠如をフラグすると、適合するサードパーティ製の PDF/A をすべて誤って報告していました。ライブラリ自身が生成するドキュメントには引き続きこの記述が含まれます
Version 1.49.4
修正 (Fixed)
ValidatePdfAは、PDF/A 識別子が子要素ではなく XML 属性(pdfaid:part="2")として書かれている場合でも適合レベルを検出するようになり、属性形式のドキュメントが不明なレベルとして報告されることがなくなりました。これにより、レベルが検出されないことで part 固有のチェックが厳格な PDF/A-1 ルールにフォールバックし、PDF/A-2 や PDF/A-3 が許可する埋め込みファイルや透明度を誤ってフラグしていた連鎖も修正されます
Version 1.49.3
修正 (Fixed)
ValidatePdfAは、cross-reference データが cross-reference stream であるような(trailerキーワードを持たない)PDF 1.5 以降のドキュメントも検査するようになりました。適合レベル、トレーラの/ID、およびその他のマーカーは cross-reference stream 辞書から読み取られるため、こうしたドキュメントは完全に非適合と報告される代わりに、その実体に基づいて検証されます
Version 1.49.2
修正 (Fixed)
ValidatePdfAは、すべてのフォントを埋め込んでいるドキュメントに対して、フォント未埋め込みの問題を誤って報告しなくなりました。以前のヒューリスティックは/FontDescriptorトークンの数を埋め込みフォントプログラムと比較していましたが、埋め込みフォント 1 つにつき/FontDescriptorトークンは 2 つ生じる(フォント辞書の参照と記述子オブジェクト)ため、埋め込みフォントを持つファイルがすべて誤ってフラグされていました。チェックは現在、フォントを参照しているのにフォントプログラムをまったく埋め込んでいないドキュメントのみを報告するようになり、対応するValidatePdfUaの修正と一致します
Version 1.49.1
修正 (Fixed)
- PDF/A 出力は、veraPDF で適合する PDF/A-1b および PDF/A-1a として検証されるようになりました。埋め込みの sRGB OutputIntent ICC プロファイルストリーム(
/DestOutputProfileから参照される)が、ISO 19005-1 6.2.3.2 で要求されるとおり、必須の/Nコンポーネント数(組み込み RGB プロファイルでは 3)を宣言するようになりました。以前はSaveAsPdfAが生成するドキュメントが、宛先プロファイルストリームで/Nを省いていたため厳格な PDF/A-1 検証に失敗していました。値は ICC プロファイルヘッダーから導出されるため、呼び出し側が指定する CMYK や Gray のプロファイルにも正しい数が設定されます
Version 1.49.0
修正 (Fixed)
ValidatePdfUaは、適合するタグ付き PDF に対して XMP 識別情報の欠落を誤って報告しなくなりました。PDF/UA 識別子(pdfuaid:part)、dc:title、XMP の日付、およびトレーラの/IDを、/MetadataXMP ストリームを省き、cross-reference-stream ファイルではトレーラの/IDも省く再保存後のコピーではなく、元のドキュメントのバイトから読み取るようになりましたValidatePdfUaのフォント埋め込みチェックを修正し、すべてのフォントを埋め込んでいるドキュメントがフォント未埋め込みとして報告されることがなくなりました。フォントを参照しているのにフォントプログラムをまったく埋め込んでいないドキュメントのみをフラグするようになりましたValidatePdfUaは、Formula構造要素の代替テキストがActualTextで与えられ、Altエントリを持たない場合でも受け入れるようになりました(ISO 14289-1 §7.7)。これは既存のFigureルールと整合します
Version 1.48.0
追加 (Added)
TPdfView上のプログラムによるテキスト選択:SelectTextRange(ページと文字範囲を指定)とSetSelection(ページごとの明示的な範囲を指定)により、コードからテキストを選択できます。たとえば、ある一節を読み上げてハイライトする用途に使えます。どちらも選択が変化すると再描画を行い、OnSelectionChangeを発生させます。SelectionRangesは現在の選択をページごとの文字範囲として読み取り、SelectionRectanglesはカスタムハイライトやスクロール移動のために、その矩形をページ座標で返します
Version 1.47.0
追加 (Added)
TPdfとTPdfViewの両方に、音声駆動のフォーム入力向けフォームフィールドナビゲーションを追加:FormFieldTabOrder、FocusedFormFieldIndex、FocusFormField、FocusNextFormField、FocusPreviousFormField、ClearFormFieldFocus、FocusedFormFieldText。これらは論理的なフィールドカーソルをページのウィジェットフィールド上でタブ順に移動させ(両端で折り返し)、支援読み上げツールがフォームをたどり、各フィールドをFormFieldInfo[Index].AlternateName(/TU ツールチップ)で読み上げ、FormField[Index]で入力できるようにしますTPdfView.OnFormFieldFocusChangeイベント。フィールドカーソルが移動したときに発生します(新しいフィールドインデックス、またはクリア時は -1 を伴います)
Version 1.46.0
追加 (Added)
- 支援的な読み上げ用コンテンツストリーム:
TPdf.ReadableContent、TPdf.ReadablePageContent、TPdf.DocumentReadableContent、およびTPdfView.ReadableContentは、意味的なTPdfContentFragment項目の順序付きリストを返します。各項目は、読み上げるテキスト(実際のグリフ、または図に対するActualText/Alt)、フラグメント種別(レベル付き見出し、段落、図、リスト項目、表のセル、リンク、プレーン)、言語、1 始まりのページ番号、ブロックおよび行ごとのハイライト矩形を保持します。タグ付き PDF は構造ツリーから論理的な読み上げ順に線形化され、タグなしのページはレンダリング順にフォールバックするため、どのようなドキュメントでも読み上げが可能です TPdfView上の同期読み上げハイライト:SetReadingHighlight、ClearReadingHighlight、および公開されたReadingHighlightColorは、検索および選択のオーバーレイの上に、現在読み上げ中のブロックをハイライトします- 新しい公開型
TPdfContentFragment、TPdfContentFragments、TPdfReadableContent、TPdfContentFragmentKind、TPdfReadingOrderSource、および新しいヘルパーClassifyStructTypeを追加しました
Version 1.45.0
追加 (Added)
ValidatePdfUaは、ライブのタグ付き構造ツリーを走査し、バイトレベルのスキャンでは検出できない高信頼度のコンテンツ違反を 3 件報告するようになりました。具体的には、Alt エントリも ActualText も持たないFigure要素(ISO 14289-1, 7.3)、Alt 属性のないFormula要素(7.7)、および一意な ID を持たないNote要素(7.9)です。これらを示すTPdfUaValidationIssueの値が 3 つ追加されました:pvuaiFigureMissingAlt、pvuaiFormulaMissingAlt、pvuaiNoteMissingId。タグなしドキュメントではツリー走査はスキップされます- 新しい公開ヘルパー
ValidatePdfUaStructureElementsは、構造ツリーのルールを(TPdf.StructureElementsが返すような)フラットな要素リストに適用します。これにより、ドキュメント全体をロードせずにチェックを実行したり、ユニットテストしたりすることができます
Version 1.44.5
修正 (Fixed)
ValidatePdfAのフォント埋め込みチェック(pvaiFontNotEmbedded、ISO 19005-1, 6.3.4)が、/FontDescriptorを持たない非埋め込みの単純フォントも検出するようになりました。特に重要なのは、PDF/A が埋め込み免除を認めていない 14 種の標準 Type 1 フォント(Helvetica、Times、Courier など)です。以前はこのようなフォントが見落とされていましたが、チェックは単純フォント辞書(/Type1、/TrueType、/MMType1)についても埋め込みフォントプログラムの有無を確認するようになりました。これは 1.44.3 の PDF/UA 修正を反映したものです
Version 1.44.4
修正 (Fixed)
ValidatePdfVTは、ISO 16612-2 §6.5 の不正な DPart ツリーを拒否するようになりました。たとえば/DPartsが要求される array of arrays ではなく平坦な参照配列である場合や、leaf DPart が 1 ページだけの範囲で/Startページを/Endとして繰り返す場合ですValidatePdfVTは、PDF name の/NodeNameList名を#xxescape 展開後に XML NMTOKEN 値として検証するようになりました。そのため、無効な階層レベル名は利用可能な DPart 構造として受け入れられず、pvviMissingDPartRootを通じて報告されます
Version 1.44.3
修正 (Fixed)
ValidatePdfUaのフォント埋め込みチェック(pvuaiFontNotEmbedded、ISO 14289-1, 7.21.4)が、/FontDescriptorを持たない非埋め込みの単純フォントも検出するようになりました。特に重要なのは、PDF/UA が埋め込み免除を認めていない 14 種の標準 Type 1 フォント(Helvetica、Times、Courier など)です。以前はこのようなフォントが見落とされ、それを使用した文書が適合と報告される場合がありましたが、チェックは単純フォント辞書(/Type1、/TrueType、/MMType1)についても埋め込みフォントプログラムの有無を確認するようになりました
Version 1.44.2
修正 (Fixed)
ValidatePdfVTは、存在するものの認識できないpdfvtid:GTS_PDFVTVersionマーカーをpvcUnknownのまま保持し、pvcNoneへ降格しないようになりました。これにより、PDF/VT-2sのような無効なファイルレベル文字列を、PDF/VT マーカーを持たない文書と区別できます。PDF/VT-2s は ISO 16612-2 Annex A の MIME stream header で識別され、PDF ファイルの XMP マーカーでは識別されません/DPartRootチェックは、ISO 16612-2 §6.5 の tree semantics をより厳密に検証するようになりました。/DPartRootNodeと/NodeNameListは実際の DPart 深さを記述する必要があり、DPart parent links は木を形成し、/Startと/DPartsは相互排他的であり、各ページの/DPartは page tree と同じ depth-first 順で、そのページをカバーする leaf DPart を指す必要があります
Version 1.44.1
修正 (Fixed)
SaveAsPdfVTは、元の PDF に利用可能な/DPartRootがない場合、ISO 16612-2 §6.5 の最小 Document Part Hierarchy を書き込むようになりました。生成されるツリーは各ページを/DPartで関連付け、既存の有効な階層は保持し、より詳細な受信者/DPM メタデータは呼び出し側ワークフローに委ねますValidatePdfVTは、利用可能な DPart 構造を検証し、RDF 属性と要素テキストの両方から PDF/VT XMP 値を読み取り、PDF/VT と PDF/X ベースの厳密な組み合わせを強制するようになりました。PDF/VT-1 は PDF/X-4 を必要とし、PDF/VT-2 は PDF/X-4p、PDF/X-5g、または PDF/X-5pg を必要としますTPdfVTSaveOptions.Conformance = pvc2は、無効な単一ファイル PDF/VT-2 マーカーを書き込まなくなりました。PDF/VT-2 はファイルセットのセマンティクスを必要とするため、単一ファイル writer は出力を PDF/VT-1 に正規化します
Version 1.44.0
追加 (Added)
ValidatePdfUaは、ファイルフォーマットマーカーに加えて、バイト検査可能なコンテンツレベルの PDF/UA 違反も報告するようになった:フォントプログラムが埋め込まれていない場合(ISO 14289-1, 7.21.4)、免除対象の単純フォントエンコーディングが存在しないにもかかわらずフォントに/ToUnicodeCMap がない場合(7.21.7)、および注釈を含むドキュメントでページの/Tabs /Sタブ順序が宣言されていない場合(7.18.3)- 3 つの新しい
TPdfUaValidationIssue値 —pvuaiFontNotEmbedded、pvuaiFontMissingToUnicode、およびpvuaiMissingTabsOrder— がValidatePdfUaおよびプリフライトレポートによって報告される。これらは完全な ISO 14289-1 検証ではなく、プリフライトヒントとして意図された粗いヒューリスティックである
Version 1.43.1
修正 (Fixed)
SaveAsPdfUaは、ISO 14289-1, 7.1 で必須とされる/ViewerPreferences/DisplayDocTitle true、/MarkInfo/Marked true/Suspects falseのカタログエントリを、ソースドキュメントがこれらの辞書をすでに持っていても値が欠落または矛盾している場合に強制的に適用するようになった。以前は、辞書が完全に存在しない場合にのみマーカーが挿入されていたため、たとえば/ViewerPreferencesはあるがDisplayDocTitleが欠けているソース、または/MarkInfoに/Marked falseが設定されているソースは、非準拠のファイルとして出力されていた- 既存の
/ViewerPreferencesまたは/MarkInfo辞書に含まれる既存のキーは保持され、間接参照として提供された辞書は必須キーが適用される前に解決される
Version 1.43.0
追加 (Added)
ValidatePdfAが、埋め込みファイルと関連ファイル、および Level U テキストに対して PDF/A-2 / PDF/A-3 のルールを適用するようになった。埋め込みファイルは PDF/A-1 では引き続き拒否される。PDF/A-3 では、必須の/AFRelationshipキー(ISO 19005-3 附属書 E)を欠く埋め込みファイルにフラグが立てられる一方、PDF/A-2 の添付ファイルは許可される(それ自体の準拠性は再帰的には検証されない)。新しいpvaiUnicodeMappingMissingの問題は、フォントが/ToUnicodeマッピングを一切持たない PDF/A-2u または PDF/A-3u ドキュメントを報告する(ISO 19005-2 6.2.11.7)。透明度とオプショナルコンテンツは引き続き PDF/A-1 に対してのみフラグが立てられる
Version 1.42.0
追加 (Added)
SaveAsPdfA、ValidatePdfA、およびPdfAConformanceプロパティが、3 つすべての準拠レベル(a、b、u)で PDF/A-2(ISO 19005-2)と PDF/A-3(ISO 19005-3)をサポートするようになった。TPdfAConformance列挙体にpac2a、pac2u、pac3a、pac3uが追加される(PDF/A-1 に Level u はない)。保存時には、対応するpdfaid:part(2 または 3)とpdfaid:conformance(A、B、または U)が書き込まれ、ISO 19005-2 が互換性のために保持しているGTS_PDFA1OutputIntent サブタイプはそのまま維持される。ドキュメントにそのレベルが要求するタグ付き構造が欠けている場合、Level A の要求は(いずれの part でも)対応する Level B にダウングレードされる点は変わらない
Version 1.41.0
追加 (Added)
ValidatePdfAが、すでに報告していた構造マーカーに加えて、マーカー注入では修復できないコンテンツレベルの PDF/A 違反を検出するようになった。すなわち、JavaScript やその他の禁止されたアクション、追加アクション(/AA)、埋め込みファイル、LZWDecode、透明度(ソフトマスクと透明グループ)、オプショナルコンテンツ(/OCProperties)、禁止された注釈サブタイプ(FileAttachment、Sound、Movie、3D、Screen)、AcroForm の/NeedAppearances trueと/XFA、記述子に埋め込みフォントプログラムを持たないフォント、そして ISO 19005-1 6.8 が要求するタグ付き構造を伴わずに行われた Level A の主張である。透明度、オプショナルコンテンツ、埋め込みファイルの検査は PDF/A-1 にのみ適用される(これらの機能は PDF/A-2 および PDF/A-3 では許可されている)。新しいTPdfAValidationIssueの値が各ケースを表面化させる。既存の値は変更されていない
Version 1.40.3
修正 (Fixed)
SaveAsPdfAが PDF/A 出力を生成する前に、元のドキュメントのあらゆる暗号化を取り除くようになった。ISO 19005-1 6.1.3 は trailer の/Encryptキーを禁止しているが、従来の保存パスは元のドキュメントのセキュリティハンドラーを保持していたため、暗号化されたドキュメントを PDF/A として保存すると、暗号化された非準拠ファイルが生成されていた。PDF/A 保存は、まずドキュメントを復号するようになった。暗号化されていないドキュメントは影響を受けない
Version 1.40.2
修正 (Fixed)
SaveAsPdfAが誤った PDF/A Level A 準拠主張を出力しないようにしました。Level A(pac1a)が要求されていても、元の文書に ISO 19005-1 6.8 が要求するタグ付き構造マーカー、すなわちカタログ内の/StructTreeRootと/MarkInfo辞書内の/Marked trueが欠けている場合、保存後ファイルは Level A を名乗る代わりに対応する Level B(pdfaid:conformance=B)として識別されます。純粋に視覚的な PDF/A-1b 出力は影響を受けません
Version 1.40.1
修正 (Fixed)
- PDF バージョン準拠の検証を厳格化し、
SetOCGState(set-optional-content-group-state)アクションを PDF 1.5 の機能として認識するようにした。SetOCGStateアクションを含む PDF を PDF 1.2、1.3、または 1.4 を対象として保存しようとすると、ISO 32000-1(Table 198)に合わせて拒否されるようになった。従来はこのようなアクションが低いバージョンの出力にそのまま通過し得た。これとは別の、廃止された PDF 1.2 のSetStateアクションは、引き続き PDF 1.2 以降で受け入れられる
Version 1.40.0
追加 (Added)
- PDFium API
FPDFPageObj_AddExistingMark()をバインドした。既存のコンテンツマークをページオブジェクトに付加する。連続するページオブジェクトが同じマークを共有する場合、保存後の PDF ではそれらを全体にまたがる単一のマークにまとめる。連続しないオブジェクトにはそれぞれ個別のコピーが付く - PDFium API
FPDFTextObj_SetFontSize()をバインドした。既存のテキストオブジェクトのフォントサイズ(ポイント単位)を変更するもので、既存のFPDFTextObj_GetFontSize()バインドと対になる
変更 (Changed)
- 同梱の PDFium ランタイム DLL(Win32 と Win64、標準ビルドおよび V8 ビルド)を 2026-06-02 の PDFium スナップショットに更新した
Version 1.39.53
変更 (Changed)
- Delphi の
PDFViewer、SplitView、MultiPageViewerサンプルが、既定でZoom to Pageモードで文書を開くように変更しました - 初回描画では、ユーザーが手動ズームレベルを選ぶ前にページ全体をビューアー領域に収めるようになりました
TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラーのバージョンメタデータを 1.39.53 として報告するよう更新しました
Version 1.39.52
変更 (Changed)
Demo\Lazarus\CreatePDFを強化し、入門サンプルが vector paths、table content、embedded image、text annotation、rotated text、より分かりやすい document-building walkthrough を含む 2 ページ PDF を生成するようになりました- すべての Delphi、C++Builder、Lazarus demo folder に整った
README.htmlページを追加し、残っていた text-only demo README をブラウザーで読めるガイドに置き換えました TPdf.AboutInfo、Lazarus package metadata、installer version metadata を 1.39.52 に更新しました
Version 1.39.51
Demo\Delphi\PreflightReportCliの batch summary を強化し、selected standards 全体の Pass、Action required、Review results に対する standard status totals を追加しました- TXT / HTML / JSON / CSV summary の per-file rows には action-required count と review count が含まれるようになり、各 generated report を開かずに CI artifacts を確認しやすくなりました
TPdf.AboutInfo、Lazarus package metadata、installer version metadata を 1.39.51 に更新しました
Version 1.39.50
Demo\Delphi\PreflightReportCliの directory batch mode を強化し、batchdir=folderは検出した PDF paths を収集してソートした後、安定した順序で reports を生成するようになりました- Recursive directory scans は再現可能な report order と summary rows を生成し、明示的な
batch=list.txtprocessing は引き続き list file order を保持します TPdf.AboutInfo、Lazarus package metadata、installer version metadata を 1.39.50 に更新しました
Version 1.39.49
Demo\Delphi\PreflightReportCliの batch summary を強化し、source kind、source path、recursive state、output directory、report format、selected standards、failon=mode などの run settings を記録するようにしました- JSON summary には
runobject を追加し、TXT と HTML summary には run settings section を表示し、CSV rows には spreadsheet と CI pipelines 向けに同じ audit columns を繰り返し出力します TPdf.AboutInfo、Lazarus package metadata、installer version metadata を 1.39.49 に更新しました
Version 1.39.48
Demo\Delphi\PreflightReportCliの batch output naming を強化し、同じoutdir=を共有する duplicate input file names が generated reports を互いに上書きしないようにしました- Batch runs は同じ実行内で generated report path が既に割り当て済みの場合に
-2、-3以降の suffixes を追加し、summaries は最終的な collision-safe report path を記録します TPdf.AboutInfo、Lazarus package metadata、installer version metadata を 1.39.48 に更新しました
Version 1.39.47
Demo\Delphi\PreflightReportCliの batch summaries を強化し、TXT と JSON の出力に total files、processed files、failed files、issues、failon=matches の aggregate totals を含めるようにしました- CSV summaries は既存 consumers 向けに純粋な row table のままとし、HTML summaries は dashboard header で同じ aggregate metrics を引き続き表示します
TPdf.AboutInfo、Lazarus package metadata、installer version metadata を 1.39.47 に更新しました
Version 1.39.46
Demo\Delphi\PreflightReportCliにsummary=batch.html/.htmを追加し、batch runs が TXT / CSV / JSON manifests に加えて browser-readable dashboard を出力できるようにしました- HTML summaries は total、processed、failed、issue、
failon=match metrics を表示し、各 input を report links、status、counts、error text とともに一覧します TPdf.AboutInfo、Lazarus package metadata、installer version metadata を 1.39.46 に更新しました
Version 1.39.45
Demo\Delphi\PreflightReportCliにbatchdir=folderとrecursiveを追加し、scripts が list file を先に作成せずに PDF folders を直接スキャンできるようにしました- Directory batch mode は list-based batch mode の
outdir=、summary=、standards=、failon=の動作を再利用します。non-recursive は選択した folder のみをスキャンし、recursiveは subfolders を含めます TPdf.AboutInfo、Lazarus package metadata、installer version metadata を 1.39.45 に更新しました
Version 1.39.44
Demo\Delphi\PreflightReportCliにsummary=batch.csv|json|txtを追加し、batch runs が per-file reports の横に machine-readable manifest を出力できるようにしました- Batch summaries には、各 input path、report path、status、standard count、passed count、issue count、
failon=match state、error text が含まれ、CI jobs と外部 scripts で利用できます TPdf.AboutInfo、Lazarus package metadata、installer version metadata を 1.39.44 に更新しました
Version 1.39.43
Demo\Delphi\PreflightReportCliにbatch=list.txtとoutdir=reportsを追加し、scripts が 1 回の実行で PDF files の一覧から preflight reports を生成できるようにしました- Batch mode は空行と
#コメント行をスキップし、入力 PDF から各.preflight.<ext>report name を派生し、per-file errors の後も続行して、戻る前に processed と failed files を集計します TPdf.AboutInfo、Lazarus package metadata、installer version metadata を 1.39.43 に更新しました
Version 1.39.42
Demo\Delphi\PreflightReportCliにfailon=none|issues|action|reviewを追加し、CI jobs が生成された preflight results を決定的な exit codes に変換できるようにしました- CLI は report file と optional attached-report PDF の生成後、選択された
failon=rule に一致した場合に exit code 2 を返します。runtime errors は引き続き exit code 1 を返します TPdf.AboutInfo、Lazarus package metadata、installer version metadata を 1.39.42 に更新しました
Version 1.39.41
Demo\Delphi\PreflightReportCliにattach=output.pdfを追加し、生成した preflight report を新しい PDF copy の document-level attachment として埋め込めるようにしました- CLI は生成した TXT / HTML / Markdown / JSON / CSV report file をディスクに保持し、元の input PDF path への添付を拒否することで、誤った上書きリスクを低減します
TPdf.AboutInfo、Lazarus package metadata、installer version metadata を 1.39.41 に更新しました
Version 1.39.40
Demo\Delphi\PreflightReportCliを追加しました。viewer を開かずに scriptable なFPdfPreflightReport生成を行う Delphi console companion です- CLI は no-argument sample creation に加え、input / output arguments、optional password、
text/html/md/json/csvoutput formats、PDF/A、PDF/UA、PDF/E、PDF/X、PDF/R、PDF/VT 向けのstandards=filtering をサポートします TPdf.AboutInfo、Lazarus package metadata、installer version metadata を 1.39.40 に更新しました
Version 1.39.39
FPdfPreflightReportにTPdfPreflightReport.ToMarkdownとSaveMarkdownToFileを追加し、preflight reports を issue tracker に適した Markdown としてエクスポートできるようにしました- Delphi、C++Builder、Lazarus の
PreflightReportサンプルに、既存の TXT / HTML / JSON / CSV workflow と並ぶ Markdown preview switching と Save MD actions を追加しました TPdf.AboutInfo、Lazarus package metadata、installer version metadata を更新し、1.39.39 を報告するようにしました
Version 1.39.38
- Delphi、C++Builder、Lazarus の
SecurityAuditサンプルに、既存の TXT save / copy workflow と並ぶ JSON audit report export を追加しました - JSON report には
format、generatedAt、summary、findingCount、および severity、area、detail フィールドを持つ構造化されたfindingsrows が含まれます TPdf.AboutInfo、Lazarus package metadata、installer version metadata を更新し、1.39.38 を報告するようにしました
Version 1.39.37
FPdfPreflightReportにTPdfPreflightReport.ToCsvとSaveCsvToFileを追加し、preflight reports を spreadsheet-friendly CSV としてエクスポートできるようにしました- Delphi、C++Builder、Lazarus の
PreflightReportsamples を更新し、既存の TXT / HTML / JSON workflow に加えて CSV preview switching と Save CSV actions を追加しました TPdf.AboutInfo、Lazarus package metadata、installer version metadata を更新し、1.39.37 を報告するようにしました
Version 1.39.36
FPdfPreflightReportにTPdfPreflightReport.IssueCategoryCountsと再利用可能なTPdfPreflightIssueCategoryCount/TPdfPreflightIssueCategoryCounts型を追加し、marker-level issues を category 別に集計できるようにしましたTPdfPreflightReport.ToText、ToHtml、ToJsonを更新し、生成される PreflightReport 出力に per-standard rows と detailed issue recommendations に加えて issue-category count summaries を含めましたTPdf.AboutInfo、Lazarus package metadata、installer version metadata を 1.39.36 に更新しました
Version 1.39.35
- 拡張済みの
PrintDialogsample を Delphi、C++Builder、Lazarus でPrintPreferencesにリネームし、demo name が PDF author print preferences、N-up printing、odd / even filtering、grayscale、cell border、duplex mapping workflow に一致するようにしました TPdf.AboutInfo、Lazarus package metadata、installer version metadata を 1.39.35 に更新しました
Version 1.39.34
Demo\Delphi\PrintPDFにドラッグ&ドロップによる PDF 読み込みを追加し、既存のDemo\CBuilder\PrintPDFworkflow を Delphi および Lazarus の PrintPDF サンプルとあわせて文書化しましたTPdf.AboutInfo、Lazarus package metadata、installer version metadata を更新し、1.39.34 を報告するようにしました
Version 1.39.33
Demo\CBuilder\SplitViewを追加し、Delphi、C++Builder、Lazarus 全体で SplitView sample matrix を完成しましたTPdf.AboutInfo、Lazarus package metadata、installer version metadata を更新し、1.39.33 を報告するようにしました
Version 1.39.32
Demo\Lazarus\SplitViewを追加し、two- or three-pane layouts、active-view navigation、synchronized commands、zoom presets、rotation を備えた side-by-side PDF comparison を Lazarus に提供しましたTPdf.AboutInfo、Lazarus package metadata、installer version metadata を更新し、1.39.32 を報告するようにしました
Version 1.39.31
Demo\Lazarus\PrintPDFを追加し、preview navigation、page ranges、copies、collate mode、progress、cancellation を備えた standard PDF print workflow を Lazarus に提供しましたTPdf.AboutInfo、Lazarus package metadata、installer version metadata を更新し、1.39.31 を報告するようにしました
Version 1.39.30
Demo\Lazarus\FontPropertiesを追加し、Delphi、C++Builder、Lazarus 全体で FontProperties サンプル行列を補完しましたTPdf.AboutInfo、Lazarus package metadata、installer version metadata を更新し、1.39.30 を報告するようにしました
Version 1.39.29
Demo\CBuilder\FontPropertiesを追加し、Delphi サンプルに加えて C++Builder でもインデックス指定の文字およびフォントメタデータ検査を利用できるようにしましたTPdf.AboutInfo、Lazarus package metadata、installer version metadata を更新し、1.39.29 を報告するようにしました
Version 1.39.28
Demo\Delphi\ExtractTextPagesを追加し、Delphi、C++Builder、Lazarus 全体でページ単位のテキスト抽出サンプル行列を補完しましたTPdf.AboutInfo、Lazarus package metadata、installer version metadata を更新し、1.39.28 を報告するようにしました
Version 1.39.27
Demo\Lazarus\PrintDialogを追加し、Delphi、C++Builder、Lazarus の PrintDialog sample matrix を完成させましたTPdf.AboutInfo、Lazarus package metadata、installer version metadata を更新し、1.39.27 を報告するようにしました
Version 1.39.26
Demo\CBuilder\PrintDialogを追加し、N-up printing と PDF author print preferences workflow を Delphi sample に加えて C++Builder でも利用できるようにしましたTPdf.AboutInfo、Lazarus package metadata、installer version metadata を更新し、1.39.26 を報告するようにしました
Version 1.39.25
Demo\CBuilder\ViewerInteractionLabを追加し、Delphi、C++Builder、Lazarus の ViewerInteractionLab sample matrix を完成させました- library build workflow と Win64 C++Builder package outputs を更新し、
TPdfViewviewer interaction methods が Win64 demos で正しくリンクされるようにしました TPdf.AboutInfo、Lazarus package metadata、installer version metadata を更新し、1.39.25 を報告するようにしました
Version 1.39.24
Demo\Lazarus\ViewerInteractionLabを追加し、focused viewer interaction workflow を Delphi sample に加えて Lazarus でも利用できるようにしましたTPdf.AboutInfo、Lazarus package metadata、installer version metadata を更新し、1.39.24 を報告するようにしました
Version 1.39.23
Demo\Lazarus\SearchAndSelectを追加し、Delphi、C++Builder、Lazarus の SearchAndSelect sample matrix を完成させましたTPdf.AboutInfo、Lazarus package metadata、installer version metadata を更新し、1.39.23 を報告するようにしました
Version 1.39.22
Demo\CBuilder\ContentExtractionLabとDemo\Lazarus\ContentExtractionLabを追加し、multi-category content extraction workflow をすべての対応 demo IDE で利用できるようにしましたTPdf.AboutInfo、Lazarus package metadata、installer version metadata を更新し、1.39.22 を報告するようにしました
Version 1.39.21
Demo\Delphi\PreflightReport、Demo\Lazarus\PreflightReport、Demo\CBuilder\PreflightReportに preview format selector を追加し、レポート保存前に text または JSON output を確認できるようにしましたTPdf.AboutInfo、Lazarus package metadata、installer version metadata を更新し、1.39.21 を報告するようにしました
Version 1.39.20
FPdfPreflightReportにTPdfPreflightReport.ToJsonとSaveJsonToFileによる JSON export を追加し、機械可読の summary、per-standard status / priority、next action、issue detail を出力できるようにしましたDemo\Delphi\PreflightReport、Demo\Lazarus\PreflightReport、Demo\CBuilder\PreflightReportに、TXT / HTML export と並ぶ Save JSON 操作を追加しましたTPdf.AboutInfo、Lazarus package metadata、installer version metadata を更新し、1.39.20 を報告するようにしました
Version 1.39.19
FPdfPreflightReportにTPdfPreflightStatus、issue categories、per-standard priority、TXT / HTML reports の next-action guidance を追加しましたDemo\Delphi\PreflightReport、Demo\Lazarus\PreflightReport、Demo\CBuilder\PreflightReportは summary grid に status、priority、issue count、next action を表示しますTPdf.AboutInfo、Lazarus package metadata、installer version metadata を 1.39.19 に更新しました
Version 1.39.18
Demo\Lazarus\SecurityAuditを追加し、read-only PDF risk-surface audit workflow の Delphi、C++Builder、Lazarus サンプルマトリックスを完了しました- Lazarus サンプルは permissions、attachments、JavaScript actions、URI / Launch link annotations、web links、signatures、XFA state、V8 / XFA helper availability、unsupported-feature callbacks を列挙し、finding list を TXT report として保存またはコピーできます
TPdf.AboutInfo、Lazarus package metadata、installer version metadata が 1.39.18 を報告するよう更新しました
Version 1.39.17
Demo\CBuilder\SecurityAuditを追加し、既存の Delphi サンプルに加えて read-only PDF risk-surface audit workflow を C++Builder に提供しました- C++Builder サンプルは permissions、attachments、JavaScript actions、URI / Launch link annotations、web links、signatures、XFA state、V8 / XFA helper availability、unsupported-feature callbacks を列挙し、finding list を TXT report として保存またはコピーできます
TPdf.AboutInfo、Lazarus package metadata、installer version metadata が 1.39.17 を報告するよう更新しました
Version 1.39.16
Demo\CBuilder\SearchAndSelectを追加し、既存の Delphi サンプルに加えて独立した SearchAndSelect viewer workflow を C++Builder に提供しました- C++Builder サンプルは PDFs の作成またはオープン、全ページ matches の page / character-index previews 付き一覧、Previous / Next と double-click navigation、
HighlightSearchTextによる現在ページ matches のハイライトを示します AllowUserTextSelection、SelectedText、SelectAll、CopySelectionToClipboard、ClearSelection、OnSelectionChange、spreadDisplayModeoptions も公開し、バージョンメタデータは 1.39.16 を報告します
Version 1.39.15
Demo\CBuilder\WatermarkStampを追加し、再利用可能な Form XObject watermark と stamp workflows の Delphi、Lazarus、C++Builder demo matrix を完成させました- C++Builder サンプルは target PDF と stamp PDF を作成し、
CreateXObjectFromPageで stamp page を再利用し、TPdfMatrixtransforms を適用して centered watermarks、corner stamps、page number labels を保存します TPdf.AboutInfo、Lazarus package metadata、installer version metadata を更新し、1.39.15 を報告するようにしました
Version 1.39.14
Demo\Lazarus\WatermarkStampを追加し、再利用可能な Form XObject watermark と stamp workflow を Lazarus に提供しました- Lazarus サンプルは target PDF と stamp PDF を作成し、
CreateXObjectFromPageで stamp page を再利用し、TPdfMatrixtransforms を適用して centered watermarks、corner stamps、page number labels を保存します TPdf.AboutInfo、Lazarus package metadata、installer version metadata を更新し、1.39.14 を報告するようにしました
Version 1.39.13
Demo\CBuilder\PreflightReportを追加し、再利用可能なFPdfPreflightReportworkflow の Delphi、Lazarus、C++Builder demo matrix を完成させました- C++Builder サンプルは
FPdfPreflightReport.hppを使って standard summaries、TXT report previews、TXT / HTML report files、Open Last Report の動作を生成します TPdf.AboutInfo、Lazarus package metadata、installer version metadata を更新し、1.39.13 を報告するようにしました
Version 1.39.12
Demo\Lazarus\PreflightReportを追加し、PDF/A、PDF/UA、PDF/E、PDF/X、PDF/R、PDF/VT の preflight report workflow を Lazarus に提供しました- Lazarus サンプルでは PDF を開く、または作成し、target standards を選択し、summary rows と TXT report output をプレビューし、TXT / HTML reports を保存して、直近に保存した report を開けます
TPdf.AboutInfo、Lazarus package metadata、installer version metadata を更新し、1.39.12 を報告するようにしました
Version 1.39.11
Demo\Delphi\SearchAndSelectを強化し、すべてのページの検索結果リストで page number、character index、preview text を記録できるようにしました- 現在ページの
HighlightSearchTextの動作を維持しながら、Previous / Next match navigation と double-click result jumping を追加しました TPdf.AboutInfo、Lazarus package metadata、installer version metadata を更新し、1.39.11 を報告するようにしました
Version 1.39.10
Demo\Delphi\SecurityAuditに Save Report と Copy Report actions を追加し、現在の summary と finding rows を TXT audit report として出力できるようにしました- audit panel をリセットしたときに report export state をクリアし、コピーまたは保存した reports が表示中の findings と一致するようにしました
TPdf.AboutInfo、Lazarus package metadata、installer version metadata を 1.39.10 に更新しました
Version 1.39.9
Demo\Delphi\ContentExtractionLabに source-PDF save、report copy-to-clipboard、all / none category selection actions を追加しました- category selection が変更されたときに現在の report を無効化し、TXT / JSON exports が表示中の extraction scope を反映するようにしました
TPdf.AboutInfo、Lazarus package metadata、installer version metadata を 1.39.9 に更新しました
Version 1.39.8
Demo\Delphi\ContentExtractionLabを追加しました。document metadata、page text、page objects、images、attachments、links、annotations、bookmarks、font / character metrics を扱う統合 content extraction workflow sample です- この sample は既存の PDF を開くか、text、image、attachment、annotation を含む synthetic PDF を作成し、summary rows と詳細な TXT / JSON reports を生成できます
TPdf.AboutInfo、Lazarus package metadata、installer version metadata を 1.39.8 に更新しました
Version 1.39.7
Lib\FPdfPreflightReport.pasを追加しました。これはValidatePdfA、ValidatePdfUa、ValidatePdfE、ValidatePdfX、ValidatePdfR、ValidatePdfVTを 1 つのTPdfPreflightReportオブジェクトにまとめる再利用可能なレポートヘルパーです- PDF を開くか作成し、target standards を選択し、summary rows と issue recommendations をプレビューして、TXT または HTML レポートを保存する workflow sample として
Demo\Delphi\PreflightReportを追加しました - 生成されるレポートは、内蔵 validator が marker-level validation を対象とする境界を明示し、必要に応じて専用の content-level preflight tools と組み合わせられるようにしました
TPdf.AboutInfo、Lazarus package metadata、package project lists、installer version metadata を 1.39.7 に更新しました
Version 1.39.6
- search highlighting、text selection、selected-text preview、copy、clear、spread display modes に集中した viewer workflow サンプル
Demo\Delphi\SearchAndSelectを追加しました - このサンプルは、新しいライブラリ API を追加せずに
HighlightSearchText、match-case / whole-word 検索オプション、AllowUserTextSelection、SelectedText、SelectAll、CopySelectionToClipboard、ClearSelectionを示します TPdf.AboutInfo、Lazarus package metadata、installer version metadata を 1.39.6 に更新しました
Version 1.39.5
Demo\Delphi\ViewerInteractionLabを SearchAndSelect スタイルの viewer UX サンプルに拡張し、HighlightSearchText、match-case / whole-word オプション、選択テキストのプレビュー、既存の selection / clipboard controls を含めましたDemo\Delphi\PrintDialogを拡張し、PDF author print preferences としてPrintCopies、PrintPageRanges、PrintScaling、PrintPaperHandling、およびSetPdfPrintPaperHandlingDevModeの duplex mapping を表示できるようにしました- 読み取り専用の risk-surface サンプル
Demo\Delphi\SecurityAuditを追加し、permissions、attachments、document JavaScript、URI / Launch links、web links、signatures、XFA state、V8 / XFA helper availability を一覧表示します TPdf.AboutInfo、Lazarus package metadata、installer version metadata を 1.39.5 に更新しました
Version 1.39.4
Demo\CBuilder\ImageToPDFとDemo\Lazarus\ImageToPDFを追加し、Delphi、C++Builder、Lazarus 全体で ImageToPDF サンプルのマトリクスを完成させました- 新しいサンプルは、複数画像の選択、選択画像のプレビュー、画像ごとに 1 つの PDF ページ、A4 portrait / landscape ページサイズ、中央揃えの画像スケーリング、画像ごとの進捗、保存後の生成 PDF 表示を示します
TPdf.AboutInfo、Lazarus package metadata、installer version metadata を 1.39.4 に更新しました
Version 1.39.3
Demo\CBuilder\BatchExportを追加し、既存の Delphi および Lazarus サンプルと同じく、複数ファイルの PDF から JPG へのエクスポート workflow を C++Builder でも利用できるようにしました- このサンプルは
LoadCustomDocument、IPdfCancellationTokenSource、ストリーミングTFileStream入力、ファイル別およびページ別の進捗、キャンセル処理、DPI / quality / password 入力、完了後の出力フォルダ表示を示します TPdf.AboutInfo、Lazarus package metadata、installer version metadata を 1.39.3 に更新しました
Version 1.39.2
Demo\Delphi\WatermarkStampを追加しました。ターゲット PDF と再利用可能な stamp PDF を作成し、中央の透かし、右上のスタンプ、ページ番号ラベルを各ページへ適用する、実行可能な Form XObject ワークフロー例です- このサンプルは、新しいライブラリ API を追加せずに
CreateXObjectFromPage、InsertFormObjectFromXObject、TPdfMatrix、FPDFPageObj_SetMatrixを示します Docs\en-us\Examples.htmlを更新し、行列を現在のTPdfMatrix.HandleパターンでFPDFPageObj_SetMatrixに渡すようにしましたTPdf.AboutInfo、Lazarus package metadata、installer version metadata を 1.39.2 に更新しました
Version 1.39.1
Demo\Delphi\ViewerInteractionLabを追加しました。これはTPdfViewの display modes、fit modes、page colors、rotation、user text selection、clipboard actions、DeviceToPage座標フィードバックに絞ったサンプルですDemo\CBuilder\StandardsLab/Demo\Lazarus\StandardsLabを追加し、Lazarus ユーザーも PDF/A、PDF/UA、PDF/E、PDF/X、PDF/R、PDF/VT の検証と marker-output ワークフローを実行できるようにしましたLib\37.0\PDFiumPas.dprojとLib\FPC\PDFiumLaz.lpkに standards units を列挙し、Delphi のSplitViewデモビルドで重複したWinapi.ShellAPIimport を削除しましたBatchExport、PDFViewer、MultiPageViewer、SplitViewにある Delphi デモの batch-build blocker を、実行時動作を変えずに修正しました- 現在の project mode 向けに
PDFViewerとMultiPageViewerの C++Builder デモ batch-build 互換性を修正し、nullptrをNULLに置き換えました TPdf.AboutInfo、Lazarus package metadata、installer version metadata を 1.39.1 に更新しました
Version 1.39.0
Demo\Delphi\StandardsLabを追加しました。PDF を読み込むか作成し、ValidatePdfA、ValidatePdfUa、ValidatePdfE、ValidatePdfX、ValidatePdfR、ValidatePdfVTを実行して、検出された conformance、合否状態、issue 数を 1 つのグリッドに表示する実行可能な標準ワークフロー例です- StandardsLab の保存ボタンは
SaveAsPdfA、SaveAsPdfUa、SaveAsPdfE、SaveAsPdfX、SaveAsPdfR、SaveAsPdfVTを呼び出し、独自のハーネスを書かずに PDF 標準 marker 出力を確認できます TPdf.AboutInfo、Lazarus パッケージメタデータ、インストーラーのバージョンメタデータを 1.39.0 に更新しました
Version 1.38.0
TPdfViewの検索およびテキスト選択オーバーレイは、論理 mask 描画ではなく実際の alpha blending を使用するようになり、ハイライト下のページ内容を保持しますSetPdfPrintPaperHandlingDevModeを追加し、TPrintPaperHandlingを WindowsDEVMODE.dmDuplex値(DMDUP_SIMPLEX、DMDUP_HORIZONTAL、DMDUP_VERTICAL)へマップできるようにしましたTPdfView.SmoothScrollは line/page scrollbar commands を timer-driven segments でアニメーションするようになりました。thumb tracking は即時のままですTPdf.AboutInfoとインストーラーバージョンメタデータを 1.38.0 に更新しました
Version 1.37.0
TPdfにインスタンス単位の render lock を追加し、RenderPage、RenderTile、RenderPageProgressive、ページ reload、ドキュメント unload を直列化しました。共有コンポーネント経由の worker レンダリングが実用的になり、ドキュメント変更とライフタイム管理は引き続きアプリケーションが調整します- zero-copy bitmap wrapper が bottom-up
TBitmapDIB を拒否し、PDFium 所有バッファへフォールバックして最後にコピーするよう修正しました。VCL レンダリングテストの stride corruption / access violation を解消します TPdfViewの選択動作を調整しました。AllowUserTextSelectionはユーザー入力だけを制御し、コードレベルの選択 API は引き続き描画します。SelectAllは実際の表示 spread に従うため、表紙ページがページ 2 を選択しなくなりました。Delphi、Lazarus、C++Builder テストを拡張しましたTPdf.AboutInfoとインストーラーバージョンメタデータを 1.37.0 に更新しました
Version 1.36.0
TPdfViewでエンドユーザー向けテキスト選択を有効化しました。v1.17.0 で予約されていたAllowUserTextSelectionが完全なドラッグ選択パイプラインを駆動します。テキスト文字上で左クリックすると選択モードへ入り、空白領域で左クリックした場合は従来どおりパン操作を続けます。フォーム入力ウィジェットが優先されるため、フォームフィールド上のクリックは選択開始ではなくフィールドフォーカスになります- ダブルクリックで単語、トリプルクリックで行を選択し、
Ctrl+Aで現在ページ(見開き表示モードでは両ページ)を選択し、Ctrl+Cで選択範囲を Windows クリップボードへCF_UNICODETEXTとしてコピーします Shift+Left/Shift+Rightは選択を 1 文字ずつ拡張し(見開きモードでは隣接ページへまたがります)、Shift+Home/Shift+Endは基準文字のボックス高を行クラスタの許容差として使いながら、視覚上の行端まで選択を拡張します。これによりフォントサイズが混在する行でも正しくまとまります- テキスト上にホバーするとカーソルは
crIBeamに変わり、テキスト外に出ると既定カーソルへ戻ります。テキスト選択ドラッグ中にビューア端の 20 ピクセルのデッドゾーンへ入ると、ページは自動スクロールします(50 ms tick、16 px / tick、パン経路と同じ境界でクランプされます)。そのため、マウスを離さずに現在のビューポート外まで選択を延ばせます - 見開き表示モード(
dmTwoPageContinuous、dmTwoPageContinuousWithCover)ではページをまたぐ選択が動作します。左ページで開始して右ページで終えるドラッグは、両ページをまたぐ連続範囲を選択します。SelectedTextはページごとの断片を CR/LF で連結するため、往復したテキストは通常の複数行コンテンツとして読めます - 新しい公開プロパティ
SelectionColor(既定値はclHighlight、Windows のシステム選択色)を追加しました。黄色で検索結果を示すHighlightColorとは独立しているため、検索ハイライトとドラッグ選択を同時に表示しても色が衝突しません - 新しい公開イベント
OnSelectionChangeは、選択範囲の実体化された範囲が実際に変化したときだけ発火します。同じ内容の再適用では発火しないため、ホストアプリはデバウンスなしでステータスバーやボタン有効状態へ直接接続できます TPdfViewに新しい公開 APIHasSelection、SelectionCharCount、SelectedText、ClearSelection、SelectAll、CopySelectionToClipboardを追加しました。これらはコードレベルの入口であり、AllowUserTextSelectionに関係なく常に動作します。フラグはユーザー入力(マウス、Ctrl+C、Ctrl+A、Shift+矢印)だけを制御するため、キオスク用途ではユーザー操作の選択を無効化しつつ、同じ API を呼ぶ「Select All / Copy」ツールバーボタンを使えます- 既定の右クリック
Copy/复制ポップアップメニューは、ホストが独自のPopupMenuを割り当てていない場合に自動接続されます。そのため、標準的な「テキストを選択して右クリックでコピー」がそのまま動きます。キャプションはSysLocale.PriLangIDに応じて英語と中国語から選ばれ、完全なローカライズや拡張メニューが必要なホストは独自のPopupMenuを割り当てれば既定メニューは抑止されます - 選択は
SetPdf、SetPageNumber、SetActive(False)、DisplayModeの遷移で自動的にクリアされ、直前の選択が空でなかった場合にだけOnSelectionChangeが 1 回発火します。フォーム入力サブシステムが優先されるため、フォームフィールド編集中は選択系ショートカットがすべて後退し、フィールド自身がCtrl+C/Ctrl+A/Shift+arrowsを受け取ります - Delphi と Lazarus の回帰テストを各 202 ケース、C++Builder のスイートを 159 ケースへ拡張しました。既定値、round-trip、公開 API の挙動、状態変更時クリア、マウスドラッグ(テキスト上 / 空白上)、クリックとドラッグの差異、IBeam カーソル切替、ダブルクリック単語選択、トリプルクリック行選択、キーボードショートカット、既定ポップアップの接続 / 抑止 / キャプション、見開きでのページまたぎ選択、さらにクリップボードの CR/LF round-trip を含めてカバーしています
Version 1.35.0
- PDF/VT (ISO 16612-2:2010) のマーカー注入を追加しました。TPdf.SaveAsPdfVT は現在の文書を PDF/VT-1 または PDF/VT-2 準拠ファイル(可変データ印刷およびトランザクション印刷向けの PDF サブセット)へ昇格させます。PDF/VT は PDF/X-4 の上に構築されており、ISO 16612-2 §6.2.1 ではすべての PDF/VT-1 ファイルが PDF/X-4 にも準拠することを要求するため、注入器は PDF/VT 固有プロパティと並行して完全な PDF/X-4 マーカーセット(XMP
pdfxid:GTS_PDFXVersion = "PDF/X-4"、Info の/GTS_PDFXVersion (PDF/X-4)と/Trapped、埋め込み ICC プロファイルを持つ OutputIntent 辞書を参照するカタログ/OutputIntents)を書き込みます - PDF/VT 固有の注入内容には、XMP の
pdfvtid:GTS_PDFVTVersion(§6.3 Table 2 に従う "PDF/VT-1" または "PDF/VT-2")とpdfvtid:GTS_PDFVTModDate(§6.3 NOTE 1 に従いxmp:ModifyDateと同期)に加え、pdfxid と pdfvtid の両方の名前空間を宣言する pdfaExtension:schemas 記述(NPES URI はhttp://www.npes.org/pdfx/ns/id/とhttp://www.npes.org/pdfvt/ns/id/)が含まれます。trailer には/ID配列が入ります - メモリ内 PDF/VT 出力向けの TPdf.SaveAsPdfVTToStream と、一般的な用途向けの省略形
TPdf.SaveAsPdfVT(FileName)を追加しました。この省略形は、内蔵の sRGB IEC61966-2.1 OutputIntent(3144 bytes、SaveAsPdfA / SaveAsPdfX と同じプロファイル)と/Trapped /Falseを使う PDF/VT-1 を生成します - TPdf.ValidatePdfVT を追加しました。開いている PDF の PDF/VT 準拠マーカー(XMP の
pdfvtid:GTS_PDFVTVersionとGTS_PDFVTModDateの存在、pdfvtid:GTS_PDFVTModDateとxmp:ModifyDateの一致、基盤となるpdfxid:GTS_PDFXVersion識別子の存在、§6.5 に従うカタログ/DPartRootの存在、/OutputIntentsと/DestOutputProfile、trailer の /ID、暗号化状態、xmp:CreateDate/ModifyDateの存在)を検査し、検出した準拠レベルと問題集合を持つ TPdfVTValidationResult を返します - TPdf.PdfVTConformance プロパティを追加しました。これにより、ValidatePdfVT を明示的に呼ばなくても、現在開いている文書の準拠レベル(pvc1、pvc2、pvcNone、pvcUnknown)を返せます
- 新しいユニット FPdfPdfvt で、TPdfVTConformance(pvcUnknown/None/1/2)、TPdfVTTrappedState(ptvUnspecified/True/False/Unknown)、TPdfVTValidationResult、TPdfVTValidationIssue、TPdfVTSaveOptions を公開しました
- Document Part Hierarchy(§6.5 の
DPartRoot/DPartツリー)は可変データ印刷ワークフローの受信者 / ページ範囲マッピングに依存するアプリケーションレベル構造です。SaveAsPdfVT は DPart ツリーを合成しません。そのため、ValidatePdfVT は欠落した/DPartRootをpvviMissingDPartRootとして表面化し、呼び出し側が別の DPart 構築手順へ渡せるようにします。フォント埋め込み、透明度、ICC 管理色、OPI / JavaScript / Reference XObject 禁止などの PDF/X-4 コンテンツレベル要件は、引き続き文書作成者と PDFium のレンダリングパイプラインの責任です - TPdf.AboutInfo 文字列を更新し、現在の製品バージョンを報告するようにしました
Version 1.34.0
- PDF/R-1 (ISO 23504-1:2020) のマーカー注入を追加しました。TPdf.SaveAsPdfR は現在の文書を PDF/R-1 準拠ファイル(スキャン文書向けの PDF ラスター画像転送サブセット)へ昇格させます。注入は後処理で付与できるファイル形式レベル要件をカバーし、trailer dictionary と startxref keyword の間に書かれる固有の
%PDF-raster-1.0バージョン識別コメント (§5)、§6.3 のホワイトリスト(Version / ViewerPreferences / PageLayout / PageMode / AcroForm / Metadata のみ)へ縮小した catalog、§6.4.3 のホワイトリスト(Creator / Producer / CreationDate / ModDate のみ)へ縮小した Document Information Dictionary、§6.4.4 Table 1 の 4 項目(xmp:CreatorTool / pdf:Producer / xmp:CreateDate / xmp:ModifyDate)を持つ catalog /Metadata XMP ストリーム、そして trailer の /ID 配列を含みます - メモリ内 PDF/R 出力向けの TPdf.SaveAsPdfRToStream と、一般的な用途向けの省略形
TPdf.SaveAsPdfR(FileName)を追加しました - TPdf.ValidatePdfR を追加しました。開いている PDF の PDF/R-1 準拠マーカー(
%PDF-raster-x.yフッターコメント、ヘッダーバージョン、/Type /ObjStm の不在、catalog ホワイトリスト準拠、Info dictionary ホワイトリスト準拠、XMP メタデータストリームの存在、trailer の /ID)を検査し、検出された準拠レベルと問題集合を持つ TPdfRValidationResult を返します - TPdf.PdfRConformance プロパティを追加しました。これにより ValidatePdfR を明示的に呼ばなくても、現在開いている文書の準拠レベル(prc1、prcNone、prcUnknown)を返せます
- 新しいユニット FPdfPdfr で TPdfRConformance、TPdfRValidationResult、TPdfRValidationIssue、TPdfRSaveOptions を公開しました。
TPdfRSaveOptions.Defaultは StripInfoOptionalEntries と StripCatalogOptionalEntries を True に設定するため、注入器は既定で §6.3 / §6.4.3 に準拠した catalog と Info dictionary を生成します。呼び出し側がこれらを False にすればソースの項目を保持できます。その場合出力は該当する PDF/R 条項を満たしませんが、他のマーカーは引き続き付与されます - コンテンツレベルの要件(ページごとの Contents 構造 (§6.5.1)、MediaBox の
[0 0 w h]形式 (§6.5.3)、フィルター制限 (§6.2.2。許可されるのは FlateDecode、CCITTFaxDecode の bitonal、DCTDecode の 8-bit gray/RGB のみ)、object streams 不使用 (§6.2.4)、§6.6 の strip layout)は引き続きソース PDF の責任です。これらは後処理では強制できません。PDF/R は他の PDF/x 標準より構造的に厳格なサブセットであり、ソースバイトを正しく生成する必要があります。ValidatePdfR はこのユニットで検出できるファイル形式問題を表面化するため、完全な内容検証には TWAIN Working Group の PDF/R validator と組み合わせてください - TPdf.AboutInfo 文字列を更新し、現在の製品バージョンを報告するようにしました
Version 1.33.0
- PDF/X(ISO 15930 ファミリー)のマーカー注入を追加しました。TPdf.SaveAsPdfX は、ベース PDF にインクリメンタル更新による後処理を施し、現在の文書を PDF/X-1a:2001、PDF/X-3:2002、または PDF/X-4 準拠ファイルへ昇格させます。注入は後処理で付与できるファイル形式レベル要件をカバーし、
pdfxid:GTS_PDFXVersion(PDF/X-1a / PDF/X-3 ではpdfxid:GTS_PDFXConformanceも)と対応する pdfaExtension:schemas 記述を含む XMP メタデータストリーム、/GTS_PDFXVersion、/GTS_PDFXConformance、/Trappedエントリを持つよう書き換えた Document Information Dictionary、/OutputIntents [N 0 R]を備え、/S /GTS_PDFXと埋め込み ICC プロファイルを持つ OutputIntent 辞書を参照する更新後 catalog、そして trailer の/ID配列を含みます - メモリ内 PDF/X 出力向けの TPdf.SaveAsPdfXToStream と、省略形
TPdf.SaveAsPdfX(FileName)を追加しました。この省略形は内蔵 sRGB IEC61966-2.1 OutputIntent を使う PDF/X-4(3144 bytes、SaveAsPdfA で使うプロファイルと同一)を生成します - TPdf.ValidatePdfX を追加しました。開いている PDF の PDF/X 準拠マーカー(XMP の pdfxid 識別子と Info dictionary 値との一致、pdfxid 拡張スキーマ記述、/OutputIntents 配列と /DestOutputProfile、Title の存在、trailer の /ID、暗号化状態、xmp:CreateDate / xmp:ModifyDate の存在)を検査し、検出されたレベルと問題集合を持つ TPdfXValidationResult を返します
- TPdf.PdfXConformance プロパティを追加しました。これにより ValidatePdfX を明示的に呼ばなくても、現在開いている文書の準拠レベル(pxc1a、pxc3、pxc4、pxcNone、pxcUnknown)を返せます。3 つの準拠レベルの判別には XMP バージョン文字列を解析します
- 新しいユニット FPdfPdfx で、TPdfXConformance(pxcUnknown/None/1a/3/4)、TPdfXTrappedState(ptUnspecified/True/False/Unknown)、TPdfXValidationResult、TPdfXValidationIssue、TPdfXSaveOptions を公開しました。
TPdfXSaveOptions.Defaultは PDF/X-4、sRGB OutputIntent、/Trapped /Falseを既定にします。呼び出し側はConformanceを上書きしたり、商業印刷ワークフロー向けに CMYK のIccProfileDataを渡したり、特定の ICC characterization registry entry(例 FOGRA39、GRACoL2006_Coated1v2)を指すようOutputCondition/OutputConditionIdentifier/RegistryNameを変更できます - 全フォント埋め込み、JavaScript 不使用、可視注釈禁止、OPI 禁止、PDF/X-1a / PDF/X-3 の透明度ルールなどのコンテンツレベル要件は、引き続き文書作成者と PDFium のレンダリングパイプラインの責任です。完全な準拠検証には、ValidatePdfX を callas pdfaPilot や Ghent PDF Workgroup Output Suite のようなプリフライトツールと組み合わせてください
- TPdf.AboutInfo 文字列を更新し、現在の製品バージョンを報告するようにしました
Version 1.32.0
- PDF/E-1 (ISO 24517-1:2008) マーカー注入サポートを追加: TPdf.SaveAsPdfE はベース PDF にインクリメンタル更新による後処理を施して、現在のドキュメントを PDF/E-1 準拠ファイルに昇格させます。注入は後処理で達成可能なファイル形式レベルの要件をカバーします —
pdfe:ISO_PDFEVersion = "PDF/E-1"と対応する pdfaExtension:schemas 記述を含む XMP メタデータストリーム、§5 で必須の/ISO_PDFEVersion (PDF/E-1)エントリを含むよう書き換えられた Document Information Dictionary、§13.1 経由で ISO 19005-1 §6.7 から継承された Info-XMP 対応ブロック(dc:title / dc:creator / dc:description / pdf:Producer / pdf:Keywords / xmp:CreateDate / xmp:ModifyDate / xmp:MetadataDate / xmp:CreatorTool)、および §6.2 で必須の trailer/ID配列 - メモリ内 PDF/E 出力用の TPdf.SaveAsPdfEToStream、一般的なケース用のショートカット
TPdf.SaveAsPdfE(FileName)を追加 - TPdf.ValidatePdfE を追加しました。開いている PDF の PDF/E-1 準拠マーカーとして、XMP の pdfe:ISO_PDFEVersion と Info 辞書の値の一致、pdfe 拡張スキーマ記述、Info 辞書の /ISO_PDFEVersion、trailer の /ID、xmp:CreateDate と xmp:ModifyDate の有無を検査します。検出した準拠レベルと問題の集合を構造化した結果として返します
- TPdf.PdfEConformance プロパティを追加しました。ValidatePdfE を明示的に呼ばずに、開いている文書の準拠レベル(pec1、pecNone、pecUnknown)を取得できます
- 新しいユニット FPdfPdfe にエクスポートされた新しい型: TPdfEConformance、TPdfEValidationResult、TPdfEValidationIssue、TPdfESaveOptions
- Info ディクショナリの書き換えは、PDFium Delphi Component の PDF/x 後処理パスで初めてのことです。既存の Info オブジェクトを同じオブジェクト番号で書き換えるため、xref サブセクションと trailer の /Info 参照は有効なままです。ソース trailer に /Info がない場合は新しい Info ディクショナリを合成します。PDFium 自体が SaveAs 出力ごとに Info ディクショナリを生成するため、通常は書き換えのパスが使われます
- コンテンツレベルの要件 (フォント埋め込み、ToUnicode CMap、禁止された XObject / ExtGState キー / XFA フォーム) は引き続きドキュメント作成者の責任です。SaveAsPdfE はファイル形式のマーカーを付与しますが、ページ内容を変更したり、禁止された機能を削除したりはしません
- TPdf.AboutInfo 文字列を更新し、現在の製品バージョンを報告するようにしました
Version 1.31.0
- PDF/UA-1 (ISO 14289-1:2014) マーカー注入サポートを追加: TPdf.SaveAsPdfUa は、ベース PDF にインクリメンタル更新による後処理を施して、現在のドキュメントを PDF/UA-1 準拠ファイルに昇格させます。注入は後処理で達成可能なファイル形式レベルの要件をカバーします —
pdfuaid:part = 1と対応する pdfaExtension:schemas 記述を含む XMP メタデータストリーム、必須のdc:title、catalog/MarkInfo << /Marked true /Suspects false >>と/ViewerPreferences << /DisplayDocTitle true >>(ソースに存在しない場合のみ注入)、catalog/Lang(呼び出し側が BCP 47 タグを提供した場合)、trailer/ID配列 - メモリ内 PDF/UA 出力のための TPdf.SaveAsPdfUaToStream、および一般的なケース用のデフォルトオプションショートカット
TPdf.SaveAsPdfUa(FileName)を追加 - TPdf.ValidatePdfUa を追加: 開いている PDF の PDF/UA-1 準拠マーカー (StructTreeRoot の存在、/Lang、/MarkInfo /Marked true かつ /Suspects = false、/ViewerPreferences /DisplayDocTitle true、XMP pdfuaid:part 識別子、dc:title の存在、trailer /ID、暗号化状態) をチェックし、検出された準拠レベルと問題セットを含む構造化結果を返します
- TPdf.PdfUaConformance プロパティを追加: ValidatePdfUa を明示的に呼び出さずに、開いているドキュメントの準拠レベル (puc1、pucNone、または pucUnknown) を直接返します
- 新しいユニット FPdfPdfua にエクスポートされた新しい型: TPdfUaConformance、TPdfUaValidationResult、TPdfUaValidationIssue、TPdfUaSaveOptions
- TPdfUaSaveOptions の空フィールド (Title / Author / Subject / Keywords / Creator / Producer / CreationDate / ModDate / DocumentId / InstanceId / Language) は FPDF_GetMetaText / FPDF_GetFileIdentifier / FPDFCatalog_GetLanguage 経由で自動的に埋められます
- コンテンツレベルの要件 (StructTreeRoot タグ付け完全性、Figure Alt テキスト、ToUnicode CMap、フォント埋め込みなど) は引き続きドキュメント作成者の責任です — SaveAsPdfUa はファイル形式マーカーのみを付加します。ValidatePdfUa は StructTreeRoot の不在を
pvuaiMissingStructTreeRootとして報告します - TPdf.AboutInfo 文字列を更新し、現在の製品バージョンを報告するようにしました
Version 1.30.0
- PDF/A-1b 出力が ISO 19005-1 (Cor.1:2007 含む) の Document Information Dictionary と XMP の等価性要件を満たすようになりました。PDFium がベース PDF に書き込む Info dictionary の各エントリは XMP パケットにミラーリングされ、Title (dc:title)、Author (dc:creator)、Subject (Cor.1 により dc:description)、Keywords (pdf:Keywords)、Creator (xmp:CreatorTool)、Producer (pdf:Producer)、CreationDate (xmp:CreateDate)、ModDate (xmp:ModifyDate) を含みます。xmp:MetadataDate も出力されます
- PDF/A ドキュメントの trailer に常に /ID 配列が含まれるようになりました (ISO 19005-1 6.1.3 の必須要件)。TPdf.SaveAsPdfA がすでに file identifier を持つドキュメントを処理する場合、既存の 16 バイトの permanent / changing ID が再利用されます。それ以外の場合は、ソースバイトから決定論的な 16 バイトのフォールバック ID が導出されます
- 注入される XMP は、ISO 19005-1 6.7.8 (Cor.1 により改訂) で要求される pdfaid extension schema 記述を埋め込むようになりました。pdfaid は XMP Specification 2004 に対する extension schema として扱われ、すべての準拠ファイルは pdfaExtension:schemas コンテナにその property names、value types、categories を宣言する必要があります
- TPdfASaveOptions に 5 つの新しいオプションフィールドが追加されました: Producer、CreationDate、ModDate (PDF 日付文字列 “D:YYYYMMDDHHmmSSOHH'mm'” 形式)、DocumentId、InstanceId (trailer /ID 配列用の 16 バイト文字列)。TPdf.SaveAsPdfA / SaveAsPdfAToStream は FPDF_GetMetaText と FPDF_GetFileIdentifier を介して欠落フィールドを自動的に埋めるため、既存の呼び出しコードは変更なしで動作し続けます
- TPdf.ValidatePdfA / TPdf.PdfAConformance は 3 つの追加問題を報告するようになりました: pvaiMissingTrailerId (trailer に /ID なし)、pvaiMissingXmpDates (xmp:CreateDate または xmp:ModifyDate 欠落)、pvaiMissingExtensionSchema (pdfaid extension schema 記述欠落)
- Title、Author、Subject、Keywords、Creator、Producer の非 ASCII 文字は XMP パケット内で UTF-8 としてエンコードされるようになりました (XMP Specification は UTF-8 を要求)。これにより、SaveAsPdfA を通して多言語メタデータが完全に保持されます
- TPdf.AboutInfo 文字列を更新し、現在の製品バージョンを報告するようになりました
Version 1.29.0
- 同梱の PDFium DLL(Win32 / Win64、標準ビルドおよび V8 ビルド)を 2026-05-22 の PDFium スナップショットに更新し、FPDFText_SetText / FPDFText_SetCharcodes のクラッシュパスに対する修正および PDFium プロジェクトからの各種内部強化を取り込んだ
- PDFium が新規追加した FPDF_SUBSET_NEW_FONTS 保存フラグを FPdfPageOps.pas で公開した。FPDF_SaveAsCopy の呼び出し元は新規追加されたテキストオブジェクトが参照する埋め込みフォントファイルに対して自動サブセット化を要求できる。既存の FPDF_INCREMENTAL, FPDF_NO_INCREMENTAL, FPDF_REMOVE_SECURITY 定数は PDFium のビットシフト形式で定義し直した(旧来の数値 3 はバイナリ互換性のため FPDF_REMOVE_SECURITY_DEPRECATED として残してある)
- FPdfView.pas に FPDF_FONT_BACKEND_TYPE 列挙体(FREETYPE / FONTATIONS)と FPDF_LIBRARY_CONFIG の m_FontLibraryType フィールドを追加した。Skia レンダラーで PDFium を初期化するアプリケーションは起動時にフォントバックエンドを選択できるようになる
- TFPDFPage_InsertObject のシグネチャを PDFium の C エクスポートに合わせて更新した。関数は void ではなく FPDF_BOOL を返すようになる(成功時 TRUE、page_object が NULL の場合や所有権の移譲に失敗した場合は FALSE)。Delphi / FPC は関数の戻り値の無視を許容するため、PDFium Delphi Component の既存呼び出し元は変更なしで引き続きコンパイル可能
- TPdf.AboutInfo 文字列を修正し、現在の製品バージョンを正しく返すようにした(v1.28.0 がドキュメントのみ更新だった経緯で v1.27.0 のまま取り残されていた)
Version 1.28.0
- API リファレンス全体のページ内ドキュメントを大幅に拡張した。すべてのプロパティ、メソッド、イベント、グローバル関数の各エントリに 3 段落の Description、Remarks リスト、複数行の Delphi Example、より充実した See Also ブロックを追加 — これまで内容の薄かった 200+ ページを対象とし、すべての TPdf カウンタ、メタデータゲッター、フォントおよび文字アクセサ、ページレベルプロパティ、インデックス付きレコード、ドキュメントレベルメソッド、TPdfView の状態 / 表示 / イベントの全 API 面を含む
- losLab のデザイン基準に合わせてヘルプのレイアウトを調整した。h1/h2 のサイズをそろえ、API ナビゲーショングリッドのスタイルを共通の StyleSheet に集約し、Navigation.html のページごとのインライン CSS オーバーライドを削除した
- ドキュメントには補助スクリプト (Docs\Build-Expand-Entries.ps1) が同梱され、単一のデータテーブルからエントリページの内容を再生成して反復可能なメンテナンスを実現する
Version 1.27.0
- PDF/A-1b 作成サポートを追加。TPdf.SaveAsPdfA は、ベース PDF にインクリメンタル更新を後処理として適用し、XMP メタデータストリーム、sRGB ICC OutputIntent、更新されたドキュメントカタログを注入することで、開いている任意のドキュメントを PDF/A-1b 準拠ファイルとして保存する — 追加の DLL API は不要。PDFium Delphi Component がサポートするすべてのプラットフォームで動作する
- メモリ内 PDF/A 出力用に TPdf.SaveAsPdfAToStream を追加した
- TPdf.ValidatePdfA を追加。開いている PDF の PDF/A 準拠性 (XMP pdfaid マーカー、埋め込み ICC プロファイル付き OutputIntent、暗号化) をチェックし、検出された準拠レベルと具体的に発見された問題セットを含む構造化された結果を返す
- TPdf.PdfAConformance プロパティを追加。ValidatePdfA を明示的に呼び出すことなく、現在開いているドキュメントの準拠レベル (pac1b、pac1a、pac2b、pac3b、pacNone、pacUnknown) を返す
- 新規エクスポート型: TPdfAConformance、TPdfAValidationResult、TPdfAValidationIssue、TPdfASaveOptions (新ユニット FPdfPdfa.pas)
- SaveAsPdfA は TPdfASaveOptions.IccProfileData によるカスタム ICC プロファイルをサポート。空のままにすると、組み込みの sRGB IEC61966-2.1 (HP/Microsoft、3144 bytes) プロファイルが自動的に使用される
- モノリシックな HTML リファレンスを再構築された Web ヘルプシステムに置き換えた。TPdf と TPdfView を網羅する 302 個の個別 API エントリページ (プロパティ、メソッド、イベント、グローバル関数ごとに 1 ページ) を提供し、各ページには完全な説明、パラメータテーブル、Delphi コード例、See Also リンクが含まれる
- Navigation.html を追加。6 つのセクション (TPdf プロパティ/メソッド/イベント、TPdfView プロパティ/メソッド/イベント、グローバル関数) に整理された包括的なワンページ API ナビゲーションインデックスで、高速スキャン用に 5 列のフレックスグリッドを採用している
- TPdf.html と TPdfView.html を、型リファレンスセクション (Types、Constants、Global Variables) を保持しつつ、全メンバーの個別エントリページにリンクするコンパクトなコンポーネント概要ページとして再構築した
- Search.js による全文検索を追加。インデックス済み全 312 ページにわたるインクリメンタルなクライアントサイドマッチングを実現する
- サイト全体のナビゲーションバーをすべて Navigation.html を指すように更新した
Version 1.26.0
- v1.14.0 Delphi BatchExport デモの LCL 移植版である Demo/Lazarus/BatchExport を追加した。機能セットは同一: 複数ファイル PDF -> JPG エクスポート、ファイルごとの全体進捗、ページごとの現在進捗、DPI / 品質 / パスワード入力、IPdfCancellationToken に裏付けされた協調キャンセル可能なバッチ。抽出が正常に完了するとプラットフォームのファイルマネージャで出力フォルダが開かれる
Version 1.25.0
- TPdf に Form XObject によるページ再利用機能を追加し、透かし、テンプレートオーバーレイ、“1 ページを多数のページに押印” ワークフローを実現可能にした。CreateXObjectFromPage は別ドキュメントの任意ページから再利用可能ハンドルを生成し、InsertFormObjectFromXObject はラップされたページの 1 つのコピーを現在のページに挿入する。挿入された FPDF_PAGEOBJECT を返すため、呼び出し側は FPDFPageObj_SetMatrix と v1.9.0 の TPdfMatrix ヘルパーで位置決め / スケーリング / 回転が可能
- 新しい TPdfXObject Pascal クラスは PDFium の FPDF_XOBJECT ハンドルをラップし、デストラクタで自動的にクローズするため、手動の FPDF_CloseXObject 処理が不要となる
- Delphi および Lazarus 回帰テストスイートを各 147 ケースに、C++Builder スイートを 123 ケースに拡張し、ハンドル作成とページオブジェクト挿入の契約をカバーした
Version 1.24.0
- TPdf.RenderPageProgressive を追加 — PDFium のプログレッシブレンダリングループを駆動し、反復間で v1.7.0 の IPdfCancellationToken をポーリングする RenderPage のキャンセル可能なバリアント。高 DPI の長時間レンダリングが、完了まで呼び出し側をブロックする代わりにページ途中で中断できる
- TPdfProgressiveStatus 値を返す: prsDone、prsCancelled、prsFailed。AToken = nil を渡すと一時停止せずに完了までレンダリングする (prsCancelled の可能性はない)
- v1.21.0 で導入された同じ zero-copy ファストパスを使用 — PDFium が宛先 TBitmap の DIB に直接レンダリングする。DIB をラップできない場合には同じレガシーフォールバックが適用される
- Delphi および Lazarus 回帰テストスイートを各 145 ケースに、C++Builder スイートを 121 ケースに拡張し、nil トークン (完了する)、事前キャンセル済みトークン (prsCancelled)、ライブトークンでの同期 RenderPage とのピクセル等価性をカバーした
Version 1.23.0
- PDFium のフォームウィジェットテキスト選択と Undo/Redo をアプリケーションに公開する 6 つの新しい TPdfView メソッドを追加した。GetSelectedFormText はフォーカスされたフォームウィジェット内の現在選択されているテキストを返す。SelectAllFormText はすべての文字を選択する。FormUndo / FormRedo / FormCanUndo / FormCanRedo はフォーカスされたウィジェットの編集履歴を駆動する。基礎となる PDFium API は既にバインドされていたが、高レベルのエントリポイントが存在しなかった。6 つともビューが非アクティブの場合や、ドキュメントに AcroForm ウィジェットがフォーカスされていない場合は安全にショートサーキットする
- Delphi および Lazarus 回帰テストスイートを各 142 ケースに、C++Builder スイートを 119 ケースに拡張し、全新規メソッドについて no-form-no-focus 契約をカバーした
Version 1.22.0
- TPdf にページ構成ラッパーを追加した。ImportPagesByIndex はゼロベースのインデックス配列を受け取り、ソースドキュメントから特定のページをコピーする。ImportNPagesToOne は本ドキュメントのページを N-up 合成した新規 TPdf を返す。MovePages はページを所定の位置で並べ替える。基礎となる PDFium API は既にバインドされていたが、Pascal フレンドリーなエントリポイントが存在しなかった
- ImportPagesByIndex は空配列を受け取るとすべてのソースページをインポートする (C ABI レベルで nil を渡すことに等価)
- Delphi および Lazarus 回帰テストスイートを各 136 ケースに、C++Builder スイートを 115 ケースに拡張し、サブセットインポート、全文書インポート、ページ並べ替え、N-up 合成をカバーした
Version 1.21.0
- TPdf.RenderPage / TPdf.RenderTile (および対応する TPdfView ヘルパー) を zero-copy 出力パスに切り替えてレンダリング性能を改善した。PDFium は内部バッファに書き込んでから 1 行ずつコピーする代わりに、宛先 TBitmap の DIB バッファに直接書き込むようになり、レンダリングごとに幅 x 高さ x 4 バイトのメモリコピーが 1 回節約される。高 DPI (サムネイルパネル、印刷品質エクスポート、バッチエクスポート) で特に効果が顕著
- 従来のスキャンラインごとのパスは、宛先 DIB をラップできない稀なケース (極端なディメンション、特殊な stride、OOM) に備えた安全フォールバックとして維持される。動作は両パスでバイト単位で同一であり、フォールバック時は単に遅いだけ
- Delphi および Lazarus 回帰テストスイートを各 132 ケースに、C++Builder スイートを 112 ケースに拡張し、呼び出し側ビットマップの pf32bit アップグレード、ディメンションのラウンドトリップ、大きなビットマップの stride サニティテストをカバーした
Version 1.20.0
- TPdfView に検索結果ハイライト機能を追加。HighlightSearchText(Text, MatchCase, MatchWholeWord) は現在のビューページをスキャンして見つかったマッチ数を返し、再描画のたびに各マッチの上に HighlightColor マスクを描画する。ClearHighlight はハイライトを削除する。マッチはページ固有のため、ビューを別のページに切り替えると自動的にハイライトがクリアされる
- HighlightColor のデフォルトは clYellow で、published されているためアプリケーションは UI パレットに合わせてハイライトをテーマ化できる
- Delphi および Lazarus 回帰テストスイートを各 129 ケースに、C++Builder スイートを 109 ケースに拡張し、デフォルト色、色のラウンドトリップ、sample.pdf 文字列に対する “実フィクスチャの単語マッチ”、“存在しない単語はゼロマッチを返す” 契約をカバーした
Version 1.19.0
- TPdfView に 4 つの値を持つ FitMode プロパティを追加: pfmNone (手動ズーム)、pfmActualSize (100%)、pfmFitPage (ページ全体をビューポートに収める)、pfmFitWidth (ページ幅をビューポート幅に一致させる)。アクティブなフィットモードは Resize 時と現在のページ変更時に自動的に再適用されるため、ページサイズが混在する長いドキュメントでも完璧にフレーミングされた状態を保つ
- Zoom を直接設定するとアクティブなフィットモードがキャンセルされ (FitMode は pfmNone に戻る)、ズーム値を入力すると Fit Page / Fit Width から抜ける標準 PDF ビューアの慣習に従う
- デフォルトは pfmNone で、既存のアプリケーションは明示的なズーム動作を維持する
- Delphi および Lazarus 回帰テストスイートを各 124 ケースに、C++Builder スイートを 106 ケースに拡張し、デフォルト値、モードのラウンドトリップ、ロード済みドキュメントでフィットページが実際のズームを生成すること、手動ズームがフィットモードをキャンセルすることをカバーした
Version 1.18.0
- TPdfView に PageColor プロパティを追加し、レンダリングされる PDF ページの背景を周囲のコントロールの Color から切り離した。デフォルトは clWhite のため、ホストアプリケーションのテーマに関係なく PDF ページがペーパーホワイトでレンダリングされる。ダークモードのビューアは、スクロール領域を暗く保ちつつ、実際の PDF ページを白 (またはアプリケーションが選択した任意の色) のままにできる
- 動作変更: 以前 PDF ページの色を変えるために TPdfView.Color を設定していたアプリケーションは、代わりに PageColor を設定する必要がある。一般的なケース (テーマ化されたコントロール背景上の白いページ) ではコード変更なしでデフォルトの体験が改善される
- Delphi および Lazarus 回帰テストスイートを各 120 ケースに、C++Builder スイートを 103 ケースに拡張し、デフォルト値と色のラウンドトリップをカバーした
Version 1.17.0
- TPdfView にユーザー入力ロックダウンのトグルを追加し、kiosk、プレビューペイン、読み取り専用コンテキストにビューアを組み込むアプリケーションが、サブクラス化することなくナビゲーションジェスチャーを無効化できるようになった。AllowUserPageChange は新しい PgUp / PgDn / Ctrl+Home / Ctrl+End キーボードショートカットを制御する。ChangePageOnMouseScrolling は新しいホイールアップ / ホイールダウンによるページジャンプを制御する。AllowUserTextSelection は将来のマウスドラッグによるテキスト選択パスのために予約されている。3 つともデフォルトは True で、既存のアプリケーションは動作変更なしにアップグレードできる
- マウスホイールによるページナビゲーションは Ctrl+ホイールをスキップするため、アプリケーションは Ctrl+ホイールをズーム用に予約しておける
- Delphi および Lazarus 回帰テストスイートを各 118 ケースに、C++Builder スイートを 101 ケースに拡張し、デフォルト値とトグルのラウンドトリップをカバーした
Version 1.16.2
- ビューアのページが関連付けられた TPdf のページと異なる場合の注釈リンククリックに対する TPdfView 回帰テストカバレッジを拡張し、Delphi、Lazarus、C++Builder にわたって実際のヘッドレスマウスクリックパスを使用するようにした
- Delphi および Lazarus スイートは現在各 114 ケースを、C++Builder は現在 99 ケースを実行する
Version 1.16.1
- TPdfView のリンククリック処理を修正し、関連付けられた TPdf コンポーネントが別のページに留まっている場合でも、自動的な注釈および Web リンクアクションがビューアに現在表示されているページを使用するようにした
- リンクされた TPdf コンポーネントが破棄された際の TPdfThumbnailView の Pdf 参照の dangling を防ぐようにハードニングした
- サムネイル参照のライフタイム回帰テストカバレッジを追加。Delphi および Lazarus スイートは現在各 113 ケースを、C++Builder は現在 98 ケースを実行する
- README、テストドキュメント、HTML Help の検索/インデックスコンテンツ、生成された C++ パッケージの出力を v1.7.0 から v1.16.0 の統合更新に同期した
Version 1.16.0
- 新しい Delphi PrintDialog デモ (Demo/Delphi/PrintDialog) を追加した。N-up 印刷 (1 / 2 / 4 / 9 ページ/シート) に焦点を当て、奇数 / 偶数ページのフィルタリング、グレースケールレンダリング、オプションの 1 ピクセルセル罫線を提供する。既にプレビュー、最近使ったファイル、ズーム、スケーリングをカバーしている既存の PrintPDF デモへの意図的な小規模コンパニオン
Version 1.15.0
- 新しい TPdfThumbnailView コンポーネント (FPdfThumbnail ユニット) を追加した。1 行につき 1 ページサムネイルをスクロール可能なサイドパネルに描画し、ホバーと選択のハイライト、クリックジャンプナビゲーションをサポートする。TPdfView の横に配置し、エンドユーザーが長いドキュメントをページ単位でブラウズできるよう設計されている
- このコンポーネントは TPdf および TPdfView と並んで losLab パレットタブに登録される。主要プロパティ: Pdf、CurrentPageIndex、ThumbnailWidth、ThumbnailHeight、TextColor、HoverColor、SelectionColor、BorderColor、および OnPageClick イベント
- Delphi および Lazarus 回帰テストスイートを各 112 ケースに、C++Builder スイートを 97 ケースに拡張し、デフォルト値、サムネイルサイズのラウンドトリップ、極端な値のクランプ、色のラウンドトリップ、イベントハンドラの割り当てをカバーした
Version 1.14.0
- 新しい Delphi BatchExport デモ (Demo/Delphi/BatchExport) を追加した。ストリーミングロードに TPdf.LoadCustomDocument を、協調キャンセルに IPdfCancellationToken を、ファイル毎の全体進捗とページ毎の進捗バーを使用して、多数の PDF ファイルを 1 回のパスで JPG に変換する方法を示す。デモはファイル毎に 1 つの TPdf インスタンスを使用し (PDFium 自体はスレッドセーフではない)、抽出が正常に完了するとエクスプローラで出力フォルダを開く
Version 1.13.0
- 3 つの新しいプロパティを通して TPdfView に非同期レンダリング用 UI オーバーレイを追加: AsyncRendering、LoadingText、LoadingColor。AsyncRendering が True のとき、単一ページペイントパスは描画されたページの上に小さな “Loading...” インジケータを描画し、長時間レンダリングに独自のワーカーを使用するアプリケーションが一貫した視覚的アフォーダンスを共有できるようにする
- デフォルトは既存の動作を維持: AsyncRendering は False のため、オプトインしないアプリケーションには視覚的な変化はない
- ドキュメントでは PDFium 自体がスレッドセーフではないことを明確化 — レンダリングをワーカーに実際にオフロードするには、呼び出し側がワーカーごとに 1 つの TPdf を保持する必要がある。今後登場するバッチエクスポートデモがそのパターンを示す
- Delphi および Lazarus 回帰テストスイートを各 106 ケースに、C++Builder スイートを 93 ケースに拡張し、デフォルト値と 3 プロパティのラウンドトリップをカバーした
Version 1.12.0
- TPdfView にクリック駆動のリンク処理を追加した。新しい LinkOptions プロパティは 4 つの PDF リンクアクションタイプに対する自動動作を制御する: goto (ページジャンプ)、URI (ShellExecute)、launch (ShellExecute)、embedded GotoR (予約)。デフォルトでは loAutoGoto と loAutoOpenURI を有効化。loAutoLaunch と loAutoEmbeddedGoto はオフのままなので、誤クリックで任意のプログラムが実行されることはない
- OnAnnotationLinkClick と OnWebLinkClick イベントを追加した。これらは自動アクションの前に発火し、アプリケーションがリンクを検査したり、Handled マークを付けたり、別の処理 (例: セキュリティ確認プロンプト) にリダイレクトしたりできる
- リンククリックの検出は、ドラッグではなくクリックジェスチャーの場合のみ実行され、新しい MouseDown アンカーを使用するため、パンジェスチャーは引き続き既存のスクロールパスを変更なしに通過する
- Delphi および Lazarus 回帰テストスイートを各 102 ケースに、C++Builder スイートを 91 ケースに拡張し、デフォルト LinkOptions、セットのラウンドトリップ、イベントハンドラの割り当てをカバーした
Version 1.11.0
- TPdfView に視覚的な仕上げを追加: PageShadowSize、PageShadowColor、PageBorderColor プロパティがページ矩形の下にオプションのドロップシャドウを、そして周囲に 1 ピクセルの境界線を描画する。デフォルトは以前のフラットな見た目を維持する (PageShadowSize = 0; 境界線はデフォルトの clBlack で描画されるが、呼び出し側が色を変更するまでデフォルトの白背景に溶け込む)
- 将来のインクリメンタルスクロールアニメーション用のオプトインフラグとして SmoothScroll プロパティを追加。現時点でプロパティはラウンドトリップし、アプリケーションが設定を永続化できるよう配線されている一方、レンダリング側は引き続き既存の即時スクロール動作を使用する
- Delphi および Lazarus 回帰テストスイートを各 98 ケースに、C++Builder スイートを 89 ケースに拡張し、デフォルト値、プロパティのラウンドトリップ、負のシャドウサイズのクランプをカバーした
Version 1.10.0
- 新しい TPdf.AddImage と TPdfView.AddImage のオーバーロードを介して直接画像挿入を追加した。これらはファイルパスまたは TBitmap のいずれかを受け取り、既存の TPicture ベースの AddPicture に加わる。AddImage(FileName) は VCL または LCL グラフィックスユニットに登録されている任意のフォーマット (BMP、PngImage ユニット経由の PNG、JPG など) を認識し、AddPicture と同じパイプラインを通過するため動作は同一
- AddImage(TBitmap) は TPicture の中間ステップをスキップするため、レンダリングやバッチ生成作業で既に TBitmap を保持している呼び出し側がシンプルになる
- Delphi および Lazarus 回帰テストスイートを各 92 ケースに、C++Builder スイートを 84 ケースに拡張し、ビットマップ挿入、ページオブジェクト境界、nil ビットマップ拒否、BMP ファイル読み込みをカバーした
Version 1.9.0
- FPdfMatrix ユニットの新しい TPdfMatrix クラスを介して高レベルな変換マトリクスサポートを追加した。TPdfMatrix は PDFium の FS_MATRIX を Translate、Scale、Rotate、HorizontalFlip、VerticalFlip、CentralFlip、Skew、Multiply 用のオブジェクト指向 API でラップし、FPDFPageObj_SetMatrix 等の PDFium API に渡す前に変換を合成するのに適している
- TPdfMatrix.Multiply は新しい行値を計算する前に 6 つのマトリクス要素を正しくスナップショットし、代替の Pascal 実装が同じ呼び出し中に以前の要素を上書きしてしまい、純粋な平行移動を超える合成で誤った結果を生成する潜在的な問題を修正する
- Delphi および Lazarus 回帰テストスイートを各 88 ケースに、C++Builder スイートを 81 ケースに拡張し、恒等、リセット、平行移動 / スケール / 反転、ポスト乗算的合成順序、および Multiply 回帰ケースをカバーした
Version 1.8.0
- 新しい TPdf.LoadCustomDocument(AStream, AOwnsStream) メソッドと TPdfStreamAdapter ヘルパークラスを介してオンデマンドストリームロードを追加。PDFium の FPDF_LoadCustomDocument が裏付けとなる。PDFium は必要時のみ提供された TStream からブロックを読み取るようになり、非常に大きなまたはリモートの PDF は事前のメモリ内コピーを必要としない
- オプションのストリーム所有権を追加: AOwnsStream = True を渡すと TStream のライフタイムが TPdf に渡され、UnloadDocument 実行時に解放される
- Delphi および Lazarus 回帰テストスイートを各 79 ケースに、C++Builder スイートを 75 ケースに拡張し、TFileStream 経由のストリーミングロード、所有ストリームのクリーンアップ、外部所有ストリームが unload を生き残る契約をカバーした
Version 1.7.0
- 新しい FPdfAsync ユニットに協調的な非同期キャンセルプリミティブを追加し、IPdfCancellationToken / IPdfCancellationTokenSource と再利用可能な PdfNoCancellationToken シングルトンを公開した。これにより、長時間実行されるレンダリングおよびエクスポートのワークフローが UI からのクリーンなキャンセルセマンティクスをサポートできる
- 軽量な TPdfFuture<T> ヘルパーを追加。ワーカーをバックグラウンドスレッドで実行し、TPdfFutureResult<T> エンベロープをメインスレッドにポストバックして、成功、キャンセル、失敗の各ケースを区別する
- Delphi および Lazarus 回帰テストスイートを各 76 ケースに、C++Builder スイートを 73 ケースに拡張し、キャンセル状態、冪等なキャンセル、コールバックのファンアウト、キャンセル後の登録を共通でカバーした
Version 1.6.10
- 高レベルな TPdf.PrintPageRanges アクセスを PDF ビューア設定の印刷ページ範囲に追加し、アプリケーションコード用に 1 ベースのページ範囲を返す
- TPdf.SetFormFieldFlags / SetFormFieldFlagsAt と対応する TPdfView ヘルパーを追加し、パスワードおよびマルチセレクトフラグのカバレッジを含めて、アプリケーションが公開 API を通じて AcroForm フィールドフラグを更新できるようにした
- Windows サイズの FPDF_DWORD、FPDF_FILEACCESS コールバック、V8 embedder スロットフィールドの PDFium バインディング ABI カバレッジをハードニングした
Version 1.6.9
- 同梱の標準および V8 PDFium DLL で新たにエクスポートされた FPDF_RenderPageSkia と FPDF_FFLDrawSkia API 用の低レベル Skia レンダリングバインディングを追加した
- 公開バインディングカバレッジチェックを拡張し、標準と V8 の DLL ロード時に、既存の V8/XFA 機能プローブに加えて Skia レンダリングエントリポイントも検証するようにした
Version 1.6.8
- 新たにエクスポートされた FPDFText_SetPositions API を通して、既存テキストオブジェクト上の文字毎の位置を設定する TPdf.SetTextPositions と TPdfSingleArray を追加した
- 現在同梱されている PDFium DLL について FPDFText_SetPositions を必須バインディングに昇格させる一方、DLL がまだエクスポートしていないため Skia レンダリングエントリポイントは引き続き利用不可であることを確認した
- Delphi、C++Builder、Lazarus 回帰テストスイートを各 65 ケースに拡張し、テスト位置のカバレッジを追加した
Version 1.6.7
- ドキュメント JavaScript の name-tree アクションへの高レベル TPdf アクセスを追加し、JavaScriptAction および JavaScriptActions を通してアクション名とスクリプトを返す
- TPdf.FileIdentifier を追加し、永続的および可変的なトレーラ ID を、PDFium のターミネータバイトなしの二進 TBytes として読み取れるようにした
- 現在のページ上の MediaBox、CropBox、BleedBox、TrimBox、ArtBox 用に TPdf.PageBox、GetPageBox、SetPageBox を追加した
- 現在同梱されている PDFium DLL は、エクスポートが存在しないため Skia レンダリングエントリポイントのみがランタイムで利用不可であることを確認した
- Delphi、C++Builder、Lazarus 回帰テストスイートを各 64 ケースに拡張し、ドキュメント JavaScript、トレーラ ID、ページボックスのカバレッジを追加した
Version 1.6.6
- 同梱の V8 対応 PDFium DLL のランタイムサポートを追加した。ロード前に EnableV8Engine を設定すると、DLLs\Win32 または DLLs\Win64 ツリーから pdfium.v8.dll を選択し、ロードされた DLL が提供する場合に V8/XFA 専用バインディングを公開する
- V8FeaturesAvailable、XfaBStrHelpersAvailable、GetRecommendedV8Flags、および FPDF_BStr_*、FPDF_GetRecommendedV8Flags、FPDF_GetArrayBufferAllocatorSharedInstance 用の低レベルオプションバインディングを追加した
- FPDFText_SetPositions をオプションに変更し、その実験的なテキスト位置設定 API をエクスポートしない PDFium DLL でも PDFium Delphi Component がロードを継続できるようにした
- Delphi、C++Builder、Lazarus 回帰テストスイートを各 61 ケースに拡張し、標準 DLL および V8 DLL の機能カバレッジを追加した