変更履歴
リリース履歴
PDFlibPas ライブラリのバージョン履歴。エントリは新しい順に並んでおり、各リリースはプロジェクトのリリースポリシーに従ってセマンティックバージョニングに準拠します。
最新リリース
- 最新バージョン: v3.75.6; リリース日: 2026-06-23
Version 3.333.0
Added
- 差分リビジョンの検査。署名はそれが書き込まれたリビジョンのバイトをカバーし、その後に追加されたすべては独立した更新であり、その内容が署名が現在のドキュメントに対してまだ有効かどうかを決定します。
GetDocumentRevisionCount、GetDocumentRevisionStartおよびGetDocumentRevisionEndがこれらのリビジョンを並べ、GetSignatureRevisionIndexが署名がどのリビジョンで終わるかを示します GetDocumentRevisionKindは、更新が何を行ったかを、それが触れたオブジェクトのうち最も影響の大きいものとして報告します。すなわち、帳簿付け、検証材料、ドキュメントタイムスタンプ、署名、フォームフィールド、注釈、あるいはドキュメント内容です。したがって、長期検証のための検証材料の追加は、もはやドキュメントの編集とは見なされませんGetDocumentRevisionChangesは、更新が追加、変更、削除したすべてのオブジェクトを、それぞれが何であるか、また変更された辞書については実際にどのキーが異なるかとともに一覧表示しますGetDocumentRevisionsCompleteは、履歴全体が復元可能かどうかを報告します。壊れている、循環している、あるいはリーダーが追跡する長さを超えるチェーンは、最も古い更新を見えないままにし、その場合カウントは答えではなく下限となります- 以前のバージョンが読み取れない、あるいはストリーム本体が比較されなかったオブジェクトは、無害ではなく未確定として報告されます。辞書を変更せずにページを書き換える更新は、再パッケージと見誤られることはありません
Version 3.332.0
Added
ApplyPAdESLongTermValidationは、署名済みPDFを1回の呼び出しでPAdES-B-LTに昇格させます。署名自身から署名者証明書パスを構築し、証明書が名指すアドレスを通じて各リンクのOCSPおよびCRL材料を収集し、署名のためのVRIエントリとともに証明書と失効データをドキュメントセキュリティストアに、単一の差分更新として書き込みます。ApplyPAdESLongTermValidationToStreamは結果をファイルではなくストリームに書き込みます- この振る舞いは
PADES_LTV_*オプションマスクで設定できます。VRIエントリを書き込むか、OCSPレスポンダに問い合わせるか、CRLにフォールバックするか、パスを完成させるために発行者アドレスを追うか、そして自己発行ルートの失効確認をスキップするかどうかです - 空のフィールド名はすべての署名を1つのリビジョンに処理し、名前付きフィールドはその1つだけを処理します
GetPAdESLTVCertificateCount、GetPAdESLTVCRLCount、GetPAdESLTVOCSPCountおよびGetPAdESLTVErrorは、最後の呼び出しが何を収集し、なぜ途中で止まったかを報告するため、到達不能なレスポンダに対する部分的な結果も黙殺されずに可視化されます- 既にステージ済みのものと同一の材料は1回だけ書き込まれ、それを必要とするすべての署名から参照されます。また、読み取り可能な証明書を保持しない署名は、昇格の成功として装われるのではなく報告されます
Version 3.331.0
Added
- 署名は自身の認証パスを保持するため、長期検証プロファイルが必要とする材料は署名付きファイルだけから読み取れます。
GetSignatureSignerCertificateDER、GetSignatureEmbeddedCertificateCountおよびGetSignatureEmbeddedCertificateDERは署名が埋め込む証明書を返し、GetSignatureCertificateChainLengthとGetSignatureCertificateChainDERはそれらを署名者から外側へ向かうパスとして並べます GetSignatureContentsHashHexは、AddPAdESDSSVRIエントリのアドレス指定に使われるキーを、署名自身から計算して返します- 署名が発行者とシリアル番号で署名者証明書を識別しても、サブジェクトキー識別子で識別しても照合され、パスは署名が実際に保持する最後の発行者で停止し、完全であるかのように装うことはありません
Fixed
- DERリーダーは、最大値に近い値が境界チェックを折り返すままにするのではなく、データより大きい宣言された要素長を拒否します。また、証明書拡張の走査は、切り詰められた、あるいは長すぎる証明書の終端を越えて読み取ることはもうありません。どちらも細工されたドキュメントから到達可能であるため、上記のアクセサは信頼できない入力に対しても安全です
- 署名アクセサは共有ハンドルでドキュメントを読み取るため、検証子やビューアが既にファイルを開いている間でも応答し、署名が存在しないかのように失敗することはありません
Version 3.330.0
Added
- OCSP status requests.
BuildOCSPRequestencodes an RFC 6960 request for a certificate and its issuer,FetchOCSPResponseposts it to the responder and returns the reply, andAddPAdESDSSOCSPFromCertificatesdoes both and files the result in the document security store - The responder address is optional: when it is omitted, the one the certificate itself names is used, so a caller that has the certificate chain needs no further configuration
- A certificate pair that does not actually belong together is refused before anything is sent, instead of producing the "unknown" answer such a request earns from the responder and which reads like a revocation problem
- Only a successful response is stored; a responder that answered
tryLaterorunauthorizedis reported throughGetTimeStampErrorrather than filed as if it were a status answer
Version 3.329.0
Fixed
- Reusing one result array across successive enumeration calls no longer leaks the strings held in the array slots that a later call does not fill. This affected the documented "call once for the count, resize, call again" pattern whenever a later call returned fewer items than the array could hold, and the stranded text accumulated for the lifetime of the process
- Affected entry points include
EnumPageContentStates,EnumPageContentStatesEx,EnumAttachments,EnumDocumentFonts,EnumPageElements,EnumNamedDestinations,EnumSignatures,EnumFormFields,GetFormValues,GetTextInAreaEx, and the text-search, form-field-action and certificate enumeration calls
Changed
- The result-array parameter of those calls is now passed as
varrather thanout. Existing Delphi and C++Builder code compiles and links unchanged; the only visible difference is that array slots past the returned count keep whatever they held before instead of being silently blanked
Version 3.328.0
Added
- Certificates now tell the library where their status can be checked:
GetCertificateOCSPURLs,GetCertificateIssuerURLsandGetCertificateCRLURLsread the responder, issuing-certificate and CRL addresses out of a certificate, so assembling long-term validation material no longer requires knowing where a given authority publishes FetchRevocationMaterialdownloads material from those addresses, andAddPAdESDSSCRLFromURLandAddPAdESDSSCertificateFromURLdownload and file it in the document security store in one step- Addresses that name no fetchable resource, such as a directory name or a mail address, are skipped rather than reported as something that can be downloaded
Version 3.327.0
Added
- A built-in RFC 3161 time-stamp client.
SetTimeStampServerandSetTimeStampOptionsconfigure the authority, hash algorithm, requested policy, nonce use and timeout;FetchTimeStampTokenreturns a TimeStampToken for any digest ApplyPAdESSignatureTimeStampcompletes a PAdES-B-T signature in one call: it hashes the signature value, obtains the token from the configured authority and attaches it as the signature time-stamp attribute, replacing the previous three-step exchange the caller had to wire up itself- When a nonce is used the token is checked to carry the same value back, so a replayed or substituted response is rejected instead of being embedded in the document
GetTimeStampStatusandGetTimeStampErrorreport the authority's own status and failure text, so a refused request explains itself
Version 3.326.0
Added
- The PDFium renderer now writes the same image formats the GDI+ and Cairo renderers write.
RenderPageToFile,RenderPageToStreamandRenderPagesToFilesaccept BMP (option 0), JPEG (1), PNG (5), GIF (6), TIFF (7) and G4 TIFF (10) afterSelectRenderer(3), instead of accepting BMP alone - The JPEG quality set through
SetJPEGQualityand the active TIFF compression settings now apply to PDFium output as well, so switching renderers no longer changes the encoding of the file that is produced
Fixed
- Requesting PNG or any other non-BMP format from the PDFium renderer used to return 0 and leave an empty file behind. Applications that offered a renderer choice silently produced unreadable output whenever PDFium was the selected engine
- Asking the PDFium renderer for a metafile format it cannot produce (WMF, EMF, EPS, EMF+, HTML5) now reports which formats are available through
LastRenderErrorinstead of naming BMP as the only option
Version 3.324.0
Changed
- The PDFium renderer now feeds the document to the engine through a streaming data source instead of one resident buffer. Rendering and printing previously serialised the document and then copied it again into a string, so every page cost twice the document size in memory; the copy is gone and PDFium reads only the blocks it needs
- Rendering a page range to files parses the document once for the whole batch instead of once per page, so a long range no longer re-reads the entire file for every image it writes
- Older PDFium builds that do not export the streaming entry point keep working unchanged through the in-memory path
Fixed
- The renderer smoke test located the optional PDFium and Cairo libraries one directory too high and silently skipped both engines; it now finds them and exercises the real rendering paths
Version 3.323.0
Added
CreateValidationReportとSaveValidationReportは、構造化された PDF/A および PDF/UA-1 検証レポートを XML または JSON で出力します。各発見事項は、ルール id、それを所管する標準、短いルール名、それが適用する ISO 条項、重要度、影響を受けるオブジェクト数を保持し、レポートは標準ごとの合格/不合格統計と文書レベルの合格/不合格統計で締めくくられます- 要求されなかった標準は、暗黙の合格ではなく
not-checkedとして報告されるため、部分実行を正常完了と誤認することはありません - ビルドパイプラインは、文中の部分文字列照合の代わりにルール id や ISO 条項でゲートできるようになりました。プレフライトレポート群はまず人間向けレポートを生成してからそのテキストを JSON、HTML、CSV に変換しますが、検証レポートは生のチェック出力から組み立てられ、機械可読なフィールドがそのまま保持されます
Version 3.322.0
Added
- リファレンスが、
TPDFlibサーフェス全体で使われている、これまで専用ページがなかった 4 つの外部宣言された公開型を文書化するようになりました:TPDFlibProgressEvent、TPDFlibLogger、TPDFlibCertificateInfo、TPDFlibWatermarkBaseで、公開イベント、ロガー、列挙結果、透かし型の網羅が完了します
Version 3.321.0
Added
CheckDocumentPolicyは、Fonts.NotEmbedded = 0、Security.Encrypted = no、Document.Pages <= 500のような宣言型の社内ルールを文書に対して評価し、各ルールを実際の値とともに合格または不合格として報告します。これにより、出版社、アーカイブ、印刷業者向けの取り込みゲートは、手書きの検査コードではなく設定で表現できるようになります
Version 3.320.1
Fixed
- PDF/A モードでフォントを先に読み込まずにテキストを描画しても、もはや fault しません。PDF/A はすべてのフォントプログラムの埋め込みを要求するため、組み込みフォントへの暗黙のショートカットは拒否され、フォントが選択されないまま残り、
DrawTextや他のテキスト呼び出しは描画せずにクラッシュしていました - 暗黙のフォントパスは、PDF/A モードがアクティブな間に実際に埋め込み可能なフェイスを解決するようになり、明示的な
AddTrueTypeFont呼び出しなしで描画されたテキストは埋め込まれ、適合状態を維持します。PDF/A 下での直接のAddStandardFont呼び出しは引き続き拒否されます - 埋め込み可能なフェイスを解決できないホストでは、描画は fault する代わりに組み込みメトリクスにフォールバックし、
LastErrorCode605 を通じて適合性の不足を報告します。これにより、適合文書として公開される前にファイルを捕捉できます
Version 3.320.0
Added
GetDocumentFeatureReportは 1 回の呼び出しで構造化された機能レポートを返します — 文書メタデータ、ページとオブジェクト数、暗号化状態、フォントと画像のインベントリ、タグ付けとアウトライン、フォームフィールド、署名、添付ファイル、カテゴリ別のバイト内訳 — で、カタログ化や取り込みパイプラインが以前は組み立てる必要があった 1 ダースもの個別クエリを置き換えます
Version 3.319.0
Added
SetCollectionView、AddCollectionField、SetCollectionSort、SetCollectionItemValueは、既存の添付ファイルの上に PDF ポートフォリオを構築します。これにより、埋め込みファイルのセットは、単なる添付リストではなく、独自の列、ソート順、ファイルごとの値を持つ閲覧可能なパッケージとして提示されますGetCollectionViewとGetCollectionFieldCountは、読み込まれたポートフォリオの表示モードと宣言された列数を報告します
Version 3.318.1
Fixed
- テキスト抽出オプション 12(回転テキストを無視)は、回転方向にかかわらず回転されたランを破棄するようになりました。時計回りに四半回転と反時計回りに四半回転は以前は異なる扱いを受けていたため、横向きの余白注記が一方の方向では破棄され、もう一方では返されていました
- 同じオプションは、合成イタリックのように単に傾斜しただけのテキストを保持し、許容範囲はテキストサイズとページ変換に合わせてスケールするようになったため、大きな傾斜見出しが回転テキストであるかのように破棄されることはなくなりました
Version 3.318.0
Added
DecodeAllStreamsは文書の圧縮ストリームをその場で展開します。これにより、保存するとコンテンツストリーム、メタデータ、構造を diff ツール、フォレンジックレビュー、サポートワークフローが直接読めるコピーが生成されます。画像、予測ストリーム、クロスリファレンスストリームはエンコーディングを保持し、オブジェクトストリームは最初に実体化されるため、何も失われません
Version 3.317.0
Added
SetTrappedとGetTrappedは、PDF/X が要求する文書のトラッピング状態を宣言および読み取り、仕様が定めるテキスト文字列ではなく/Trapped名として書き込まれますSetOutputIntentSubtypeとGetOutputIntentSubtypeは出力インテントを再タグ付けします。これにより、読み込まれたカラープロファイルは、PDF/A モードが作成するGTS_PDFA1アーカイブ条件の代わりにGTS_PDFX印刷条件を記述できるようになります
Version 3.316.0
Added
SetEncryptEmbeddedFilesOnlyとGetEncryptEmbeddedFilesOnlyは、AES 暗号化を埋め込みファイルに限定します。文書はパスワードプロンプトなしで任意のリーダーで開いてレンダリングされる一方、添付ファイルは暗号化されたまま保たれます。これは、表紙は公開でもペイロードは非公開の、請求書、医療記録、事例ファイル向けの標準的な構成です
Version 3.315.0
Added
- テキスト抽出オプション 18 は、90、180、270 度で描画されたランを水平な読み取り枠に回転させ、各四半回転を別々にグループ化します。これにより、回転された余白注記、テーブルヘッダー、チャートの軸ラベルが、直立テキストと交錯したり破棄されたりする代わりに、読める行として抽出されます
Fixed
DASetTextExtractionOptionsは、オプション 16(ハイフン除去)とオプション 17(文字間隔による単語分割)を拒否する代わりに受け入れるようになり、直接アクセス抽出パスはオプション 15、16、17 を抽出器に転送するようになりました。これにより、下線ルール除去、ハイフン除去、文字間隔分割が、読み込んだ文書と同じようにファイルハンドルにも適用されます
Version 3.314.0
Added
GetFontHasToUnicodeは、選択されたフォントが Unicode マッピングを持つかどうかを報告し、フォントインベントリには対応するフォントごとのHasToUnicodeフィールドとNoToUnicodeCountサマリーが追加されます。これにより、処理前に文書を抽出安全かつ PDF/A-*u または PDF/UA 変換可能なフォントについて確認できます
Version 3.313.0
Added
SetPDFAModeは PDF/A-2u(ISO 19005-2 Level U)用のモード 8 を追加しました。これは Unicode テキストマッピングを宣言しつつ埋め込みファイルを許可しない適合レベルで、既存の 2b および 2a モードとともに PDF/A-2 ファミリーを完成させます
Version 3.312.0
Added
GetObjectByPathとGetObjectByPathCountは、Root/Pages/Kids[0]/MediaBox[2]やpages[0]/Typeのようなパス式を通じてオブジェクトツリーの任意のノードを読み取ります — 型、スカラー値、シリアライズ形式、要素数を 1 回の呼び出しで取得でき、メタデータプローブ、コンプライアンスの抜き取り検査、サポート診断のための手書きのオブジェクト走査を置き換えます
Version 3.311.0
Added
SetBlackPointCompensationは、PDF 2.0 の/UseBlackPtCompグラフィックスステートを通じて、後続の描画に対してブラックポイント補償(ON、OFF、Default)を宣言します。これにより、プレプレスやプルーフ出力は、以前はビューワー固有だった暗調の ICC 変換を固定できるようになります。文書バージョンは自動的に引き上げられ、PDF/A モードはこのステートを拒否します
Version 3.310.0
Added
SetCompressionLevelとGetCompressionLevelは、ライブラリが実行するすべての圧縮の deflate レベルを公開します: 0 はデフォルトの SIMD アクセラレーションエンジンを保持し、1 はスループットを優先し、9 はアーカイブを最小化しますRecompressStreamsは、選択された文書のすべてのプレーンな FlateDecode ストリームを現在のレベルで再 deflate し、ストリームごとに小さいほうのエンコーディングを保持します。これにより、高速圧縮設定で元々書かれた文書が、コンテンツに触れることなく縮小されます
Version 3.309.0
Added
SetObjectStreamModeとGetObjectStreamModeは、3 状態のオブジェクトストリーム制御を追加します: 無効、生成(デフォルト)、保持で、保持は読み込んだファイルの元の圧縮グループ化を保持し、コンテナを逐語的に書き出すため、既存の PDF 1.5+ ファイルの変換が、何も展開も再グループ化もされない分、安価になります
Changed
- 保持モードでは、読み込み以降に編集されたメンバーはトップレベルオブジェクトに昇格されて変更が保存され、残りの圧縮メンバーは自動的にバイナリクロスリファレンスストリーム形式を選択します
Version 3.308.0
Added
CheckDocumentStructureは 1 回の呼び出しで構造の健全性チェックを実行します。すべてのオブジェクトとストリームがそのデコーダーに通され、プレーンな Flate ストリームは zlib の終了マーカーに対して厳密に検証されるため、切り詰められたデータが捕捉されます。レポートは、欠落したトレーラー、解決不能なカタログやページ、未サポートの暗号化ハンドラー、バイトスキャンで修復されたファイルを、オブジェクトごとの発見事項とサマリー行でフラグ付けします
Version 3.307.0
Fixed
- クロスリファレンスストリームを使う破損文書が正常に修復されるようになりました。生の再構築は圧縮オブジェクトストリームのメンバーを復元し、ファイル内のどこにもトレーラーキーワードが存在しない場合は、最新の到達可能な文書カタログからトレーラーを合成するため、壊れた startxref オフセットがそのようなファイルを開けなくすることはなくなりました
Version 3.306.0
Added
ExportDocumentDataは、文書情報キー、ブックマークツリー全体、ページラベル範囲を、クラシックな dump_data 行形式の編集可能なプレーンテキストとして書き出しますImportDocumentDataは同じ形式を逆に適用します — 情報キーが更新され、ブックマークツリーはネストレベルと宛先ページとともに再構築され、ページラベル範囲が置き換えられます — これにより、各方向 1 回の呼び出しで文書間の一括ブックマーク編集とメタデータ移行が可能になります
Version 3.305.0
Added
AuditDocumentSpaceは、文書のバイト使用量をカテゴリ別に分類します — 画像、フォントプログラムと辞書、コンテンツストリーム、フォーム XObject、オブジェクトストリーム、埋め込みファイル、メタデータ、構造ツリー、注釈、ページツリー、その他 — オブジェクト数、バイト合計、パーセンテージ付きで、ファイルがなぜその大きさなのか、どの最適化が最も効果的かを明らかにします
Version 3.304.0
Added
StructTreeItemCount、GetStructTreeItemText、GetStructTreeItemIntPropertyは、タグ付き文書の構造ツリーをフラット化された深さ優先のアイテムリストとして読み取ります — 要素型(生およびロールマップ済み)、代替テキストと実際のテキスト、言語、タイトル、マークコンテンツ id、ページ番号、親子関係
Changed
- 構造ツリーリーダーは破損文書に対して保護します: 参照サイクル、範囲外のオブジェクト番号、64 レベルを超えてネストされたツリーは、ループする代わりに打ち切られます
Version 3.303.1
Fixed
StampTextとStampImageが作成した半透明の下敷きスタンプは、もはや元のページコンテンツに不透明度を漏らしません — 透明度ステートはスタンプ自体に限定されるようになり、ページは完全な不透明度を維持します
Version 3.303.0
Added
OverlayDocumentPagesは、別の開いている文書のページを選択された文書のページにスタンプします。ターゲットページごとに 1 つのソースページを、既存のコンテンツの上または下に — レターヘッド用紙、連続するページ背景、スキャンされたフォームテンプレートを 1 回の呼び出しで- ソースの枯渇は設定可能です: 停止、ソースページを循環、最後のソースページを繰り返す、のいずれか。さらに、スタンプが自然なサイズを超えて拡大されるのを防ぐオプションもあります
Changed
- 文書スタンプはターゲットページの CropBox に合わせられ、
/Rotateエントリを持つページには直立して配置されます。各ソースページは共有 Form XObject として一度だけインポートされるため、繰り返されるテンプレートがリソースを複製することはありません
Version 3.302.0
Fixed
- AES-256 パスワードは、ハッシュ化前に SASLprep (RFC 4013) で処理されるようになりました。これにより、非 ASCII のスペース、ソフトハイフン、互換文字、結合シーケンスを含むパスワードが Acrobat や他の適合リーダーで正しく開かれます
- AES-256 文書を開く際、標準の準備済みパスワードを最初に試し、従来のバイト形式にフォールバックするため、非 ASCII パスワードで以前のリリースが書いたファイルは引き続き開かれます
Added
- エラーコード 604 は、禁止されたコードポイントを含むか双方向ルールに違反しているため SASLprep に拒否された AES-256 パスワードを報告します
Version 3.301.0
Added
SplitDocumentToFilesは、選択された文書をそれぞれ固定ページ数の出力ファイルのバッチに分割します。%pファイル名プレースホルダーを使用します
Changed
- バッチ分割はソース文書を 1 回だけ解析し、同じメモリ内構造からすべてのチャンクをコピーします。これにより、
ExtractFilePagesのループが各範囲に対して行う繰り返しの完全な再解析が置き換えられます
Version 3.300.0
Added
CollateDocumentsは、複数の開いている文書からのページを選択された文書にローテーションでマージし、各ラウンドで各ソースから設定可能な数のページを取ります(A1, B1, A2, B2, …)CollateDocumentsExは、ソースごとのページ範囲リストを受け取り、3-1のような降順範囲でソースを反転させるため、表と裏反転のスキャナーパスを 1 回の呼び出しで読み取り順にマージできます
Changed
- 照合マージは各ソースを単一のオブジェクトマップを通じてインポートし、ページの並べ替えでインターリーブするため、ソース内で共有されるフォントや画像は、グループサイズに関わらず一度だけ書き込まれます
Version 3.299.0
Added
SetDeterministicDocumentIDとGetDeterministicDocumentIDは、トレーラーのファイル識別子を再現可能な値に切り替えます。これにより、同一の入力が同一の出力バイトを生成し、ビルドキャッシュ、コンテンツアドレス指定可能ストレージ、バイトレベルの回帰比較に対応しますSetDocumentIDSeedは、再現可能なファイル識別子に明示的なシードを供給します。シードがない場合、識別子は文書メタデータ、バージョンヘッダー、ページ数から導出されます
Changed
- 再現可能なファイル識別子はフル保存時にのみ更新されます。インクリメンタル更新と暗号化文書は既存の識別子を保持するため、署名やパスワード保護されたファイルは引き続き正しく開かれます
Version 3.298.0
Added
AddLinkToArticleThreadとSetOutlineArticleThreadは、標準の Thread アクションでページのホットスポットとアウトラインをアーティクルスレッドまたはビーズに接続AddActionNextArticleThreadとPDF_ACTION_BUILDER_THREADは、チェーン、フォーム、ページ、ドキュメントのアクションワークフローに Thread アクションを追加
Changed
- Thread アクションのターゲットは安定した間接スレッドおよびビーズ参照を使用し、送信先コンテナを変更せずに無効なインデックスを拒否
- フォームフィールドアクションビルダーは PDF/A モードがアクティブな間は追加アクションを拒否し、フィールドとウィジェットの
/AA辞書に対する PDF/A の禁止を維持
Version 3.297.0
Added
DLフラット DLL リファレンスがすべてのAサフィックス ANSI(char)エントリポイントを文書化するようになり、Unicode 対応項目を正確なPAnsiCharDelphi およびconst char *C シグネチャでミラーする 353 のリファレンスページを追加BufferUtilities、DirectAccessFunctionality、MiscellaneousFunctionsを共有カテゴリ方式で駆動するクリーンな関数グループの索引ページとして再構築し、壊れたマークアップ、誤表記のセクション、欠落したチップを修正- ナビゲーション索引と共有検索索引が Unicode と ANSI の両方の呼び出し元について DLL 表面全体をカバー
Fixed
- ソースに該当シンボルがない古い
SetLoggerエントリを削除、文書化されたプロパティはLogger
Version 3.296.0
Added
AddAlternateImage、AlternateImageCount、GetAlternateImageInfo、RemoveAlternateImageが表示および印刷イメージバリアントの型付き作成と検査を提供- 代替イメージはオプションコンテンツグループまたはメンバーシップ辞書に関連付け可能で、各ベースイメージにつき 1 つのバリアントを印刷既定値として選択可能
Changed
- 組み込みレンダラはベースイメージが非表示のときにオプションコンテンツ代替イメージを選択し、印刷先では印刷既定値を優先
FindImagesがページリソースから到達可能な代替イメージ XObject を登録し、インポートされたバリアントが使用可能なイメージハンドルを受け取るように
Version 3.295.0
Added
AddArticleThreadが型付きメタデータ、順序付きページ矩形、循環ビーズリンク、ページごとのビーズ配列による標準準拠のアーティクルナビゲーションを作成ArticleThreadCount、GetArticleThreadInfo、GetArticleThreadBeadが作成またはインポートされたアーティクルスレッドを検査し、破損リンクの循環を境界付きで走査
Changed
DeletePagesがすべてのビーズを失ったアーティクルスレッドを削除し、存続スレッドの循環リンクを修復- 削除ページ追跡が安定した間接ページ参照を保持し、ページツリーカーソルの移動に伴うアウトラインとアーティクルのクリーンアップのずれを防止
Version 3.294.0
Added
SearchTextBatchは各ページ抽出が常駐している間に複数のテキストクエリを検索し、各ヒットに発元のゼロベースクエリインデックスを返すSearchTextBatchEachはストリーミングコールバックによる同じシングルパス検索を提供し、進行報告とキャンセルをサポート
Changed
- 単一クエリとバッチのテキスト検索が 1 つのマッチングコアを共有し、大文字小文字区別、完全一致、ページ範囲のセマンティクスを保持しつつ繰り返しのページ抽出、テキスト折り畳み、ヒットジオメトリ処理を回避
Version 3.293.1
Fixed
- メッシュシェーディングのラスタライズがどの Delphi バージョンでもコンパイルに失敗しなくなり、GDI+ ペインタの実数から浮動小数点へのキャストにおける
E2089 Invalid typecastを解決 - 並列バッチページレンダリングが
System.Threadingを利用できない Delphi XE5 と XE6 でコンパイル可能になり、古いツールチェーンは非 Windows と同様にシリアルレンダリングパスにフォールバック - プリンタ能力のプローブが
SetPrinter呼び出しを残りの印刷コードと整合させることで、従来の Delphi バージョンでの互換性のない型エラーを発生しなくなった - 証明書ストアの列挙が RAD Studio 10.3 Rio でビルド可能になり、以前は列挙ルーチンの最適化中に内部コンパイラエラーで中断していた
Version 3.293.0
Added
- オプションコンテンツメンバーシップ辞書を
AnyOn、AllOn、AnyOff、AllOffの互換ポリシーで作成、更新、列挙可能に - ネストされた PDF 1.6
/VE可視性式が Delphi と C++Builder で共有するコンパクトな前置表現によりAnd、Or、Notをサポート
Changed
- オプションコンテンツスコープ、コンテンツストリーム、キャプチャページ、イメージ、フォームフィールド、注釈がグループハンドルまたはメンバーシップハンドルのいずれかを受け入れるように
- レンダリングは有効な
/VE式を先に評価し、不正または未サポートの式は/OCGsと/Pにフォールバック
Fixed
- ネストされたオプションコンテンツが外側のグループまたはメンバーシップが非表示のときにコンテンツを可視にしなくなった
- 有効なオプションコンテンツグループを持たないメンバーシップ辞書は PDF 仕様の要求どおり可視性を変更しない
Version 3.292.0
Added
EnumAttachmentsがドキュメントと注釈の両方の添付ファイルについて作成日と更新日、十六進チェックサム、関連ファイル関係、ファイル仕様オブジェクト番号を報告ValidateAttachmentChecksumが要求時に格納されたチェックサムに対して添付ペイロードを検証し、新規埋め込みファイルは自動的にチェックサムメタデータを受け取る
Fixed
SetEmbeddedFileAFRelationshipが添付 API の他の部分と同じ 1 ベースの埋め込みファイルインデックスを、単一添付ドキュメントを含めて受け入れるように
Version 3.291.0
Added
DeduplicateResourcesが読み込まれたドキュメント全体で完全に重複するイメージ、Form、パターン、シェーディング、関数、ICC プロファイル、フォントプログラム、CMap、Type 3 CharProc、埋め込みファイル、メタデータ、PostScript ストリームを統合- リソース重複排除は独立した型フラグ、ドライラン解析、オプションの孤立収集、詳細なハッシュ、比較、ペイロード、参照、カテゴリ別統計を提供
Changed
- 重複検出は完全なストリーム辞書をキー順序に依存せず正規化し、各候補ペイロードを SHA-256 で一度ハッシュし、参照をリダイレクトする前にバケットをバイト単位で照合
- 完全等価グループは決定的な出力のために最も低いオブジェクト番号と世代を保持し、不正な直接オブジェクトの循環と意味的辞書の差異はマージされないまま
Version 3.290.0
Changed
PurgeUnusedResourcesがタイリングパターン、Type 3 グリフ、注釈外観状態、ExtGState ソフトマスクグループ、イメージ、シェーディング、ネストされた色空間全体で推移的依存閉包を計算- 既定のクリーンアップオプションがパターン、Type 3、外観、ソフトマスク、イメージの依存解析を有効にし、より狭いスキャンが必要な呼び出し元向けに独立したフラグを提供
- ネストされたコンテンツプログラムと依存エントリはキャッシュされ、共有リソーススコープは刈り込み前に私有化され、不正な循環はアクティブストリームと深度ガードで制限
Fixed
- イメージ色空間、Indexed ベース、Separation または DeviceN 代替、Pattern 基底空間、ICCBased 代替、シェーディング辞書を通じてのみ使用されるページリソースが未使用として削除されなくなった
- Type 3 CharProcs、タイリングパターンセル、注釈外観、透明ソフトマスクグループによってのみ使用されるリソースが自身または継承スコープから削除されなくなった
Version 3.289.0
Added
PurgeUnusedResourcesが選択されたコンテンツレイヤーから参照されない名前付きページリソースを削除し、詳細なカテゴリ別統計を返すことが可能に- リソースクリーンアップがページ範囲、ドライラン報告、進行とキャンセル、再帰的 Form XObject 解析、非推奨 ProcSet 削除、オプションの孤立オブジェクト収集をサポート
Changed
- リソース解析が PDF 名の大文字小文字区別、継承された Form リソース、カスタムインラインイメージ色空間、7 つの標準リソースカテゴリすべてに従うように
- 繰り返し Form プログラムはキャッシュされ、使用済みリソースセットはソート済み参照を使用し、辞書エントリは降順で削除されて大規模ドキュメントの性能が予測可能に
Fixed
- 辞書エントリの削除が大規模辞書のキー索引を無効化し、後の参照が古いエントリを返さないように
- 不正なストリームと未知の演算子は既定で完全なリソーススコープを保持し、共有または継承されたリソース辞書は変更前に複製
Version 3.288.0
Added
- デジタル署名が完全な DocMDP 認証と FieldMDP フィールドロック構造を出力可能になり、選択された各署名に構造的許可報告を提供
- RFC 3161 ドキュメントタイムスタンプ、署名タイムスタンプ、PAdES-B-T トークン注入、証明書チェーン検証、OCSP 証拠、DSS または VRI 検証資料に完全な作成と検証ワークフローが揃った
- RichMedia 注釈が埋め込みアセット、活性化と非活性化の設定、ポスター外観、列挙、抽出、削除をサポート
- ポスター印刷がベクターページ組み付け、重なりと crop marks、ハードマージン対応配置、再利用可能なタイル計画をサポート
- タグ付きテーブルが安定した識別子、ヘッダー関連、スパン、繰り返しヘッダー、装飾のアーティファクト化により意味的 Table、TR、TH、TD 構造を出力
- ビューアがテキスト、選択、チェックボックス、ラジオ、プッシュボタンフィールドのキーボードでアクセス可能な AcroForm 編集を提供しつつアクションをホストアプリケーションにディスパッチ
Changed
- Type 1 関数ベースのシェーディングと Type 4 から 7 のメッシュシェーディングがネイティブの関数評価と境界付きメッシュテッセレーションでレンダリング
- ICCBased 色レンダリングがイメージとシェーディング全体でキャッシュされた変換を共有しつつキャリブレートされた色空間の挙動を保持
- 増分保存がオブジェクトストリームとクロスリファレンスストリームを一貫して再構築し、選択された署名は自身の署名リビジョンに対して検証
Fixed
- SHA-1 署名タイムスタンプ要求が SHA-256 にフォールバックせず署名者署名値を SHA-1 でハッシュ
- 拒否されたフィールドロック置換が以前の有効なフィールドロック設定を破棄しなくなった
- 重複する外観状態名を持つラジオウィジェットが選択されたウィジェットを保持し兄弟ウィジェットをオフのままに
Version 3.287.0
Changed
- インラインイメージ辞書が PDF のコメント、区切り、リテラル、十六進、配列、辞書の境界に従い境界付きのネストを実現
- インラインイメージペイロードが raw、DCT、ASCII85、ASCIIHex、RunLength、Flate データに形式対応の終端を使用
- Flate ペイロードの発見がコンテンツストリームオフセットから境界付きの inflate を一度実行し正確な圧縮バイト会計を行い、連鎖したロスレスフィルタはエンドツーエンドの出力上限を共有
- ASCII85、ASCIIHex、LZW、予測子、カラープロファイル、補助イメージストリームが過大な一時割当てなしに境界付きの中間出力を強制
Fixed
- 不正または切り詰められたインラインイメージがソースデータを超えて読み込んだり未終端の値でループしたりデコーダ再利用間で古い状態を保持しなくなった
- パックイメージ行がバイト丸めの前に成分ビットを計算し、低位 RGB と複数行イメージの不正な長さを防止
- リソース色空間が元の名前を保持しつつ Lab、間接 ICCBased、DeviceN の成分数を導出し Indexed パレットストリームを厳格な制限下で復号
- インラインイメージ境界が不正な寸法、ビット深度、未サポートフィルタ、安全でないフィルタチェーン、圧縮ストリーム、曖昧な終端マーカーを一貫して拒否
- Indexed 色レンダリングがすべてのパレットアクセスを検証し、復号された表を超えて読み込まずに切り詰められた参照データを拒否
- PNG 予測子 10 から 15 が Flate と LZW ストリームで正しく復号し、不正な行フィルタを拒否し、すべての行と状態のサイズを割当て前に検証
- JPEG と JPEG 2000 ペイロードが符号化された寸法、成分、精度、マーカー構造、ボックス長、復号格納フットプリントをイメージ割当て前に検証
- インラインイメージ検証がパックと展開の両方のビットマップ格納を制限し ICC プロファイル、JBIG2 グローバル、端末フィルタパラメータを制約
- 終端マーカーテキストを埋め込んだバイナリフィルタペイロードが境界付き形式検証を通過する最初の候補まで継続
Version 3.286.0
Changed
- Content stream tokenization now follows PDF whitespace, comment, delimiter, literal string, hexadecimal string, and name boundaries
- Text splitting and resource replacement now use geometrically grown output buffers for linear processing of large content streams
- Reusable content stream processors now reset derived output and parser state before every
Processcall
Fixed
- Malformed or truncated literal and hexadecimal strings no longer read beyond the source buffer or emit an extra empty token
- Resource replacement now preserves case-sensitive PDF name semantics, accepts optional leading slashes, and updates duplicate mappings deterministically
- XObject and shading operands at the beginning of a stream are now excluded from text output, while unmatched restore operators no longer cancel later saved graphics states
Version 3.285.0
Changed
- LZW encoding now uses constant-time dictionary lookup and buffered stream writes, while decoding uses compact prefix and suffix tables with geometric output growth
- Flate predictor decoding now processes rows directly in the output buffer and supports packed, 8-bit, and 16-bit TIFF samples with arbitrary colour counts
- Stored Deflate streams now write into an exact pre-sized result, and zlib wrappers release temporary buffers safely when compression or decompression fails
Fixed
- LZW code-width changes now follow PDF
EarlyChangesemantics across 9-bit through 12-bit codes, including dictionary resets andEarlyChange=0 - LZW decoding now rejects invalid future codes and truncated bit streams without reading beyond the source buffer
- PNG predictors now use the ceiling byte width of a pixel, preserve previous decoded rows, and safely pad a partial final row
- TIFF predictor decoding now handles 1-bit, 2-bit, 4-bit, 8-bit, and 16-bit components consistently in both LZW and Flate paths
Version 3.284.0
Changed
- Buffer searches now scan fixed 64 KiB blocks, use byte lookup tables for set membership, and preserve the caller's position across every search path
- Unicode, Latin-1, hexadecimal digest, and ARC4 conversions now reserve bounded output once instead of repeatedly growing strings or temporary arrays
- ASCII85 encoding now reads input streams in 32 KiB blocks, while decoding uses exact integer arithmetic and writes directly into a pre-sized output buffer
- MD5 string hashing now avoids a temporary memory stream, digest comparison examines every byte, and ARC4 key scheduling no longer allocates an expanded key array
Fixed
DistanceToAnyBytenow returns the correct offset beyond its first block instead of rereading the same prefix and overcounting skipped bytes- Stream-backed buffer reads now honour the actual byte count returned by custom streams, shrinking results and advancing positions only by bytes received
- Buffer length reductions now clamp the current position, and nil pointer or stream sources behave as empty inputs instead of exposing invalid memory
- Latin-1 decoding now maps the complete byte range 0x00-0xFF instead of replacing bytes 0x7F-0xFF
- ASCII85 decoding now preserves the valid maximum 32-bit group
s8W-!and stops at the first end marker without floating-point boundary loss
Version 3.283.0
Added
TPDFlibSignatureVerifiercan now enumerate signature fields and CMS signers, open files, streams, or strings, and verify a selected field and signer by index or field name- Detailed verification reports now separate cryptographic integrity from signed-revision coverage, current-file coverage, later revisions, strict Contents-gap validation, and native crypto errors
Changed
- Detached CMS validation now streams both ByteRange segments through Windows CryptoAPI in bounded chunks instead of materialising the complete PDF in memory
- Signature fields under nested AcroForm Kids arrays and inherited
/FT /Sigentries are now enumerated with fully qualified names, and direct signature value dictionaries are supported
Fixed
- ByteRange validation now rejects overflow, overlap, truncation, a gap that is not exactly the selected hexadecimal
/Contentstoken, and a signed revision that does not end at its own%%EOF - Certificate lookup no longer falls back to an unrelated embedded certificate when the selected CMS signer identifier has no exact issuer-and-serial match
- Incremental updates that use cross-reference streams now include the cross-reference stream object's own type 1 entry, preventing strict PDF validators from reporting a missing self entry after signing
Version 3.282.1
Changed
- Full saves now rebuild imported object streams from the live object graph, preserve private trailer roots, and retain free-object generations without reusing structural object numbers
- Cross-reference streams now size their offset fields for large files, preallocate their payload, include their own entry, and preserve trailer extension keys
Fixed
- Object-stream packing now writes real
/ObjStmcontainers and type 2 member entries instead of only switching to an xref stream - Garbage collection no longer writes missing object numbers as in-use entries at offset zero and now emits a linked free-object chain in both plaintext and stream cross-references
- Loaded packed PDFs can now be saved repeatedly with packing enabled or disabled without retaining stale object streams, losing live members, or requiring cross-reference repair
Version 3.282.0
Added
- Imported ICCBased colours now use the embedded ICC profile across vector painting, function and mesh shadings, indexed palettes, raw bitmap, CCITT and JBIG2 images, CMYK JPEG images, and JPEG 2000 images
Changed
- ICC transforms now use a bounded Windows Color System lookup table with multilinear interpolation, replacing the temporary PNG round trip used during image rendering
- The renderer now honours content-stream and graphics-state rendering intents, ICCBased
/Range, image/Decode, and original-domain colour-key masks while validating profile channel counts against the PDF colour-space dictionary - Repeated uses of the same profile and rendering intent now share one lookup table across vector colours, patterns, shadings, and images
Fixed
- Encrypted ICC profile streams are now decrypted only while decoded and restored afterward, and embedded profiles are no longer compressed twice while writing image output
Version 3.281.0
Added
- The built-in GDI+ renderer now paints imported PDF function-based shadings and free-form, lattice, Coons, and tensor mesh shadings (types 1 and 4-7), including transparency and clipping
- Shading dictionaries now support component Function arrays, calibrated Lab, CalGray, and CalRGB spaces, Separation and DeviceN tint transforms, PatternType 2 Background fills, and BBox clipping across the GDI+ and Cairo renderers
Changed
- Type 1 shading functions now use bounded adaptive colour sampling with additional quarter-cell probes for higher narrow-feature accuracy and lower work on constant or smooth regions
- PatternType 2 matrices around mesh shadings are now composed exactly once in both GDI+ and Cairo, preserving translated, scaled, and rotated pattern placement
- Mesh colour components are now interpolated in their source colour space before Function evaluation and conversion to RGB, preserving nonlinear functions, DeviceCMYK gradients, and the correct ordering for managed colour transforms
- Coons and tensor surfaces now use bounded device-pixel error subdivision for smoother high-curvature output at large render sizes
- Encrypted shading and Function streams are decoded through the document crypt callbacks, and Type 5 vertex records honour their required byte alignment
Version 3.280.1
Fixed
MergeFileList/MergeFileListFast/MergeFileListStrictleaked aTSmartPDFReader/TSmartPDFDocumentpair (and everything they own) when a non-PDF file appeared in the merge list: the reader and document were constructed before thetryblock that frees them, so a parse failure on the malformed file's content orphaned the already-constructed reader instead of being cleaned up by the surrounding exception handler; construction now happens inside the protectingtryin both the single-file and multi-file prescan paths- Mesh shading parsing (
TPLMeshShading.Parse, shading types 1 and 4-7) leaked the decoded/Functionobject on every parse - every early-exit path and the normal completion skipped freeing it; the function is now released in afinallyblock regardless of howParseexits TPDFlibSignDoc.Closenow nils its smart-reader/document/info fields after freeing them, and the exception paths inOpen,OpenStreamandOpenStringnow release any partially-constructed smart objects instead of only clearing the stream reference, preventing a leak when opening a signing target fails partway through
Version 3.280.0
Added
- Error category enumeration
TPDFlibErrorCategory(ecSuccess/ecStructure/ecSave/ecCrypto/ecGeneric/ecCompliance/ecAcroForm) layered on top of the existing numericLastErrorCodetaxonomy, so callers can classify failures without memorising code ranges; exposed viaTPDFlib.LastErrorCategory,TPDFlib.ErrorCategory(Code)andTPDFlib.ErrorMessage(Code) - Form-field error codes 701-704 (field not found, field read-only, no AcroForm, invalid value) with human-readable messages, letting callers distinguish "field is locked" from "no such field" instead of receiving a single generic failure
SetFormFieldValueForcedforce-write variant that bypasses the read-only guard, used internally bySetFormValues(SkipReadOnly=False)so bulk imports can still overwrite locked fields when the caller explicitly opts out
Changed
SetFormFieldValuenow setsLastErrorCodeto 701/702/703 on failure (field not found / read-only / no AcroForm) instead of returning 0 silently;LastErrorCategoryis a non-consuming read so callers can inspect the category before retrieving the numeric code
Version 3.279.0
Added
ReplacePageRangesreplaces visual page content from another open document without changing the target page count or target page object identities, preserving bookmarks, links, annotations, and form widgets already attached to those pages
Changed
- Cross-document page copying no longer creates and removes an extra placeholder page before importing the requested range
Version 3.278.0
Added
PrintPagesAdvancedapplies copies, collation, duplex, orientation, color, quality, paper-size and input-bin settings to arbitraryPrintPagesrange expressions while retaining one printer profile and one print job
Changed
- Advanced print settings are validated before the job starts, positive print-quality values above the four named presets are applied as DPI, and paper or input-bin identifiers may use the full positive range supported by the corresponding
DEVMODEfields
Fixed
- Damaged cross-reference recovery now dispatches its bounded block reads through the traditional
TStream.Readoverride on Win64, preserving instrumentation and custom-stream behavior while retaining 64 KiB sequential I/O
Version 3.277.0
Changed
- Damaged cross-reference recovery now scans source data in 64 KiB sequential blocks instead of seeking once for every matching character, keeping auxiliary memory bounded while scaling to large PDF files and non-memory streams
- Recovery validates complete indirect-object tokens, skips object-like data inside comments, strings, and streams, confirms stream endings with a following
endobjtoken, preserves headers split across read boundaries, and selects the last valid trailer dictionary
Fixed
- Trailer reconstruction now supports nested dictionaries and delimiter text inside literal strings and is no longer truncated to the first 2048 bytes or the first apparent
>>pair
Version 3.276.0
Added
ActivateWebLinksandActivateWebLinksExscan existing page text once per page and create non-duplicate URI link annotations for HTTP, HTTPS,www., FTP,mailto:, and bare email targets with selectable detection and border options- Generated links use matched-character geometry, precise quadrilaterals for rotated or skewed text when permitted, PDF/A print flags, progress and cancellation support, and selected-page restoration; tagged PDF and PDF/UA documents are protected from incomplete structure-tree updates
Changed
SetAutoCreateWebLinksnow uses the same boundary-aware detector and target normalization when creating links for newly drawn text, addingwww., FTP, and bare email support
Fixed
- Updating annotation
/Contents, name, date, title, or subject properties no longer overwrites the subtype of an existing action dictionary, so URI and other actions remain valid after annotation metadata changes
Version 3.275.0
Added
ExtractPageRangeText,SavePageRangeTextToStream, andSavePageRangeTextToFileextract a parsed page range in one traversal with caller-defined page separators; stream and file output writes UTF-8 data incrementally so large documents do not require a complete document-sized text bufferSetPageBoxRangeandRemovePageBoxRangeapply page-boundary changes across the standard page-range syntax while preserving the caller's selected pageSetPageTransitionRangeandSetPageTransitionRangeExapply legacy or extended presentation transitions to page ranges with per-page progress and cancellation supportGeneratePageThumbnailsrenders requested pages directly into reusable memory and attaches their/Thumbimages without intermediate files or nested progress operations
Version 3.274.0
Fixed
- GDI+ rendering of axial shading patterns now honours the PDF
/Extendarray:SetupGDIPlusPatternpassesWrapModeClampwhen either end is extended (matching the Cairo backend) instead of always usingWrapModeTile, so end colours paint the area outside the gradient axis correctly
Added
- The scroll-hint bubble (
"Page N / M") shown while dragging the vertical scrollbar now auto-hides after 3 seconds of inactivity via aWM_TIMERhandler, so it no longer lingers until a separate scroll event dismisses it ZoomInStep/ZoomOutStepnow snap ontoActualSize(100%),FitWidthandFitPagepercentages when they fall between the current zoom and the next preset on the 14-step ladder, matching the behaviour of professional PDF viewers- The viewer disk page cache writes a build-version marker (
cache.version) and wipes the whole cache root when the library version changes, so a build upgrade never reuses stale bitmaps rendered by an older code path
Version 3.273.1
Fixed
- Object-stream container and xref-stream objects created during save were leaked because they bypassed
TPDFStructure.AddObjectregistration; both call sites now use theNewStreamWithDictownership-tracking factory, eliminating theTPDFStreamleak reported by the test runner underReportMemoryLeaksOnShutdown - Cross-reference stream
/Sizewas off by one: it must be one past the highest object number in the whole file, and the xref stream is itself an indirect object numberedMaxObj+1, so/Sizeis nowMaxObj+2
Changed
- Peephole content-stream optimiser now also removes identity text-matrix operators (
1 0 0 1 0 0 Tm), covering bothcmandTmwith the same six-operand identity check - Mark-sweep GC preserves object 1 (the
/Linearizedparameter dictionary) when the source document was loaded linearized, since that dictionary is never referenced from/Rootbut must survive
Version 3.273.0
Added
- Object-stream packing on save (
TPDFDocument.PackObjectsIntoStreams) collects eligible non-stream indirect objects, serialises them into PDF 1.5 object streams (/Type /ObjStm) with Flate compression, and emits a binary cross-reference stream (/Type /XRef) carrying type-0, type-1 and type-2 entries, reducing the size of saved files 10-40% on object-dense documents TPDFlibSaveOptions.PackObjectStreamsflag plusTPDFlib.SetPackObjectStreams/GetPackObjectStreamsAPI; defaults to enabled, auto-gated by PDF version (1.5+ activates packing and xref streams, 1.4 and below keep the traditional plaintext xref for compatibility), andTPDFlib.GetLastSaveUsedObjectStreamsreports whether the last save actually packed
Version 3.272.0
Added
- Mark-sweep garbage collection of unreferenced indirect objects (
TPDFDocument.GarbageCollectUnusedObjects) walks the object graph from the trailer roots (/Root,/Info,/Encrypt) and removes every indirect object that is not reachable, stopping the file-size growth that accumulates when pages are deleted and their font, content and XObject resources become orphans TPDFlibSaveOptions.GarbageCollectflag plusTPDFlib.SetGarbageCollect/GetGarbageCollectAPI let callers opt in to GC during a full save (defaults to off for backward compatibility), andTPDFlib.GarbageCollectObjectsruns GC immediately and returns the number of orphaned objects removed
Version 3.271.0
Added
- Peephole content-stream optimiser (
TPDFContentPeepholeOptimizer) rewrites a parsed page content stream before Flate compression, removing semantically redundant PDF operators: identitycmmatrices, emptyq/Qpairs, emptyBT/ETobjects, no-op paths terminated bynwith no clip, duplicate graphics-state setters (colour, line width, cap/join, dash, text state), and deadnafter a painting operator - all transforms are output-equivalent so visible page output is unchanged TPDFlibSaveOptions.OptimizeContentStreamsflag and matchingTPDFlib.SetOptimizeContentStreams/GetOptimizeContentStreamsAPI let callers opt in or out of the peephole rewrite duringCompressContent/CompressPage; enabled by default
Changed
TPDFDocument.CompressPagenow forwards the optimisation flag to the page tree so the peephole pass runs insideTPDFPageTree.Compressbefore the existing Flate compression, stacking operator-level reduction on top of byte-level compression
Version 3.270.0
Added
- New
PLParseDefaultAppearancedecodes a/DAdefault-appearance byte string (ISO 32000-2 12.7.4.3) into the font resource name, font size and fill colour, covering therg,kandGcolour operators so form-field and annotation appearance generators can paint text with the author-intended styling
Changed
- Page content-stream assembly (
TPDFRenderer.GetContents) now concatenates multi-part/Contentsarrays through aTStringBuilderinstead of repeatedResult := Result + chunk, removing the O(n^2) string growth that penalised pages with many content-stream parts
Version 3.269.0
Added
- New
BeginMarkedContent/EndMarkedContentwrite inline marked-content sequences with accessibility properties (/Alt,/ActualText,/Lang,/E) directly in the BDC property list per ISO 32000-2 14.9.2–14.9.5, so screen readers and accessibility tooling can read substitute text without a structure-tree entry - Annotation reader exposes
GetAnnotEffectiveBorderimplementing the Errata #287 precedence (border style dict/BSwins over the legacy/Borderarray) and resolving width, style and dash pattern into one call - Signature documents expose
GetSignatureSeedValueto read the seed-value dictionary (/SV, ISO 32000-2 12.7.5.5 Tables 236–237): required filter, allowed SubFilters and allowed digest methods, so a signer can honour the constraints the author embedded GetSignatureFieldLockreads the/LockFieldMDP seed dictionary (Table 238): action (/All,/Include,/Exclude) and the affected field names that must be locked at sign time
Version 3.268.0
Added
- New
PLParsePDFDateparses ISO 32000-2 7.9.4 date strings (D:YYYYMMDDHHmmSSOHH'mm') into a localTDateTime, honouring the mandatoryD:prefix, the field-dependency ladder (each field only when all preceding fields are present) and the UT offset (+/-/Zwith optional apostrophe-minute), returning the local equivalent of the documented instant - Text-string decoding (
PLDecodeTextString) now recognises the PDF 2.0 UTF-8 BOM (EF BB BF) per 7.9.2.2.1, so UTF-8-authored metadata decodes correctly instead of being misread as PDFDocEncoding - File specifications expose
GetFileNamehonouring the PDF 2.0 precedence (Path > UF > F) per Errata #444, plusGetEmbeddedFileStreamandGetRelatedFilesaccessors for the/EFand/RFdictionaries - Annotation readers expose appearance-precedence helpers
GetAnnotNormalAppearance,GetAnnotDefaultAppearanceandGetAnnotOffStateAppearanceimplementing the Errata #23/#34/#42/#170 rules (AP/N is authoritative; DA is the byte-string fallback; Off state lives under the nameOff) - PDF/UA validation reports a new code 10045 when a non-standard structure type fails to terminate at a standard type through the role-map chain (ISO 14289-1:2014 7.1), with cycle protection to a depth of 8
- PDF/A and PDF/UA font audits now validate that embedded CIDFontType2 fonts carry a
/CIDToGIDMapwhose value is either the nameIdentityor a stream, not merely present (ISO 32000-1 9.7.4)
Changed
- Name-tree lookup (
NameTreeLookup) now binary-searches the sortedNamesarray per ISO 32000-2 7.9.6 before falling back to a linear scan, turning large EmbeddedFiles/JavaScript/Dests lookups from O(n) into O(log n) on conformant files - PDF/UA standard-structure-type set expanded with PDF 2.0 additions (
Artifact,DocumentFragment,FENote,MarkedContent,Title) so the role-map no-remap and chain-termination checks recognise the full tag vocabulary
Version 3.267.0
Added
EnumPageContentStatesExは、設定可能な深度、サイクル保護、および深さ優先の実行順序によって Form XObject 命令を再帰的に列挙可能- コンテンツのスナップショットが、ストリームおよび親の XObject 情報、リソーススコープの識別子、Form のトラバースステータス、および子孫の数を含む呼び出しツリーの識別子を公開
- 独立したコンテンツトラッカーが、スコープ付きフォントを登録し、行列の連結およびバウンディングボックスのクリッピングを使用して分離された Form 実行状態を初期化可能
Changed
- 再帰的なコンテンツトレースが、各 Form リソース辞書を個別に選択し、互換性のあるレガシー Form に対して呼び出し元のリソースを継承し、継承されたフォントの識別子を保持し、繰り返しの呼び出しの間でデコードされた Form プログラムをキャッシュ
Version 3.266.0
Added
GetTextRunsから返されるテキスト実行(Text run)が、BT、Td、TD、Tm、T* を表示オペレータとともに再実行して取得されたグリフの原点(OriginX/OriginY)および完全なテキスト行列コンポーネント(Tm11/Tm12/Tm21/Tm22/TmDX/TmDY)を保持するようになり、利用者が個別のテキスト抽出パスなしでグリフを配置可能- メッシュシェーディングのデコードにおいて、黒へのフォールバックの代わりに Lab、CalRGB、および CalGray 色空間をカラーマネージャ経由でルーティングするようになり、非 DeviceRGB のフリーフォームおよびクーンズパッチに対して正しい塗りつぶしを生成
- 黒塗り(Redaction)処理において、既存のコンテンツ削除とともに、
/Rect、/IC内部色、およびオプションのオーバーレイテキストを含む実際の/Subtype /Redact注釈を出力するようになり、黒塗りを認識するビューアがサニタイズされた領域をマーク可能 - ライブラリの操作が、これまで休止状態だった
Loggerを介してロードおよび保存の境界で構造化されたログレコードを出力するようになり、ISO-8601 UTC タイムスタンプと、行ログファイルを毎回再度開くことのないキャッシュされたTStreamWriterファイルシンクを使用 - 新しい
Tests.Memoryフィクスチャが作成/描画/保存/解放およびNewDocumentサイクルをヒープ回帰から保護し、コンソールテストランナーがReportMemoryLeaksOnShutdownを有効化 - EMF の解釈において、
UnknownRecordCountプロパティを介して不明なレコードまたはプライベートレコードをカウントするようなり、サイレントなメタファイルの間隙を監視可能
Changed
- 辞書のキー検索(
TPDFDictionary.FindIndexByKeyName)において、16 を超えるエントリを持つ辞書に対して遅延オープンアドレス法ハッシュインデックスを構築するようになり、レンダラーの Resources/ColorSpace/Font/ExtGState 検索の大部分を占めていた線形スキャンを O(1) のプローブに変換 - sRGB ガンマ変換(
XYZ2RGB)において、ピクセルあたり 3 回のPower(x, 1/2.4)呼び出しの代わりに共有の 4096 エントリのルックアップテーブルを使用し、Lab から XYZ への 3 乗計算に直接乗算を使用するようになり、どちらも Lab または ICC ベースの画像をデコードする際の主要なピクセルあたりコストを削減 - ページ検索(
TPDFPageTree.GetPage)において、呼び出しのたびにページツリーを再トラバースする代わりに、繰り返しのアクセス時にキャッシュされたページ辞書を返すよう変更 - コンテンツストリームのオペレータディスパッチ(
ContentOperatorFromName)において、73 のオペレータを最初のバイトでバケット化し、トークンごとの線形スキャンを短い残差比較に削減 - PDF/A 色空間監査において、Indexed、Separation、DeviceN、および ICCBased のベースまたは代替空間に最大 8 の深度まで再帰するようになり、隠れた DeviceCMYK 色調変換や生の Lab 名が警告なしで通過するのを防ぎフラグを付与
- 整形済みフォントのファイナライズ処理において、保存ごとにすべての 65536 グリフスロットを 4 回スキャンする代わりに、描画時に記録された使用済みグリフセットをウォークするよう変更
- 文字列エスケープルーチン(リテラル文字列、XFDF、スタンプ、および変数トークン展開)において、
TStringBuilderまたは 2 パス割り当てを介して出力を構築するようになり、保存およびフォームエクスポートのホットパスから O(n^2) の連結を排除 - AES ストリームの暗号化/復号において、ブロックごとの再割り当ての代わりに、ループ反復間でチャンクバッファを再利用
- TrueType パーサーにおける複合グリフ解析において、コンポーネント配列を 1 要素ずつではなく幾何級数的に拡張
- メッシュシェーディングの
ReadBitsが最小限のカバリングバイトを 1 パスで読み取り、WriteBitsが出力バッファのサイズを事前に設定することで、ビットごとの再割り当てを排除 - ペインターの円制御点が事前計算された kappa 定数を使用し、弧の二乗計算に
Powerの代わりにSqrを使用
Fixed
PDFlibParallelにおいて、PDFlibRenderPagesParallelのスタブボディのシグネチャがインターフェース宣言と一致していなかった Windows 以外のビルドエラーを修正
Version 3.265.0
Added
- C++Builder デモスイートを Delphi と整合させるために 59 の C++Builder コンソールデモを追加し、同一の API サーフェスをカバーするデモの総数を 33 から 92 に増加
- Demo/C++Builder/index.html を 35 から 92 エントリに拡張し、Navigation、Color & ICC、Barcode & media、および Structure & compliance セクションを追加
Fixed
- DelphiCompile リストから 20 のライブラリユニット(PDFlibMeshShading、PDFlibGraphics、PDFlibWindows、PDFlibParallel、PDFlibLogger、PDFlibMail、PDFlibViewer など)が欠落しており、すべての C++Builder デモのコンパイルを妨げていた、既存 of 33 の C++Builder cbproj ファイルすべてを修正
Version 3.264.0
Added
- コンテンツのグラフィックス状態のスナップショットが、
Doオペランドを画像、フォーム、または PostScript XObjects として解決し、そのリソース名、オブジェクト番号、および変換された境界を報告可能 - Form のスナップショットが、元の
/Matrixおよび/BBoxを、リソース、グループ、透明グループ、および参照フォームのインジケータとともに公開 - 独立したコンテンツトラッカーが、
RegisterXObjectを介して XObject ストリームを事前登録可能
Changed
- ページコンテンツ状態の列挙において、選択されたページの XObject リソースを事前コンパイルし、変換された 4 つのコーナーすべてから呼び出し境界を計算
Version 3.263.0
Added
- コンテンツのグラフィックス状態のスナップショットが、現在のパス境界、現在の点、パスの複雑さ、保留中のクリッピングルール、および有効なクリッピング境界を公開
- 独立したコンテンツトラッカーが、
SetInitialClipBoundsを介して明示的なクリッピング境界を初期化可能
Changed
- ページコンテンツ状態の列挙において、遅延された
WおよびW*クリッピング、正確に変換された 3 次極値、q/Qクリッピング復元、および選択されたページのCropBox境界に従うよう変更
Version 3.262.0
Added
- コンテンツのグラフィックス状態のスナップショットが、フォントの書き込みモード、命令ごとの正確なテキスト変位、およびフォントメトリクスが解決されたかどうかを報告可能
- 独立したコンテンツトラッカーが、
OnMeasureTextを介してフォント測定値を提供可能
Changed
- ページコンテンツ状態の列挙において、シンプルまたは複合フォントメトリクス、水平スケーリング、間隔、および垂直書き込みルールを使用して、
Tj、TJ、'、および"のテキスト行列を進めるよう変更
Version 3.261.0
Added
- コンテンツのグラフィックス状態のトレースにおいて、透明度、ブレンド、オーバープリント、ソフトマスク、デバイスコントロール、および埋め込みフォント参照を含むページの
ExtGStateリソースを解決可能 TPDFContentStateTrackerが、独立したコンテンツプログラム分析のために外部グラフィックス状態辞書を事前登録可能
Changed
- 外部グラフィックス状態パラメータが累積的に適用され、完全な
q/Q保存および復元スナップショットに参加するよう変更
Version 3.260.0
Added
- 構造化されたコンテンツプログラムおよび選択された完全なページに対して、シングルパスの有効なグラフィックス状態トレースを追加
- スナップショットが、各命令の前後で CTM、テキスト行列、線スタイル、破線パターン、色、テキスト状態、およびグラフィックス状態スタックの深さを公開
Changed
- 画像配置の列挙において、単位正方形の 4 つのコーナーすべてをマッピングするようになり、回転やシアー(せん断)の下で正しい境界を生成
Version 3.259.0
Added
- インタラクティブなフォームフィールド向けに、型定义された時間、特殊パターン、および任意のマスクヘルパーを追加
- 個別にオプション指定可能なゼロ安全境界を持つ範囲検証を追加
- 自動計算順序登録を伴う、合計、平均、積、最小、および最大フィールドの計算を追加
Security
- 生成された JavaScript 文字列値が、引用符、バックスラッシュ、制御文字、および JavaScript 行区切り文字をエスケープするよう変更
Version 3.258.0
Added
- フォームフィールドイベント、既存のアクション、およびアクションチェーン向けに、型定義された
SetOCGStateアクション作成を追加 - オプショナルコンテンツ(Optional-content)アクションが、左から右への状態変更、重複グループ、およびオプションのラジオボタン関連性の設定を保持
Changed
- オプショナルコンテンツアクションの列挙において、ライター API を介してラウンドトリップ可能な標準グループハンドルを返すよう変更
Version 3.257.0
Added
- ゼロベースのページ、すべての標準的なフィットタイプ、ヌル許容の XYZ 値、およびトライステート(3 状態)のウィンドウ設定を伴う、完全な明示的リモート送信先書き込みを追加
- ポータブルファイル、Windows パラメータ、デフォルトディレクトリ、およびオープン/プリント操作のための完全な起動アクション書き込みを追加
- 既存のアクションハンドルでこれらのペイロードを更新したり、コンテナ固有の重複APIを使用せずにアクションチェーンに追加したりできるようになりました
Security
- リモートGo-Toおよび起動アクションのビルダーは、アクションチェーンを変更する前にPDF/Aモードを拒否するようになりました
Version 3.256.0
Added
- リモートGo-Toアクションの検査で、名前付きおよび明示的な移動先、ゼロベースの対象ページ、フィットタイプ、座標、ズーム値が報告されるようになりました
- 起動アクションの検査で、Windowsアプリケーションのパラメータ、デフォルトのディレクトリ、オープンまたは印刷操作が報告されるようになりました
- アクション情報で、存在しない
/NewWindow設定と明示的なfalse値が区別され、配列ベースのターゲットが識別されるようになりました
Version 3.255.0
Added
- リモート名前付き移動先および外部アプリケーション起動アクション用の型付きビルダーを追加しました
- URIアクションビルダーが、標準の
/IsMapフラグを介した座標マップ要求をサポートするようになりました - 新しいアクションの種類が、既存の拡張ビルダーインターフェイスを介してライフサイクル、フォームフィールド、チェーンアクションのAPIで機能するようになりました
Version 3.254.0
Added
- 専用のデモがなかったライブラリサーフェイス向けに、14のDelphi APIカバレッジデモを追加しました:OutlineBuilder、NamedDestinations、DocumentActions、EmbeddedFiles、LinearizeDemo、BarcodeGallery、XfaFields、TaggedPDF、OutputIntent、HtmlTextFlow、RichMediaAnnotations、MailSendDemo、TextBlockExtraction、PadesDssDemo
- DelphiデモインデックスにNavigationセクション、Color & ICCセクション、Barcode & mediaセクション、Structure & complianceセクションを追加し、掲載デモ数を56から92に増やしました
- これまでReadmeが同梱されていなかった20のデモ向けに、Readme.en-us.htmlガイドを追加しました
Changed
- すべてのDelphiデモソースにプロジェクトの Formatter.config を適用して演算子の空白、インデント、キーワードの大文字小文字を1つのスタイルに統一し、If...Thenが1行に収まるように NewLineBeforeThen を False に設定しました
- クラシックなGUIデモ全体でエラー処理を強化しました:SaveToFile の戻り値が一貫してチェックされるようになり、TPDFlib およびセカンダリオブジェクトの有効期間が常に try/finally で保護され、失敗メッセージに LastErrorCode が含まれるようになりました
Fixed
- ImageToPdf で SaveToFile の極性が反転し成功が失敗として扱われていた問題を修正し、保存に失敗したときに AddTrueTypeSubsettedFont が古いファイルを開かないようにしました
- CreateWithImageToStream、DoInTheStream、CanvasText、ExtractText、ExtractImage、PdfDecrypt、PdfEncrypt、PdfPermission で例外発生時に TPDFlib、TStream、TBitmap、TOpenDialog、TStringList インスタンスがリークする可能性があるリソースリークの問題を修正しました
- AddFormattedTitle(未使用の RectParts 割り当て、StrToFloatDef 周辺の冗長な try/except)および MultiFunction(上書きされた SetTextSize 呼び出し)のデッドコードを削除しました
Version 3.253.0
Added
- スレッド、サウンド、ムービー、オプショナルコンテンツ、レンディション、トランジション、3Dビューアクション用の型付きアクション詳細を追加しました
- 再利用可能なアクションハンドルの検索と、順序付けされたオプショナルコンテンツ状態の列挙を追加しました
- 置換、Fly、Push、Cover、Uncover、Fadeスタイルをカバーする完全なPDFトランジションレコードを追加しました
Fixed
- WipeおよびGlitterトランジションが方向を
/Diに保存し、ページディクショナリからページ表示時間を読み取り、トランジションとタイミングの両方のエントリをクリアするようになりました - 標準のPDF-1.5未満のトランジションスタイルがPDF 1.5出力バージョンを強制しなくなりました
Version 3.252.0
Added
- プライマリ、ウィジェット、フィールドトリガー全体で型付きアクション詳細を使用するシングルパスのフォームフィールドアクション検出を追加しました
- インタラクティブフォーム用の完全な計算順序列挙、フィールドごとの検索、および削除を追加しました
- バルクフォームフィールドスナップショットに計算順序とアクション数を拡張しました
Changed
- ウィジェットのライフサイクルトリガーが、必要なPDF 1.5のバージョン処理を伴うページオープン、ページクローズ、ページ表示、ページ非表示のアクションをサポートするようになりました
Version 3.251.0
Added
- 解決されたページおよびビューパラメータを使用して、レガシーカタログエントリとモダンな名前ツリーにわたるシングルパスの名前付き移動先列挙を追加しました
- 名前付き移動先の削除、完全なプッシュボタンキャプション、ボタンテキストの配置、およびフォームフィールドのマッピング名を追加しました
- バルクフォームフィールドスナップショットにマッピング名、ボタンのキャプション、およびボタンテキストの配置を拡張しました
Fixed
- 名前ツリーの編集で直接の移動先値がサポートされるようになり、明確なマルチノードインデックスエンコーディングが使用されるようになりました
Version 3.250.0
Added
- フィールドのアイデンティティ、タイプ、ページ、フラグ、値、およびChoice状態を含むシングルパスのフォームフィールドスナップショットを追加しました
- 型付きChoiceフィールドフラグクエリと、検証済みの選択インデックスおよび最上位表示インデックスのアクセサを追加しました
Fixed
- 単一選択のChoiceフィールドが複数選択の
/I配列を保持しなくなり、複数選択から単一選択への切り替え時に古い/V配列が文字列値に置き換えられるようになりました
Version 3.249.0
Added
- アプリケーションがページを2回抽出することなくキャッシュされたヒットを反復処理できるように、ワンパスの状態維持テキスト検索トラバーサルを追加しました
- バルクフォーム値のエクスポートと、オプションの読み取り専用フィールド保護付きの名前ベースの適用を追加しました
Version 3.248.0
Added
- ページスペースのジオメトリ、抽出されたテキスト、列挙、クリア、および拒否可能なマーキーイベントを含む保持されたViewerの選択範囲を追加しました
- 永続的なオーバーレイを含む、正確な現在のビューポートのビットマップキャプチャとファイル出力を追加しました
Version 3.247.0
Added
- ユーザーによるフォーム編集と注釈アクティブ化用の独立したViewerコントロールを追加しました
- テキストおよび選択フォームエディタ用の構成可能な前景色を追加しました
Version 3.246.0
Added
- 型付きの行末スタイル、図形の内側の色、リンクのハイライトモード、FreeTextのアライメント、Text注釈の開いた状態、およびCaret記号を追加しました
- アノテーションセッターが互換性のあるサブタイプを検証し、必要に応じて最小PDFバージョンを自動的に引き上げるようになりました
Version 3.245.1
Fixed
- A4レポートが意図したスケールを維持し、テキストがメモの境界内に収まり、構成されていないメモフレームが非表示のままになるように、FastReportエクスポートのページサイズとメモレイアウトを修正しました
Version 3.245.0
Added
- 暗号化されたドキュメントが初期資格情報を拒否した後にアプリケーションが別のパスワードを提供できるように、
OnPasswordを追加しました - パスワードの再試行がファイル、ストリーム、文字列の読み込みで一貫して動作するようになり、次の試行回数が公開され、ハンドラーがキャンセルできるようになりました
Security
- パスワードのコールバックは合計16回の試行に制限され、各再試行は新しいパーサーと復号状態を使用するようになりました
Version 3.244.0
Added
- 呼び出し元で定義されたXMP名前空間にスカラープロパティを安全に書き込むための
SetXMPPropertyExを追加しました - カスタムXMP値はXML DOMを介してエスケープされ、繰り返し書き込みを行うと一致する名前空間プロパティが置き換えられ、無効または予約済みのXML名が拒否されるようになりました
Version 3.243.0
Added
- クローズ前、保存前、保存後、印刷前、印刷後のトリガー用の型付きドキュメントライフサイクルアクションを追加しました
- URI、名前付き、JavaScript、フォーム、および移動先のアクションビルダーの共有サポートを備えた型付きのページオープンおよびクローズアクションを追加しました
- すべてのドキュメントおよびページのライフサイクルトリガーに対するアクション検査および削除メソッドを追加しました
Version 3.242.0
Added
- 元の読み込みファイルに変更を追加し、繰り返される増分保存用に更新されたxrefチェーンを自動的に再読み込みするための
SaveChangesを追加しました SaveChangesは書き込み前にリロードパスワードを検証し、リロード後も選択された公開ドキュメントハンドルを保持する
Changed
AppendToFileは現在の長さがロードされたソースと異なるターゲットを拒否するようになり、外部で変更されたファイルに古い増量オフセットが追加されるのを防止する
Version 3.241.0
Added
- ブックマークリストの末尾に直接アクセスするための
GetLastOutlineおよびGetLastChildOutlineを追加 - フルツリースナップショットを割り当てることなく、軽量にブックマークツリーを検査するための
GetOutlineChildCountおよびGetOutlineSiblingIndexを追加
Version 3.240.0
Added
- 上書き、スキップ、自動リネームの衝突ポリシーおよび添付ファイルごとの命名コールバックを備えた
SaveAllAttachmentsExを追加 - 添付ファイルのエクスポートで、要求された名前を安全なリーフ名に短縮し、Windows の予約デバイス名を保護するよう変更
Fixed
- 添付ファイルスナップショットがカウントされたものの割り当ておよびデータ設定が行われなかったため、
SaveAllAttachmentsがファイルを書き込まずに返る問題を修正
Version 3.239.0
Added
- Viewer ホストがズーム、スクロール、表示回転に依存しない 1 から始まるページ番号と上から下への PDF ポイント座標を受け取れるように、
OnPageMouseDown、OnPageMouseMove、およびOnPageMouseUpを追加 - ポインタの出入り時にリンク、非リンク注釈、およびフォームフィールドを区別するための
RegionAtClientPoint、ActiveRegion、およびOnActiveRegionChangeを追加 - 既存の Viewer アクションクラスを、コピー、ズーム、フィット、回転、ナビゲーション、保存、および印刷用の準備されたコンテキストメニューに構成する
CreatePDFlibViewerDefaultPopupMenuとInstallPDFlibViewerDefaultPopupMenuを追加
Version 3.238.0
Added
- 従来の
OnProgress百分比コールバックを維持しながら、型定義された操作タイプ、ライフサイクルフェーズ、現在の単位と総単位、パーセンテージ、詳細テキストを提供するOnOperationProgressを追加 - ファイル、ストリーム、文字列のロード、保存、検索、結合、およびページレンダリングの各エントリポイントで開始フェーズと終了フェーズを報告するようになり、中間進行中の操作は
opRunningも報告する opStartingまたはopRunningの実行中にCancelを設定すると既存のAbort状態が有効になり、新旧の呼び出し元に共通のキャンセルパスを提供する
Fixed
LoadFromFileは、誤ったパスワードに対するエラーコード 404 を保持するようになり、クリーンアップ後に一般的なロードエラー 401 で上書きするのを防止する
Version 3.237.0
Added
- 結果配列の割り当てやサイズ調整を行わずに、各テキストヒットを即座に発行する
SearchTextEachおよびTPDFlibSearchHitEventを追加 SearchTextとSearchTextEachはOnProgressを介してページ進行状況を報告するようになり、Abortとコールバックによるキャンセルの両方に対応し、コールバックによるキャンセルはResetAbortまで既存の中断状態を使用する- Viewer の検索パネルと検索ハイライトレイヤーがストリーミング API を 1 パスで処理するようになり、従来の 256 行および 512 ハイライトの制限を撤廃
Fixed
- 完全一致検索で、同じテキストブロック内の初期の部分一致を通り越して、境界が正しい後続の一致を検索し続けるように改善
Version 3.236.0
Added
- 印刷ジョブを開始することなく、稼働中のプリンタドライバのスナップショットをキャプチャする
GetPrinterCapabilitiesを追加 - 型定義された
TPDFlibPrinterCapabilitiesの結果に、用紙 ID、名称、ミリメートル寸法、給紙トレイ ID と名称、両面、カラー、横向き、部数順印刷のサポート、プリンタポート、およびドライバが報告する最大コピー部数を含めるよう変更 - 用紙やトレイのメタデータを省略するドライバでも、空の配列を持つ残りの機能を返し、無効なプリンタ名の場合は完全にクリアされたスナップショットを返す
Version 3.235.0
Added
- ロードされたドキュメントを一時 PDF に保存し、組み込みの Windows CDO プロバイダを介して SMTP 添付ファイルとして送信する
SendDocumentByMailを追加 - アプリケーションが別のトランスポートを提供し、非 Windows ホストをサポートし、ネットワークアクセスなしでメールワークフローをテストできるように、参照カウントされる
IPDFlibMailProvider拡張ポイントを追加 - 送信ごとに隔離された一時ディレクトリを使用し、添付ファイルの表示名をサニタイズし、プロバイダの返却後に PDF とそのディレクトリの両方を削除し、
GetLastMailErrorが検証、保存、トランスポート、およびプラットフォームのエラーを報告する
Version 3.234.0
Added
- スタンプ、ヘッダー、フッターのテキストに変数プレースホルダーを追加し、従来の & トークンと並んで
<%PageNo%>、<%TotalPages%>、<%ShortDate%>、<%LongDate%>、<%ShortTime%>、<%LongTime%>がページごとに展開される - カスタムの
<%name%>プレースホルダーは新しいOnCalcVariableイベントを介して解決され、名前とページ番号を受け取って置換データを提供(連番、バッチコード、クライアントフィールドはテキストの事前処理なしでスタンプ可能、ハンドラがない場合、未知のプレースホルダーはそのまま残る)
Version 3.233.0
Added
- テキスト抽出に上付き/下付き文字検出を追加し、新しい
GetTextBlockVAlignが抽出された各テキストブロックの視覚的行に対する基準線分類 (0 = 基準線、1 = 上付き文字、2 = 下付き文字) を報告することで、化学式、指数、脚注マーカーを認識できるように改善 - ブロックのサイズが元の行の主要テキストより明らかに小さく、その垂直方向の中心が 1 文字の高さの範囲内で主要な中心の上または下に位置する場合に上付き/下付き文字として分類する
Version 3.232.0
Added
- テキスト抽出に文字レベルの単語分割を追加し、
SetTextExtractionOptions(17, 1)により文字ごとの進み幅が実行中の中央値グリフ進み幅より大幅に広い箇所で、スペース文字を含まない表示テキストランを単語に再分割する(カーニングギャップをスペースの代用として行全体を単一オペレータで描画するドキュメントでも、GetPageTextモード 7 および 9-11 で個別の単語として抽出可能) - 幅配列は拡張されたテキストと整列したままであるため、ブロックの四辺形領域と文字ごとの幅出力の一貫性が維持される
Version 3.231.0
Added
- レイアウトを保持する固定グリッドテキストエクスポートを追加し、
GetPageText(11)がページジオメトリを等幅文字グリッドにマッピングする(行はベースラインごとにグループ化され、各ブロックは平均文字幅から計算された列に配置され、短いセルは実際のスペースで埋められるため、タブストップに依存せずにテーブルやフォームがテキストビューア、ターミナル、diff での視覚的配置を維持する) GetPageTextの参照ページに、読み取り順序 (9)、タブ区切りテーブル (10)、および固定グリッド (11) モードに関するドキュメントを追加
Version 3.230.0
Added
- テキスト抽出にハイフネーション解除を追加し、
SetTextExtractionOptions(16, 1)によりGetPageTextモード 7 および 9 の行指向出力で、改行を挟んでハイフンで結ばれた単語(行末の "inter-" に続く "national" が "international" になる等)を再結合する - ヒューリスティックによる結合はハイフンの前に文字があり、次の行が小文字で始まる場合のみ行われるため、数値範囲、固有名詞、句頭の大文字はハイフンを維持する
Version 3.229.0
Added
TPDFlibViewerコントロールにOnBeforeSnapshotイベントを追加(ドラッグ領域でスナップショットのドラッグがキャプチャされる前に発生し、Handled を設定するとデフォルトのクリップボードキャプチャがキャンセルされ、アプリケーションが独自に領域を処理可能)PrefetchEnabledを公開し、バックグラウンドの事前レンダリングワーカーを実行時にオン/オフ切り替えできるように改善(ワーカーは即座に停止し、開いているドキュメントで再起動する)DiskCacheMaxDocumentsを公開し、セッション間のディスクページキャッシュがクリーンアップ前に保持するドキュメント数を調整可能に変更(デフォルトは 10)
Version 3.228.0
Added
TPDFlibViewerコントロールに精密ナビゲーションを追加し、GoToPagePointがページにジャンプして指定されたページ位置をビューポートの左上にスクロールすることで、リンク先や検索ヒットが正確に表示されるように改善- プログラムによるスクロール制御を追加し、
ScrollByピクセルステップ、読み書き可能なHScrollPos/VScrollPosプロパティ(同じドキュメントを表示する 2 つの並列 Viewer の同期に最適)、および連続モードで各ページのスクロールアンカーを報告するGetScrollPosForPageを追加 - ズーム、回転、スクロールを介してクライアントピクセルとページユーザースペースの間で相互変換する公开座標ブリッジ
ClientPointToPageおよびPageRectToClientRectを追加し、内部ヒットテストが描画パスの正確なジオメトリを共有し、親を持たない(ヘッドレス)コントロールでも動作するように改善
Version 3.227.0
Added
TPDFlibViewerコントロールに表示状態イベントを追加し、OnZoomChangeが有効なズーム移動(明示的なズーム、プリセットステップ、サイズ変更・回転・DPI変更時のフィットモード再計算)ごとに発生し、OnHScroll/OnVScrollがスクロール位置に追従することで、ツールバーやステータス表示がポーリングなしで同期を維持する- 垂直スクロールバーのつまみをドラッグすると、移動先のページをプレビューするフローティングの「ページ N / M」バブルが表示されるように変更し(長文ドキュメントで非常に有用)、
ScrollHintEnabledプロパティ(デフォルトでオン)でオフに切り替え可能
Version 3.226.0
Added
TPDFlibViewerコントロールにおける入力と保存のループを完了し、SaveToFileおよびSaveToStreamが表示中のドキュメント(確定したフォーム編集を含む)をディスクまたはストリームに書き戻す(開いているインプレースエディタは先に確定される)- 複数行テキストフィールドが適切な複数行メモ(Memo)で編集できるようになり、Enter で改行を挿入、Ctrl+Enter で確定、Escape でキャンセルし、単行フィールドは通常の Enter で確定する挙動を維持
- Tab および Shift+Tab により、インプレースエディタが各フィールドのページに従ってドキュメント内の編集可能なテキストおよび選択フィールドを巡回し、
FocusNextFormFieldがプログラムから同じナビゲーションを公開する
Version 3.225.0
Added
TPDFlibViewerコントロールにプリセットラダーズームを追加し、ZoomInStepおよびZoomOutStepが標準プリセットシーケンス (1、5、10、25、50、75、100、150、200、400、800、1600、2400、3200 パーセント) にズームをスナップし、現在適用されているズームから開始してフィットモードが自然に遷移し、ツールバーのズームアクションも同じラダーを使用するように改善- Ctrl + マウスホイールでプリセットラダーに沿ってズームし、通常のホイールはスクロールを維持する
- キーボードショートカットを追加し、Ctrl+'+' / '-' でズームをステップ実行、Ctrl+1 / 2 / 3 で実際のサイズ、幅に合わせる、ページに合わせるを切り替え、Shift+Up / Down で最初と最後のページにジャンプする
Version 3.224.0
Added
- Delphi、DLL、および ActiveX エントリポイントを持つ
CreateSelfSignedCertificateを追加し、自己署名 RSA 証明書 (SHA-256 署名、構成可能な件名、有効期間、および鍵長) を生成して秘密鍵とともにパスワード保護された PFX ファイルにエクスポートし、SignFileや署名処理 API ですぐに使用できるようにすることで、外部の証明書発行機関なしで署名ワークフローの構築とテストが可能 - 証明書はエクスポート後に削除される使い捨てのキーコンテナ内に作成され、PFX のみがキー素材を保持し、自己署名証明書はテストおよび内部ドキュメント用であるため、明示的にインストールしない限りビューアはそれらを信頼できないものとしてフラグを立てる
Version 3.223.0
Added
- 合成可能なウォーターマークレイヤーに
TPDFlibShapeWatermarkを追加:テキストや画像のウォーターマークと同じApplyWatermarkエントリポイントを介して、塗りつぶしと線の色、線幅、不透明度を指定した長方形、円、楕円、多角形、ベジェ曲線チェーン、直線をページ範囲にスタンプ可能 - 長方形、円、楕円の形状は Width/Height からサイズを決定し、多角形、曲線、直線の形状は
SetPoints(ローカル X,Y ペア) からジオメトリを取得するため、9ポイントの Position グリッドとカスタム配置があらゆる形状の種類に適用され、退化したジオメトリ (点の数が少なすぎるもの) は拒否される
Version 3.222.0
Added
- Delphi、DLL、ActiveX のエントリポイントを持つ
AddLinkToEmbeddedPDFを追加:現在のドキュメントに埋め込まれた PDF (EmbeddedFiles 名による) を開き、オプションの新しいウィンドウ要求を伴う ISO 32000-1 §12.6.4.4 の標準の埋め込み先移動 (/GoToE) アクションを使用して、そこでの選択されたページにジャンプするページホットスポット。ドキュメントバージョンは自動的に PDF 1.6 に昇格 GetAnnotActionInfoおよびそのアウトライン/フォームフィールドの兄弟が埋め込み先移動アクションを認識するようになり、埋め込まれたターゲット名、親/子ターゲット関係、オプションのファイル仕様、および /NewWindow フラグとともに、新しいakGoToEの種類をレポートする
Version 3.221.0
Added
- Delphi、DLL、ActiveX のエントリポイントを持つ
SetSignProcessAppearanceTextを追加:デジタル署名において、署名者名、理由、場所、署名日で構成され、ビットマスクによって選択されるオプションの記述ラベル ("Signed by:", "Reason:", ...) を含む自動生成された可視テキストの外観を表示可能 - テキストブロックは、設定可能な色で Helvetica の署名フィールドの長方形内に配置され、フォントサイズ 0 は行をフィールドに自動フィットさせる。
SetSignProcessFieldImageFromFileを介して設定されたフィールド画像が優先され、ドキュメントのタイムスタンププロセスはテキストの外観を無視する
Version 3.220.0
Added
TPDFlibViewerコントロールにインタラクティブなフォーム入力を追加:チェックボックスやラジオボタンをクリックすると切り替わり、テキストフィールドや選択フィールドをクリックするとフィールド上にインプレースエディタが開く (Enter で確定、Escape でキャンセル、エディタから離れると確定)。読み取り専用フィールドはそのまま残され、変更されたページは自動的に再レンダリングされる- 書き込みが発生するたびに新しい
OnFormFieldValueChangedイベントが発生し、HighlightFormFieldsとFormHighlightColorは、ユーザーがフォームフィールドを見つけられるように、入力可能な各領域に半透明の背景を描画する - プログラムによる対応機能である
FormFieldAtPagePoint、GetFormFieldPageRect、ToggleCheckBoxField、SetFormFieldValueAndRefresh、BeginEditFormField、CommitInplaceEditorを追加し、マウス入力なしで同じ仕組みを駆動可能
Version 3.219.0
Added
TPDFlibViewerコントロールに注釈インタラクションを追加:リンク以外の注釈をクリックすると、ページ、注釈インデックス、サブタイプを伴う新しいOnAnnotClickイベントが発生し、AnnotAtPagePointはプログラムでヒットテストを公開する (Popup 関連はスキップされる)- 注釈の上にホバーすると、その Contents テキストがコントロールのヒントとして表示される (デフォルトでオンの
AnnotHintsスイッチは、標準のShowHintプロパティと連動する) - FileAttachment 注釈の埋め込みファイルをディスクに書き込む
SaveAnnotAttachmentToFileを追加し、ビューアでのクリック保存添付ファイルワークフローを完成
Version 3.218.0
Added
TPDFlibViewerコントロールにセッション間のディスクページキャッシュを追加:DiskCacheFolderを設定すると、レンダリングされたページがディスク上に永続化され、最近表示したドキュメントを再レンダリングなしで瞬時に再び開くことが可能- キャッシュされたページは、ドキュメントのパス、サイズ、最終書き込み時刻のフィンガープリントによってキー指定されるため、ファイルを編集すると古いページは自動的に無効化される。キャッシュは最大10個のドキュメントを保持し、最も使用されていないものから削除される
- ディスクキャッシュが保存したページレンダリングの数を報告する
DiskCacheHitsカウンタを追加
Version 3.217.0
Added
TPDFlibViewer用に20個の事前定義済みTAction子クラスを持つPDFlibViewerActionsユニットを追加し、ツールバーとメニューがグルーコードなしで動作可能:ページナビゲーション (First/Prior/Next/Last)、ズーム (In/Out/FitWidth/FitPage/ActualSize), ビュー回転 (時計回り/反時計回り)、印刷、ファイルを開く/名前を付けて保存ダイアログ、選択されたテキストのコピー、および5つのマウスツールモードスイッチ- 各アクションは
Viewerプロパティを介してビューアをターゲットにし、有効状態 (ドキュメントが開いているか、ページ位置、選択範囲が存在するか) とチェック状態 (アクティブなズームフィットまたはマウスツール) を自動的に最新に保つ。すべてのアクションは Action List エディタの losLab PDF カテゴリに登録される - 実際に有効になっているズーム (計算された幅合わせ/ページ合わせ係数を含む) を報告し、ズームステップがそれを基に構築できるようにする
TPDFlibViewer.EffectiveZoomPercentを追加
Version 3.216.0
Added
TPDFlibViewerコントロールに検索ヒット強調表示を追加:HighlightSearchHitsはドキュメント全体を検索し、スクロール、ズーム、回転中もその位置にとどまる半透明のバーをすべてのマッチ箇所に描画する。ClearSearchHighlights、SearchHighlightCount、設定可能なSearchHighlightColorも提供TPDFlibSearchPanel.RunSearchがアタッチされたビューアにもヒットバーを描画するようになり (デフォルトでオンの新しいHighlightInViewプロパティでオフに切り替え可能)、検索結果がヒットリストだけでなくページ上でも表示されるようになる
Version 3.215.0
Added
- 新しい
ViewerModeプロパティを介してTPDFlibViewerコントロールにマウスツールモードを追加:vmSelectテキスト選択 (デフォルト)、vmHandグラブカーソルによるドラッグパン (通常のクリックはリンクに追従)、vmZoomドラッグされた範囲を拡大してビューポートに合わせるマーキーズーム、vmSnapshotクリップボードへの領域キャプチャ、およびvmHighlight永続的な半透明の領域強調表示 - 任意のクライアント領域 (ページと強調表示) を呼び出し元所有のビットマップにレンダリングする
CaptureRegion、スナップショット処理用のOnSnapshotイベントとSnapshotToClipboardスイッチ、ズーム、回転、ナビゲーション後も保持されるページ固定の強調表示用のAddHighlightRegion/ClearHighlightRegions/HighlightRegionCountと設定可能なHighlightColorを追加
Version 3.214.0
Added
TPDFlibViewerコントロールに印刷機能を追加:PrintDocは標準の Windows 印刷ダイアログ (プリンターの選択、ページ範囲、部数、丁合い) を表示し、ライブラリの印刷エンジンにジョブを渡し、PrintDoc(False)は UI なしでドキュメント全体をデフォルトのプリンターに印刷する- 明示的なプリンター名、ページ範囲、コピー部数、丁合いフラグを指定した、完全にプログラムによるビューア印刷用の
PrintDocRangeを追加
Version 3.213.0
Added
TPDFlibViewerコントロールに表示の回転を追加:RotateClockwise90とRotateAntiClockwise90は表示されたページを90度ステップで回転させ、ViewRotationプロパティは角度を直接読み取りまたは設定する (0, 90, 180, 270)- 回転は純粋な表示属性であり、ドキュメントは変更されず、リンクのクリックとテキストの選択はすべての角度で機能し続け、幅合わせおよびページ合わせのズームモードは回転したページの形状に適応し、新しいドキュメントを開くと表示は 0 度にリセットされる
- 回転したページのビットマップは角度ごとにキャッシュされるため、角度を切り替える際に再レンダリングする代わりに以前のレンダリング結果を再利用する
Version 3.212.0
Changed
- XFA データセットの SOM パス互換性を改善:
GetXFAFormFieldValueとSetXFAFormFieldValueが$data.Receipt.Detail.[Total_Price > 200].Descriptionなどの単純な FormCalc スタイルの述語セレクタを受け入れるようになり、述語がサブセットを選択したときに対応するすべてのデータノードを更新する
Version 3.211.0
Changed
- XFA データセットの SOM パス互換性を改善:
GetXFAFormFieldValueとSetXFAFormFieldValueが数値またはワイルドカードの出現を伴う Data DOM クラスセレクタ#dataGroupおよび#dataValueを受け入れるようになり、$data.Receipt.#dataGroup[0].#dataValue[0]などのクラスベースのパスを使用可能
Version 3.210.0
Changed
- XFA データセットの SOM パス互換性を改善:
GetXFAFormFieldValueとSetXFAFormFieldValueがレコード処理以外のパケットで$recordルートを受け入れるようになり、$record.Taxや$record/Detail[0]/Total_Priceなどのパスが外部データレコード要素から解決されるようになる
Version 3.209.0
Changed
- XFDF 注釈交換を改善:注釈エクスポート時に PDF 注釈の
/BS値から標準の境界線スタイル属性width、style、およびdashesを書き込むようになり、注釈インポート時に挿入された注釈でこれらの属性を復元する
Version 3.208.0
Changed
- XFDF 注釈交換を改善:注釈エクスポート時に PDF 注釈の
/CreationDateおよび/CA値から標準のcreationdateおよびopacity属性を書き込むようになり、注釈インポート時に挿入された注釈でこれらの属性を復元する
Version 3.207.0
Changed
- XFDF 注釈交換を改善:注釈エクスポート時に PDF 注釈の
/F値から標準のflags名を書き込むようになり、注釈インポート時に挿入された注釈のフラグにそれらの名前を復元する
Version 3.206.0
Changed
- XFA データセットの SOM パス互換性を改善:
GetXFAFormFieldValueとSetXFAFormFieldValueが$data.Receipt.*.Total_Priceなどの直接の子のワイルドカードセレクタを受け入れるようになり、親ノードで同名のフィールドを選択することなく、一致する子ブランチを読み取りまたは更新する
Version 3.205.0
Changed
- XFA データセットの SOM パス互換性を改善:
GetXFAFormFieldValueとSetXFAFormFieldValueが$data..Total_Priceおよび$data.Receipt..Total_Priceなどの子孫セレクタを受け入れるようになり、最初に一致する子孫データノードを読み取りまたは更新する
Version 3.204.0
Changed
- XFA データセットの SOM パス互換性を改善:
GetXFAFormFieldValueとSetXFAFormFieldValueが$data.Receipt.Detail[1].parent.Taxなどのパスでparentプロパティを受け入れるようになり、選択したノードの親の兄弟データを読み取りまたは更新する
Version 3.203.0
Changed
- XFA データセットの SOM 出現処理を改善:
GetXFAFormFieldValueとSetXFAFormFieldValueが$data.Receipt.Detail[*].Total_Priceなどの[*]セレクタをサポートし、一致するすべての繰り返しデータノードを読み取りまたは更新する
Version 3.202.0
Changed
- XFA の SOM パス互換性を改善:XFA データセットおよびテンプレートフィールド API がスラッシュ区切りのフィールドパスでリテラルのピリオドを保持し、ドット区切りの SOM パスでエスケープされたピリオド
Line\.Itemを受け入れるようになる
Version 3.201.0
Changed
- XFA データセットのパス互換性を改善:XFA フィールド値 API が
$data/...、xfa.datasets.data/...、xfa.datasets/...などの標準データ SOM ルートの後にスラッシュ区切りのパスを受け入れるようになる
Version 3.200.0
Changed
- XFA データセットの SOM 互換性を改善:XFA フィールド値 API がスラッシュ区切りの
!data/...パスを含む、標準の!data...短縮形式を受け入れるようになる
Version 3.199.0
Changed
- XFA テンプレートパス互換性を改善:テンプレート編集 API が
$template/...パスを含む、XFA フィールド名列挙によって返されるスラッシュ区切りのフィールドパスを受け入れるようになる
Version 3.198.0
Changed
- XFA データセットの名前空間互換性を改善:データセットパケット内のビジネスデータが独自の名前空間接頭辞を使用している場合、フィールド値 API がローカル XML 名によってデータノードを読み取りおよび更新するようになり、フィールド名列挙は接頭辞のないパスを返す
Version 3.197.0
Changed
- XFDF 注釈交換を改善:注釈エクスポート時に PDF の
/NMおよび/Mから共通のnameおよびdate属性を含めるようになり、注釈インポート時に挿入された注釈でこれらの値を復元し、SetAnnotStrPropertyが注釈変更日付のタグ 104 を受け入れるようになる
Version 3.196.0
Changed
- XFA フィールド名列挙を改善:フィールドリスト API がデータセットパケット内のすべてのトップレベルデータレコードをスキャンし、コンテナグループをフィールドとして追加することなくリーフデータフィールドを返す
Version 3.195.0
Changed
- XFA データセットの互換性を改善:XFA フィールド値 API が、データセットパケットが接頭辞のない
data要素を使用している完全な XDP パケットを読み取りおよび更新するようになる
Version 3.194.0
Fixed
- XFA テンプレートフィールド更新を改善:XFA テンプレートフィールド API が
$templateやxfa.templateなどの標準テンプレート SOM ルートを受け入れるようになり、完全な XDP ストリーム内のテンプレートのみの変更が正しく保存される
Version 3.193.0
Changed
- XFA フィールドアドレス指定を改善:XFA フィールド値 API が相対フィールドパスに加えて、
$dataやxfa.datasets.dataなどの標準データ SOM ルートを受け入れるようになる
Version 3.192.0
Changed
- XFA の XML パケット処理を改善:UTF-16 バイトオーダーマークまたは UTF-16 XML バイトパターンを持つ XFA ストリームが XML 解析前にデコードされるようになり、UTF-16 エンコードされたフォーム値が XFA フィールド読み取り/書き込み API を介して引き続き利用可能になる
Version 3.191.0
Changed
- XFA パケットオーサリングを改善:ドキュメントにフォームデータがまだ存在しない場合に
SetXFAFromStringが必要なAcroFormコンテナを作成し、完全な XFA パケットが保存されたときに古い解析済み XFA 状態を置き換え、保存されたパケットを XFA フィールド読み取り/書き込み API を介して利用可能に保つ
Version 3.190.0
Changed
- XFDF 注釈交換を改善:注釈エクスポート時に PDF の
/CRGB 配列から共通のcolor属性を書き込むようになり、注釈インポート時に挿入された注釈のカラー配列にcolor="#RRGGBB"値を復元する
Version 3.189.0
Added
- XFDF注釈インポート/エクスポートAPIを追加:
ExportAnnotationsToXFDF、ExportAnnotationsToXFDFString、ImportAnnotationsFromXFDFおよびImportAnnotationsFromXFDFStringが、テキストスタイルの注釈コメント用として、ページ、矩形、タイトル、件名、およびプレーンテキストコンテンツデータを含むISO 19444<annots>データを読み書き可能に
Version 3.188.0
Changed
- XFDFリッチテキストフィールドのインポートを改善:
<value-richtext>を持つフィールドが、フィールドのRV値にリッチテキストXMLを保持しつつ、存在する場合はプレーンな<value>フォールバックを適用するように
Version 3.187.0
Changed
- 複数選択の選択肢フィールドにおけるXFDFフォームデータ交換を改善:繰り返される
<value>要素が選択値配列にインポートされるようになり、複数選択 of 選択肢フィールドのエクスポート時に、選択されたアイテムごとに1つの<value>要素が書き出されるように(単一のエスケープされたテキストノードにフラット化されなくなりました)
Version 3.186.0
Changed
- リッチテキストフィールドのXFDFフォームデータエクスポートを改善:
RVリッチテキスト値を持つフィールドが、プレーンな<value>フォールバックを保持しつつ、<value-richtext>要素を含むように
Version 3.185.0
Changed
- リッチテキストフィールド of XFDFフォームデータインポートを改善:フィールドがプレーンな
<value>なしで<value-richtext>を提供する場合、インポーターがフィールドをスキップする代わりにXHTMLテキストコンテンツを抽出して、対応するAcroFormフィールドに適用するように
Version 3.184.0
Changed
- XFDFフォームデータ交換を改善:エクスポート時に
xml:space="preserve"を含む標準XFDF名前空間を使用し、階層的なAcroForm名に対してネストされた<field>要素を出力し、非末端の親フィールド値をスキップし、ファイルエクスポートをUTF-8として書き込み、ネストされたフィールド、単一引用符属性、CDATA、XMLエンティティ、および数値文字参照を持つ空白に柔軟なXFDFをインポートするように
Version 3.183.0
Added
- 機密コンテンツを1回の呼び出しで消去する
SanitizeDocument(Flags)を追加:すべてのグローバルJavaScriptの削除、カタログのOpenActionの削除、すべての注釈からの/Aアクションの削除、Author/Subject/Keywords/Creator/Producerメタデータ(/InfoとXMPの両方)の消去、およびオプションですべての注釈の削除を行います。フラグビットのSANITIZE_JAVASCRIPT/SANITIZE_ACTIONS/SANITIZE_METADATA/SANITIZE_ANNOTATIONS/SANITIZE_OPEN_ACTIONを組み合わせることができ、SANITIZE_ALLですべての消去を適用します(黒塗りで可視コンテンツは削除されるもののメタデータや隠しスクリプトが逆戻り可能な状態のままになるという、古典的なデータ漏洩の脆弱性を解決します) - 個別の注釈から/Aアクション辞書を削除する
TPDFAnnots.RemoveAnnotAction(Index)を追加(SanitizeDocumentで使用されるほか、単体でも有用)
Version 3.182.0
Added
EnumPageElementsによって返される画像要素が、ゼロではなく実際の配置矩形(Left/Top/Right/Bottom)を持つように改善:コンテンツストリームを走査してCTM(cm/q/Q)を追跡し、各Doオペレーターの1x1単位正方形をページ座標にマッピングする新しいTPDFContentProgram.EnumImagePlacementsメソッドをサポート- 4つのデモを追加:DocumentProperties(DocInfo/ページボックス/回転/トランジション/ビューア設定/XMPラウンドトリップ)、FormProperties(フィールドごとのプロパティグリッド:型/値/読み取り専用/MaxLength/MultiLine/説明)、SignatureValidator(署名フィールドの列挙 + 検証 + 署名者証明書)、Reader(開く/ナビゲート/ズーム/テキストコピー機能を備えたVCL TPDFlibViewer)
Version 3.181.0
Added
- スキーマ対応の既存のXMPエンジン(PDFlibXMP)をパブリックファサード経由で公開する
SetXMPPropertyを追加:RDF XMLを手書きすることなく、名前空間 + キーでDublin Core(dc:)、XMP Basic(xmp:)、Adobe PDF(pdf:)、PDF/A ID(pdfaid:)、PDF/UA ID(pdfuaid:)、またはXMP Media Management(xmpMM:)の任意のプロパティを設定可能に - FDFの/Fields配列(各
<< /T (name) /V (value) >>)を解析し、EscapePDFTextの8進数/括弧エスケープを反転させて、各値をタイトルで対応するAcroFormフィールドに適用するImportFormDataFromFDF/ImportFormDataFromFDFStringを追加(非対称なエクスポート専用のギャップを解消します) - XFDF(XML Forms Data Format、FDFのモダンなXML版)の双方向データ交換用APIの
ExportFormDataToXFDF/ExportFormDataToXFDFString/ImportFormDataFromXFDF/ImportFormDataFromXFDFStringを追加 - 6つの名前空間スコープ付きXMPセッター(
SetDublinCore、SetXMPBasic、SetAdobePDF、SetPDFA、SetPDFUA、SetXMPMM)をTPDFlibXMP上で公開し、高度な呼び出し元がエンジンを直接制御できるように改善
Version 3.180.0
Added
- コンテンツストリームの真のテキスト置換(
TPDFContentProgram.ReplaceTextRunを介してTj/TJ/'/"テキスト表示オペレーターをインプレースで書き換える)を実行するSearchAndReplaceTextInContentを追加(元のグリフの上に矩形をオーバーレイするだけの既存のマスクベースのSearchAndReplaceTextとは異なり、元のテキストはストリームから消去され復元できません。SearchTextを介して一致箇所を特定し、FindInstructionsInRectを介して各一致矩形を対応する命令にマッピングし、書き換えてレイヤーを書き戻します)
Version 3.179.0
Added
- 新しい
Lib/PDFlibLogger.pasユニットに、4つのレベル(Debug/Info/Warn/Error)、ホストコールバック(OnLog)、オプションのスレッドセーフなファイルシンク、および既存の数値コード(1xx/3xx/4xx/5xx)に人間が読めるテキストを割り当てるエラーコード・メッセージマップ(PDFlibErrorMessage)を備えた構造化された内部ロガー(TPDFlibLogger)を追加(TPDFlibのLoggerプロパティからアクセス可能) TTaskプールを使用し、ワーカーごとに1つのTPDFlibインスタンス(TPDFlibはスレッドセーフではありません)とスレッドごとのCoInitialize(GDI+アパートメントの安全性確保用)を使用して、指定されたページ範囲を1ページにつき1つのファイルにレンダリングするRenderPagesToFilesParallelを追加(CPUバウンドのラスタ出力において、CPUコア数に対してほぼ線形にスケールします)
Version 3.178.0
Added
- Windowsシステムストア("MY"、"Root"など)内のすべての証明書を列挙し、サブジェクト、発行者、シリアル番号、有効期間、HasPrivateKey、およびQualified(eIDAS QCStatements拡張、OID 0.4.0.1862.1.7、PDFlibASN1に新規内蔵されたDERデコーダー経由で検出)を返す
EnumCertificatesを追加(従来のCN指定による単一証明書制限SetSignProcessCertFromStoreを置き換えます) - 列挙によって取得した生のPCCERT_CONTEXTハンドルで署名証明書を選択する
SetSignProcessCertFromStoreByHandleを追加し、呼び出し元がSubject CNだけでなく、任意の基準(適合性フィルター、有効性、フィンガープリント)で証明書を選択できるように改善 - 描画エリアが矩形と交差するテキスト、ベクターパス、および画像XObjectsを完全に削除する(コンテンツストリームを編集するため、単に覆い隠すだけの
MaskRectとは異なり、削除されたコンテンツは復元できません)RedactRegionを追加(オプションで黒塗りおよび/Redact注釈を付与可能。PDFlibContentModelのCTM追跡型コンテンツストリームアナライザーFindInstructionsInRectを使用) - CryptDecodeObjectExを使用せずにインプロセスで証明書の拡張情報を検査するため、最小限のDERデコーダー関数(
DERDecodeLength、DERFindExtensionByOID)をPDFlibASN1に追加
Version 3.177.0
Added
- ベクターForm XObjectキャプチャを介して既存のページを新しいレイアウトに構成するページステッチAPIを追加(コンテンツストリームの単純連結とは異なり、完全なベクター再現性を保持します):
StitchPageOverlayは指定位置およびオプションの不透明度で一方のページをもう一方のページにオーバーレイし、StitchPagesSideBySideは新しい幅広のページに2つのページを左右に配置し、StitchPagesVerticallyはページ範囲を新しい縦長のポスタースタイルのページにスタック - 新しい
Lib/PDFlibWatermark.pasユニットに、組み合わせ可能なウォーターマークテンプレートレイヤーを追加:9点配置(wpTopLeft〜wpBottomRightおよびwpCustom)を備えたTPDFlibWatermarkBase、TPDFlibTextWatermark、TPDFlibImageWatermark、および共有ページ範囲全体にサブウォーターマークのリストを再帰的に適用するTPDFlibCompositeWatermarkを実装 - ウォーターマークテンプレート自身のページ範囲と設定に処理を委譲する、便利なエントリーポイントとして
TPDFlib.ApplyWatermarkを追加
Version 3.176.0
Added
RenderPageToFile、RenderPageToStream、RenderPagesToFiles、およびRenderDocumentToFileで受け入れられる整数のOptions値に1対1でマッピングされる、名前付きレンダリング出力形式定数(PDF_RENDER_BMP、PDF_RENDER_EMF、PDF_RENDER_EMFPLUS、PDF_RENDER_EMF_DUALなど)を追加- 単なる整数の代わりに名前付きメタファイルバリアント(mfEMF、mfEMFPlus、mfEMFDual、mfWMF)を受け入れる、
TPDFlibMetafileFormat列挙型および便利なメソッドRenderPageToMetafileStreamandRenderPageToMetafileFileを追加 - 古いGDI専用コンシューマーとの互換性のために、同じメタファイルにGDIコマンドとGDI+コマンドの両方を記録するEMF+ Dual出力モード(Options値 11 / mfEMFDual)を追加
- レンダリングされたページを拡張メタファイル(CF_ENHMETAFILE)、DIBビットマップ(CF_DIB)、ページのUnicodeテキスト(CF_UNICODETEXT)、またはこれら3つすべてを同時にWindowsクリップボードに配置する、
TPDFlibClipboardFormat列挙型およびRenderPageToClipboardを追加 RenderPageToClipboardで使用される低レベルのWin32クリップボード配置ヘルパーを含む、新しいLib/PDFlibClipboard.pasユニットを追加TPDFlibViewerに完全なモニターごとのDPI認識(Per-Monitor DPI Awareness)を追加:新しい公開のScreenDPIプロパティ、GetDpiForWindow(GetDeviceCapsへのフォールバックあり)を介してホストモニターのDPIを自動検出するCreateWndオーバーライド、およびウィンドウがモニター間を移動したときにレイアウトを再構築しビットマップキャッシュをクリアするWM_DPICHANGEDハンドラーを実装- レンダラーレベルでEMF+ OnlyとEMF+ Dualの記録を選択するための
TPDFRenderer.SetEMFPlusMetafileTypeを追加
Fixed
RenderPageToFileのリファレンスページにおいて、Optionsの値リストがPageの行に誤って配置され、Optionsのセルが空になっていた不具合を修正
Version 3.175.3
Added
- 任意の
TDataSet(FireDAC、ClientDataSet、クエリ結果)を、スタイリッシュなヘッダー、ゼブラストライプ、右寄せの数値列、および自動改ページを備えたページ分割されたPDFテーブルにレンダリングするLib/PDFlibTableExport.pasユニットを追加し、さらにFireDAC経由でRAD Studioのcustomer.FDSサンプルをロードしてエクスポートするDemo/Delphi/DataSetExportコンソールデモを追加
Version 3.175.2
Added
- FastReport、QuickReport、およびReportBuilderで最小限のレポートを構築し、対応するAddonsブリッジを介してPDFにエクスポートするエンドツーエンドのDemo/ReportBridgesプロジェクトを追加(エンジンのソースパスとゲートシンボルを提供する専用のbuild-ReportBridges.cmdが付属し、標準のデモビルドがプロジェクトをスタブとしてコンパイルし続けるように設計されています)
Version 3.175.1
Added
- CCITT G4およびFlateベースラインに対して、SymbolExtract、SkipBlackDots、BlackDotSize、およびLossyLevelの組み合わせをスイープするDelphiのJBIG2オプションマトリクスデモを追加(行ごとのPDF、CSV、および概要出力を提供)
- 軸方向および放射方向のRGBシェーダー、Coons-patchメッシュシェーダー、および塗りつぶし、境界線、テキスト色として適用されるカスタムタイルパターンをカバーするDelphiのパターンショーケースデモを追加
- Group 3 1-D、Group 3 2-D、およびGroup 4圧縮をBlackIs1およびInterpolateオプションビットと比較するDelphi의 CCITTファクスマトリクスデモを追加(各出力サイズと生成された/Filter名を報告)
- 作成済みのレポートを、それぞれエンジンのネイティブオブジェクト、メタファイル、およびDrawCommandサーフェスを介してPDFlibPasのPDFにレンダリングする、Addons配下のFastReport、QuickReport、およびReportBuilderエクスポートブリッジを追加
Version 3.175.0
Changed
- WorkflowGalleryデモを拡張し、テキストハイライト塗りつぶし、マークアップスタイル、ノートアイコン、フリーテキスト、キャレット、およびスタンプ注釈を付随するCSVおよびHTMLレポートに記録する注釈バリアントマトリクスを追加
Version 3.174.0
Changed
- C++BuilderのAdvancedWorkflowMatrixデモを拡張し、アクションナビゲーション、PDF/AおよびAcroFormワークフロー、フォント診断、ストリーミング配信、および最新のスキャン圧縮ヘルパーを生成されたマトリクスレポートにマッピング
Version 3.173.0
Added
- 1つの生成されたPDFバイトバッファを使用した、ストリーミングWebおよびCGI PDF出力、ページサムネイル検証、およびウォーターマーク配信ワークフロー向けのDeliveryWorkflowMatrix Delphiデモを追加
Version 3.172.0
Added
- 順序指定された兄弟要素の挿入、子の作成、サブツリーの削除、および親、兄弟、レベル、移動先ページ、開状態、タイトルの詳細を含む先行順アウトライン列挙のための、アウトラインツリーの便利なAPIを追加
Version 3.171.0
Added
- CJKおよびUnicodeフォントパス、TrueTypeサブセット更新、インストール済みフォントの検出、ドキュメントフォントの列挙、およびフォント診断レポート向けのFontDiagnosticsMatrix Delphiコンソールデモを追加
Version 3.170.0
Added
- Canvas DCマイグレーション、生のコンテンツおよびパスのエントリーポイント、Delphiカラーヘルパー、パターン塗りつぶしテキスト、ウォーターマーキング、ページサムネイルワークフロー、およびレンダリングされた検証プレビュー向けのCanvasMigrationMatrix Delphiコンソールデモを追加
Version 3.169.0
Added
- オプショナルコンテンツの印刷/エクスポートポリシー、Pattern/Form XObject合成、透明マスク比較、PDF/A-1bの成功および失敗例、AcroFormアクションワークフロー、アピアランス再構築、および可視署名テンプレート向けの専用のLayerCompositionMatrix、TransparencyMaskMatrix、およびComplianceFormWorkflowMatrix Delphiコンソールデモを追加
Version 3.168.0
Added
- 画像圧縮戦略の選択、スキャン圧縮、JPEGレンダリング品質、および暗号化された権限プロファイル監査について、生成されたPDF、CSV、およびHTMLレポートを提供する専用のImageCompressionMatrixおよびSecurityPermissionMatrix Delphiコンソールデモを追加
Version 3.167.0
Added
- 呼び出し元が手動で整数のビットマスクを構成する代わりに、明示的なオプションスイッチを使用できるように、JBIG2ビットマップエンコーディング、EMFインポートオプション、AcroFormイベントアクション、およびチェーンアクション用の名前付きヘルパーAPIを追加
Version 3.166.0
Added
- 高度なキャンバスマイグレーション、EMFインポート、画像圧縮、AcroForm、署名、セキュリティ、PDF/A、オプショナルコンテンツ、パターン、およびForm XObjectのワークフローをC++Builderプロジェクトのエントリーポイントにマッピングする、PDF、CSV、およびHTML出力を備えた実行可能なC++Builder AdvancedWorkflowMatrixコンソールデモを追加
Version 3.165.0
Added
- ドキュメントを開く際のアクション、ドキュメントレベルのJavaScript、埋め込みファイルリンク、リモートGoToリンク、AcroFormイベントアクション、Submit/Reset/Hideリンクヘルパー、およびチェーンNextアクションを実証し、PDF、CSV、およびHTML出力を提供するDelphiのアクションナビゲーションマトリクスデモを追加
Fixed
- AddLinkToFile、AddLinkToFileEx、AddLinkToFileDest、およびローカルファイル起動リンクが無限ループすることなく、1つの注釈を作成して戻るようにリモートファイルリンクヘルパーを修正
Version 3.164.0
Added
- Delphi の PDF/A ガードマトリクスデモを追加し、PDF/A モード設定、透過、ブレンドモード、暗号化、JavaScript、マルチメディア、埋め込みファイル、および PDF/A-3 の関連ファイルワークフローについて、早期拒否または許可パスの判定をチェックし、PDF、CSV、HTML のレポートを生成
Version 3.163.0
Added
- FastReport、QuickReport、ReportBuilder、DBGrid、およびカスタムキャンバスの書き出し経路向けに、明示的な ReportAdapter ブリッジマトリクスを追加し、生成された CSV と HTML のマッピング出力に加えて、再利用可能なアダプタ戦略を示す PDF ページも含めた
Version 3.162.0
Added
- キャンバス移行、EMF インポート オプション、画像圧縮比較、AcroForm のアクションワークフロー、空の可視署名、セキュリティ権限、PDF/A-1b チェック、オプションコンテンツ、タイリングパターン、Form XObject、DBGrid 風テーブル出力、大容量ファイルのピークメモリ報告向けの具体的な出力を生成する高度なワークフローデモマトリクスを追加
Version 3.161.0
Added
- コンパクトな open-document action 構築、フォームフィールド可視性イベントアクション、TColor とグレーの色設定、direct raw content、path、text、matrix の content stream 挿入のための Delphi ヘルパーを追加
Version 3.160.0
Added
- ビットマップから JBIG2 へのスキャン画像圧縮、1 回で行う画像マスクと color-key 透過設定、GoTo アクションの連鎖、JavaScript または既存アクション割り当て用の読みやすい AcroForm イベント名のための Delphi ヘルパーを追加し、さらに
ImportEMFFromFileExとImportEMFFromStreamExのOptionsフラグでビットマップ読み込みの強制、EMF カラー画像の JPEG 再圧縮、有効化、GDI+ 処理制御の要求を可能に拡張 ImportEMFFromFileExとImportEMFFromStreamExを拡張し、Optionsフラグでビットマップ読み込みの強制、EMF カラー画像の JPEG 再圧縮の有効化、GDI+ 処理制御の要求を可能にした
Version 3.159.1
Changed
SaveToStreamと bound output stream 保存を改善し、大きな PDF stream object を各 stream object ごとに 1 つの中間出力文字列へコピーする代わりに、制限付きチャンクで書き出すようにした
Version 3.159.0
Added
- 指定した画像を描画またはフィットして直後にハンドルを解放する image placement ヘルパーを追加し、1 回限りの画像生成ワークフローでピークメモリを抑える Delphi、DLL、ActiveX エントリポイントを用意した
- しきい値変換と isolated black-pixel cleanup を行ってからスキャン画像圧縮ワークフローへ進める 1-bit BMP レンダリング用に
RenderPageToMonochromeFileExを追加した
Version 3.158.1
Added
- 再利用可能な report-style export、RichEdit-to-EMF の rich text import、page-thumbnail、annotation、form XObject、table、compression、JavaScript、bound-stream 出力シナリオをまとめた Delphi ワークフローデモを追加した
Version 3.158.0
Added
- Delphi、DLL、ActiveX のエントリポイントを持つ metadata encryption control APIs を追加し、
SetEncryptMetadataで unencrypted XMP metadata streams を持つ Standard-security PDF を書き込み、GetEncryptMetadataで保留中または読み込まれた/EncryptMetadata状態を報告できるようにした
Version 3.157.0
Added
- Delphi、DLL、ActiveX のエントリポイントを持つ direct tiling-pattern drawing APIs を追加し、
BeginTilingPatternが一時的な pattern cell drawing surface を作成、EndTilingPatternがそれを再利用可能な pattern として登録、CancelTilingPatternが名前付き pattern を残さずに作成を破棄するようにした
Version 3.156.0
Added
- Delphi の bound-output stream ヘルパーとして
BeginOutputToStream、EndOutputStream、CancelOutputStream、OutputStreamActiveを追加し、streaming、web、report-export コードが targetTStreamをバインドし、既存の chunked writer で完了させるか、ストリーム所有権を取らずに保留中の target をキャンセルできるようにした
Version 3.155.0
Added
Abort、Aborted、ResetAbortを Delphi、DLL、ActiveX 呼び出し側向けに追加し、アプリケーションが instance を cancelled としてマークして、フラグがクリアされるまで save または append output operations の開始を防げるようにした
Version 3.154.0
Added
- 画像インポート オプションと in-memory sources 向けの page-thumbnail ヘルパー、group name による optional-content group の検索と状態設定、document-open 時に named destination へジャンプするための
SetOpenActionNamedDestinationを追加した
Fixed
GetDestNameは、名前付きドキュメントオープンアクションから返される配列を含め、明示的な宛先配列ハンドルを解決するようになりました
Version 3.153.0
Added
- 連鎖した form actions、Hide と ImportData の field trigger、initial optional-content group states、optional EMF imports、color-key transparent image imports のための便利な APIs を追加した
Version 3.152.0
Added
- テキスト描画用の自動 URL link creation、CCITT Group 3/4 image import helpers、JBIG2 direct-image helpers、EMF extended import wrappers、image mask attachment helpers、visible signature field creation、JavaScript、SubmitForm、ResetForm ワークフロー向けの form-field event/action helpers を追加した
Version 3.151.0
Added
DrawPie、DrawChord、DrawEllipticPie、DrawEllipticChordを追加し、明示的な closed circular / elliptic arc drawing を outline、fill、または fill-and-outline モードで行えるようにした
Version 3.150.0
Added
NewGraphicsStateとSetGraphicsStateを追加し、fill transparency、stroke transparency、line width、line cap、line join、miter-limit 設定をまとめた再利用可能な ExtGState resource を作成できるようにした
Version 3.149.1
Fixed
- Form XObject と miter-limit メソッドの重複した ActiveX dispatch ID を修正し、late-bound COM 呼び出し側が各メソッドを曖昧さなく解決できるようにした
Version 3.149.0
Added
SetMiterLimitを追加し、miter join を使う path の stroke miter-limit ratio を制御できるようにした- DLL API と ActiveX API を通じて
BeginFormXObject、EndFormXObject、CancelFormXObjectを公開しました
Version 3.148.0
Added
- 再利用可能な Form XObject builder APIs を追加し、
BeginFormXObject、EndFormXObject、CancelFormXObjectで通常の page drawing calls を使って再利用可能な template を描画し、captured-page drawing APIs で繰り返し配置できるようにした
Version 3.147.0
Added
SetTextTilingPatternとSetLineTilingPatternを追加し、captured-page の tiling patterns を text、underline、stroked graphics に対して描画命令を重複させず再利用できるようにした
Fixed
- ストローク用 shader と tiling-pattern の色は、非ストローク色状態を更新する代わりに、ストロークパターン色オペレーターを書き込むようになりました
Version 3.146.0
Added
BeginOptionalContentとEndOptionalContentを追加し、既存の content stream を書き換えずに、以降の描画命令だけを optional content group でマークできるようにした
Fixed
- optional content、tagged PDF、artifact スコープが content stream の末尾で閉じられたとき、scope-closing marked-content operators が直ちに flush されるようにした
Version 3.145.0
Added
SetTransparencyExを追加し、既存の PDF 1.4 auto-upgrade 動作を維持したまま、その後に描画する text と graphics に対して fill と stroke の透明度を個別に設定できるようにした
Version 3.144.0
Added
AddLinkToNamedDestinationを追加し、リンク作成時に target page を解決せずに、ページの hotspot から同一文書内の named destination へ移動できるようにした
Fixed
- 注釈のないページでは annotation action readers が空の annotation cache を参照せず、action なしを返すようにした
Version 3.143.0
Added
- フォームフィールド action management APIs を追加し、既存 action を field trigger に関連付けたり、型付き trigger action を確認したり、primary または additional field actions を削除したりできるようにした
Fixed
FormFieldJavaScriptActionは PDF/A 文書と無効な trigger 名を拒否し、非準拠の field action dictionaries を書き込まないようにした
Version 3.142.0
Added
- action chaining APIs を追加し、呼び出し側が URI、named、JavaScript の next-actions を既存の annotation、outline、form-field action に追加し、
GetActionNextCountとGetActionNextInfoで連鎖した action を確認できるようにした
Version 3.141.0
追加
- ページ上のホットスポットから JavaScript を使用せずに標準の PDF アクションを介して AcroForm フィールドの送信またはリセットを実行できるよう、
AddLinkToSubmitFormとAddLinkToResetFormを追加しました
Version 3.140.0
追加
- インクリメンタルアップデートのワークフローにおいて、更新内容を最初に
AnsiStringとして実体化するのではなく、呼び出し元が指定したストリームへ直接書き込めるようAppendToStreamを追加しました
変更
SaveToStreamが対象のストリームへ直接シリアライズするようになり、AppendToString(1)が元のソースバイトを一時バッファにコピーすることなく、インクリメンタルアップデートのセクションのみを返すようになりました
Version 3.139.0
追加
- 汎用的な注釈プロパティタグの代わりに名前付きの読み取りアクセサーを通じてスレッド化された注釈の返信を検査できるよう、
GetAnnotReplyToとGetAnnotReplyTypeを追加しました
Version 3.138.0
追加
- フォント診断、画像サンプリング、色空間の検出、読み込み時間、および JSON、CSV、HTML のレポートを組み合わせて PDF を一括検査するための、Delphi 向け
DocumentInspectionWorkbenchサンプルを追加しました
Version 3.137.0
追加
- ページの画像検出、デコードされた画像のバイト数、およびページの色空間の検出を CSV および HTML のタイミングレポートとともに測定するための、Delphi 向け
ImageDecodeBenchmarkサンプルを追加しました
Version 3.136.0
追加
- ドキュメントのフォント埋め込み、サブセット化、Standard 14、CID、Type3、および不明なフォントの数を1回の呼び出しで要約するための
GetDocumentFontDiagnosticsとTPDFlibFontDiagnosticsを追加しました
Version 3.135.0
追加
TPDFlibSignatureVerifier.VerifySignerCertificateChainは、Windows CryptoAPI を使用して埋め込まれた署名者証明書チェーンを構築するようになり、チェーンが Windows の基本信頼ポリシーを満たす場合にのみvsValidを返します。一方、自己署名証明書やその他の信頼できない署名者証明書の場合は、VerifySignatureのコンテンツの整合性の結果を変更せずにvsInvalidを返します
Version 3.134.0
修正
TPDFlibSignatureVerifier.VerifySignatureは、レガシーのadbe.pkcs7.sha1署名を検証するようになり、署名されたダイジェストが対象の/ByteRangeのバイトと一致する場合はvsValidを返し、対象のコンテンツが変更された場合はvsInvalidを返します
Version 3.133.0
追加
- 選択されたページ間でレンダラーの設定を再利用しながら、任意のページ範囲を番号付きの出力ファイルにレンダリングするための
RenderPagesToFilesおよびDARenderPagesToFilesを追加しました
Version 3.132.0
追加
- 指定された範囲のすべてのページで、上部または下部の固定マージンにテキストを配置する便利なスタンパーである
AddPageHeaderおよびAddPageFooterを追加しました。左/中央/右揃えと、トークンの展開(&P現在のページ、&N総ページ数、&D日付、&Tドキュメントのタイトル、&&リテラルのアンパサンド)をサポートします StampTextおよびStampImageでsoUnderlayを指定した場合、新しいコンテンツレイヤーを先頭に追加することで、既存のページコンテンツの下にコンテンツを真に配置するようになりました(以前はsoOverlayのように上に描画されていました)。これは新しいPrependContentLayerページツリーメソッドによってサポートされています
Version 3.131.0
追加
- 選択されたページのコンテンツを拡大縮小する
ScalePage(ScaleX, ScaleY, Anchor)を追加しました。すべてのコンテンツレイヤーをq sx 0 0 sy tx ty cm ... Qグラフィックス状態ブロックでラップし、MediaBox と CropBox のサイズを変更します。アンカーには、左下を原点に維持(0)、コンテンツを中央に配置(1)、または左上を維持(2)を指定できます - 新しい
ekPath要素タイプでEnumPageElementsを拡張しました: 構造化コンテンツモデルを介してコンテンツストリームから抽出されたベクトルパス(バウンディングボックス、ポイント数、クロージャフラグ、ペイントオペレーター)も各ページで報告されるようになりました
Version 3.130.0
追加
- 再保存時に読み込まれたドキュメントを縮小する 3 つのファイルサイズ最適化 API を追加しました:
SubsetEmbeddedFontsは、FontSub.dll のCreateFontPackageサービスを通じて、埋め込まれたすべての TrueType フォントプログラム(FontFile2)を、ドキュメントが実際にレンダリングする Unicode 文字にまで削減します。DownsampleImages(MaxDPI, Quality, Filter)は、ターゲット DPI を超える各画像の XObject をデコードし、リサンプリング(ボックスまたはバイリニア)して、JPEG または PNG として再エンコードします。NormalizeLZWStreamsは、Predictor パラメータを保持したまま、LZWDecode でまだフィルタリングされているすべてのストリームを、既存の LZW デコーダーと Flate エンコーダーを通じて FlateDecode に書き換えます
Version 3.129.0
追加
- 以前は読み取りと解析のみをサポートしていた 4 つのシェーディングタイプに対するメッシュシェーディング作成 API を追加しました:
NewRGBFreeFormTriangleMesh(ShadingType 4、フリーフォームグーロートライアングル)、NewRGBLatticeTriangleMesh(ShadingType 5、ラティスフォームグーロー)、NewRGBCoonsPatchMesh(ShadingType 6、クーンズパッチメッシュ)、およびNewRGBTensorPatchMesh(ShadingType 7、テンソル積パッチメッシュ)。それぞれ、選択可能な座標/カラーのビット深度とバウンディングボックスを備えたフラットな頂点またはパッチリストから、名前付きメッシュシェーディングパターンを構築します。これは、既存の線形および放射状のシェーダーと同様に、SetFillShader/SetLineShader/SetTextShaderで選択可能です
Version 3.128.0
追加
- ビューア用のサムネイルストリップを追加しました:
TPDFlibThumbnailBarは各ページのサムネイルを表示します。これは行がスクロールして表示されるときに遅延レンダリングされ、下にページ番号が表示されます。サムネイルをクリックすると、アタッチされたビューアがそのページにジャンプします。これにより、ビューアコントロールファミリ (ビューア、ブックマークパネル、検索パネル、サムネイル) が完成します。
Version 3.127.0
追加
- ビューア用の検索パネルを追加しました:
TPDFlibSearchPanel.RunSearchは、アタッチされたドキュメント全体を検索し、ヒットごとにページ番号と一致するテキストを1行でリスト表示します。ヒットをクリックすると、ビューアがそのページにジャンプします。
Version 3.126.0
追加
- ビューア用のブックマークパネルを追加しました:
TPDFlibOutlineViewerはドキュメントのアウトラインツリーをインデント付きでリスト表示し、クリックするとアタッチされたビューア (AttachViewer経由) をブックマークの移動先ページにジャンプさせます。これは、後のサイドパネルで共有される再利用可能なパネルベースクラスの上に構築されています。
Version 3.125.0
追加
- ビューアコントロールにテキスト選択機能を追加しました: マウスの左ボタンでドラッグして選択し、Ctrl+C を押すか
CopySelectedTextを呼び出して選択範囲をクリップボードにコピーします。キャプチャされたテキストはSelectedTextプロパティから利用でき、上から順に並べられ、バンド間には改行が含まれます。 - 四角形のページ領域のテキストを直接返す
GetTextInRegionを追加しました。これはマウス選択で使用されるのと同じブロックベースのルックアップであり、カスタム選択インターフェースで利用できます。
Version 3.124.0
追加
- ビューアコントロールがバックグラウンドスレッドで隣接するページを事前レンダリングするようになったため、前後にページ送りすると次のページが瞬時に表示されます。ワーカーは独自のドキュメントインスタンスを使用し、UIをブロックすることなく、完了したレンダリングをキャッシュに渡します。
- ビューアにリンクの対話性を追加しました: リンク注釈をクリックすると、ページ番号と
GetAnnotActionInfoが生成するのと同じ型指定されたアクションの概要 (Webアドレス、ドキュメントの移動先、名前付きアクションなど) を伴ってOnLinkClickが発生します。LinkActionAtPagePointは、カスタム処理用に基になるヒットテストを公開します。
Version 3.123.0
追加
- ビューアコントロールに連続スクロール機能が追加されました:
SetDisplayModeはTPDFlibViewerを単一ページ表示とドキュメント全体の連続的な垂直スクロールの間で切り替えます。ビューポートに表示されているページのみがレンダリングされ、現在のページはスクロール位置を追跡します (ページが表示されるときにOnPageChangeが発生します)。 - レンダリングされたページは LRU (Least Recently Used) ビットマップキャッシュに保持されるようになったため、前後にスクロールしても再レンダリングされません。メモリ予算のデフォルトは 128 MB で、
SetCacheLimitを使用して調整できます。予算が縮小または上限に達した場合は、最も古いページがキャッシュから破棄されます。 - ビューアにマウスホイールのスクロールとキーボードナビゲーションを追加しました: PageUp / PageDown (単一ページモードではページ単位、連続モードではビューポート単位)、矢印キー、Home および End がサポートされます。
Version 3.122.0
追加
- インタラクティブな PDF ビューアコントロールを追加しました:
TPDFlibViewerは VCL スクロールコントロールであり、ファイルからドキュメントを開くか既存のTPDFlibインスタンスにアタッチし、選択されたレンダリングエンジン (GDI+、Cairo、または PDFium) を介してページを表示します。また、ページナビゲーション (OnPageChangeイベントを伴うGoToPage/NextPage/PrevPage) とズームコントロール (固定パーセンテージ、幅に合わせる、またはページに合わせる。コントロールのサイズ変更時に自動的に再計算されます) を提供します。ビューポートより広いページはスクロールし、狭いページは中央に配置されます。 - IDEでドラッグアンドドロップで使用できるように、losLab PDF パレットページにコントロールを登録するデザインタイムパッケージ (
Package\PDFlibViewerPkg.dpk) を追加しました。
Version 3.121.0
追加
DrawTextにおける複雑なスクリプトの自動シェーピング機能: アラビア語、ヘブライ語、インド系、またはその他の複雑なスクリプト文字を含むテキストが自動的に検出およびシェーピングされるようになりました。コードを変更しなくても、文脈に依存する文字形式、必須の合字、右から左への順序が正しく出力されます。標準の14フォント名は、メトリック互換のインストール済みフォント (Helvetica は Arial に、Times は Times New Roman に、Courier は Courier New に) にマッピングされ、GetTextWidthは同じシェーピングパスを通じて測定されるため、配置の一貫性が保たれます。ラテン語、キリル文字、ギリシャ文字、および CJK テキストは、既存の描画パスをバイト単位でそのまま維持します。- 自動ルーティングを切り替えるための
SetTextShapingを追加しました (デフォルトで有効。シェーピング前の完全な動作を復元するには 0 を渡します)。
Version 3.120.0
変更
- シェーピングされたテキストのコンパニオンフォントは、保存時にドキュメントに表示されるグリフのみにサブセット化されるようになったため、出力ファイルが劇的に縮小されます (1メガバイトを超える完全なフォントプログラムが、使用されるグリフのみに縮小されます)。サブセット化されたフォントは、そのグリフ番号付けを維持し、サブセットタグが付けられた
BaseFont名とグリフごとの実際の/W幅を持ち、シェーピングされた各グリフを元のソース文字に逆変換する ToUnicode マップを取得します。これにより、DrawShapedTextの出力をコピーまたは抽出すると、lam-alef 合字の背後にある両方の文字を含む、元の文字列が返されます。
Version 3.119.0
追加
- 複雑なスクリプトのテキスト描画を追加しました:
DrawShapedTextは、アラビア語、ヘブライ語、およびその他の複雑なスクリプト文字列を描画する前にシェーピングします。文脈に依存する文字形式、lam-alef などの必須の合字、右から左への順序がすべて正しく出力されます。また、フォントプログラム全体を埋め込むコンパニオンの Type0 (Identity-H) フォントを介してシェーピングされたグリフを書き込むため、独自の文字コードを持たない形式でも正確にレンダリングされます。コンパニオンフォントはフォントフェイスごとに1つ作成され、呼び出し間で再利用されます。 GetShapedTextWidthを追加しました。これは、同じシェーピングパスを通じてテキストを測定するため、合字テキストはその実際の描画幅で測定されます。これをシェーピングされた段落の右揃えや中央揃えに使用します。
Version 3.118.0
追加
- 追加 the foundation for complex-script text shaping: a new Uniscribe (usp10.dll) binding turns Arabic, Hebrew and other complex-script strings into correctly ordered and shaped glyph runs — contextual Arabic forms, mandatory ligatures such as lam-alef, and right-to-left ordering — reporting each glyph's font glyph index, advance and source-character cluster; this is the shaping engine that later versions build the drawing path on, and it is loaded lazily so platforms without Uniscribe simply keep the existing per-character path
Version 3.117.0
追加
- 追加 ICC profile introspection:
GetOutputIntentICCInfoparses the ICC profile attached to the document's OutputIntent and reports its version, device class, data colour space, profile connection space, rendering intent and component count — useful for inspecting the print condition of PDF/A and PDF/X files; the renderer's ICCBased colour-space handling now also derives the component count from the profile header itself when a shading's colour space carries neither/Alternatenor/N
Version 3.116.0
追加
- 追加 a table-aware text extraction mode:
GetPageTextoption 10 clusters the left edges of the page's text blocks into global column positions and emits tab-separated rows, so tabular layouts extract as ready-to-import TSV with vertically aligned cells staying aligned across rows
Version 3.115.0
追加
- 追加 page imposition:
ImposePagesNUplays every page of the document out on new sheets in an n-up grid (2-up, 4-up, 9-up or any Columns x Rows arrangement) with each page aspect-fit and centred in its cell as live vector content, or — with the booklet option — produces saddle-stitch sheets whose page pairing folds into a booklet when printed duplex and stacked
Version 3.114.0
追加
- 型付きアクションリーダー
GetAnnotActionInfoおよびGetOutlineActionInfoを 4 つの追加のアクションタイプ (Hide (隠しターゲットの数と hide/show フラグ)、SubmitForm (送信 URL とフィールド数)、ResetForm (フィールド数)、および ImportData (ソースファイル)) に拡張し、名前付きアクション (NextPageなど) の名前のペイロードを公開するようにしました。両方のリーダーが 1 つのパーサーを共有するようになったため、注釈リンクとブックマークは同じ情報を報告します
Version 3.113.0
追加
- 追加 form-field formatting helpers:
SetFormFieldNumberFormat(decimal places, separator style, negative style and currency placement),SetFormFieldPercentFormatandSetFormFieldDateFormat(Acrobat date picture strings such asmm/dd/yyyy) each write the standard Acrobat formatting JavaScript pair onto the field's additional actions — a keystroke filter plus a display formatter — so conforming viewers validate input and render formatted values without hand-written JavaScript
Version 3.112.0
追加
- 追加 Sound annotation creation:
AddSoundAnnotationFromFilereads an uncompressed PCM WAV file (8 or 16 bit, mono or stereo) and embeds its samples behind a speaker-icon annotation as a/Soundstream in the signed encoding the PDF sound machinery expects, completing the round trip with the existingGetAnnotSoundToFile/GetAnnotSoundToStringreaders
Version 3.111.0
追加
- 追加 threaded annotation replies (ISO 32000-1 §12.5.6.3):
AddAnnotationReplyappends a reply to any existing annotation as a hidden Text annotation whose/IRTreferences the target with the/RTreply relationship, so Acrobat and other viewers show it threaded under the target in the comment panel; combine withAddAnnotationStateand the FDF comment interchange for complete collaborative-review round trips
Version 3.110.0
追加
- 追加 mesh and function-based shading rendering, completing coverage of all seven PDF shading types: free-form Gouraud triangle meshes (type 4), lattice-form Gouraud meshes (type 5), Coons patch meshes (type 6) and tensor-product patch meshes (type 7) are decoded from their bit-packed data streams — including shared-edge patch flags,
/Decodevalue mapping and optional colour/Functionramps — and painted through the Cairo engine's native mesh gradients; function-based shadings (type 1) are approximated by sampling the shading function over its domain into a fine patch grid; supported colour spaces cover DeviceRGB, DeviceGray, DeviceCMYK and ICCBased alternates (the GDI+ engine has no mesh gradient primitive and leaves mesh-shaded areas unpainted)
Version 3.109.0
追加
- コンテンツ編集フレームワーク (フェーズ 4) にテキストレベルの編集を完了して追加しました:
TPDFContentProgram.GetTextRunsは、ページのテキスト表示命令を、それぞれでアクティブなフォントリソースとサイズとともに列挙し (save/restore のネストを通じてフォントの状態を追跡します)、ReplaceTextRunは表示されたテキストをインプレースで置き換えます。これは、古いテキストをマスクしてその上に再描画するオーバーレイベースのアプローチとは異なり、元の位置、フォント、および色を維持する真のコンテンツストリームの置換です
Version 3.108.0
追加
- 追加 an object model for page geometry to the content editing framework (phase 3):
TPDFContentProgram.LiftPathraises a path object (move/line/curve/rectangle construction operators plus the clipping and painting operators that end it) into an editableTPDFPathof subpaths and segments;TPDFPath.Transformapplies an affine matrix to every point (move, scale, rotate or skew existing artwork);LowerPathwrites the modified geometry back over the original instructions, ready forWritePageContentLayer
Version 3.107.0
追加
- コンテンツ編集フレームワーク (フェーズ 2) を拡張し、
TPDFContentProgramの命令レベルの利便性を追加しました:InsertFromSourceはコンテンツのスニペットを解析し、その命令を任意の位置にスプライスします。SetOperandはソース構文から単一のオペランドを書き換えます (座標の番号の付け替え、塗りつぶしの色の変更)。OperandTextはオペランドを読み戻します。InstructionGroup、FindNextOp、およびFindNextGroupは、オペレーターまたは ISO 32000-1 オペレーターカテゴリごとに命令リストをナビゲートします
Version 3.106.0
追加
- 追加 the first phase of the structured content editing framework:
ParsePageContentLayerdecodes a page content layer into an editableTPDFContentProgram— a list of instructions, each one PDF content operator (all 73 operators of ISO 32000-1 Table 51) with its decoded operand objects — andWritePageContentLayerserialises the program back into the page, so callers can parse, inspect, delete or reorder drawing instructions and rewrite the page;GetPageContentLayerCountreports the number of content layers, which are edited independently; the emitter is behaviour-preserving (an unmodified round trip renders pixel-identically), unknown operators survive unchanged and inline images are carried verbatim
Version 3.105.0
追加
- 追加 a reading-order text extraction mode:
GetPageTextoption 9 returns the page text in visual reading order using recursive whitespace analysis (XY-cut), so multi-column layouts come out column by column — a full-width heading first, then the whole left column, then the right column — instead of interleaving the columns line by line as the geometric top-then-left orderings do
Version 3.104.0
追加
- 追加 signer-certificate introspection to the signature verifier:
GetSignerCertificatedecodes the PKCS#7 payload of the first signature field and returns a typed summary of the embedded signer certificate — subject and issuer display names, the serial number in conventional hex form, the UTC validity window (NotBefore/NotAfter) and a convenience flag reporting whether the certificate is currently within that window; the signer is matched among the embedded certificates by issuer and serial number
Version 3.103.0
追加
- 追加
NewRGBRadialShader, the radial counterpart ofNewRGBAxialShader: registers a named two-circle radial gradient (ShadingType 3, ISO 32000-1 §8.7.4.5.3) blending between two RGB colours, with optional colour extension beyond the circles; select it with the existingSetFillShader,SetLineShaderorSetTextShaderto paint circular “glow” fills, strokes and text
Version 3.102.0
追加
- 追加 radial (ShadingType 3) gradient rendering (ISO 32000-1 §8.7.4.5.4): the page renderer now paints two-circle radial shadings used by
shoperators and shading-pattern fills, in addition to the previously supported axial (ShadingType 2) gradients; supported through both the GDI+ and Cairo raster engines with multi-stop colour functions, DeviceRGB/DeviceCMYK/DeviceN/Separation/ICCBased colour spaces and/Extendhandling
Version 3.101.0
追加
- 追加 cloudy border effects (ISO 32000-1 §12.5.4):
SetAnnotCloudyEffectturns the border of a Square, Circle, Polygon or FreeText annotation into a “revision cloud” of connected semicircles by writing the/BEborder effect dictionary, with intensity 1 or 2 matching Acrobat's Cloudy styles and 0 removing the effect again;GetAnnotCloudyEffectreads the setting back (0 = no cloud, else the 1..2 intensity)
Version 3.100.0
追加
- 追加 annotation review states (ISO 32000-1 §12.5.6.3):
AddAnnotationStaterecords a review status change for an existing annotation by appending a hidden Text annotation whose/IRTpoints at the target and whose/State+/StateModelcarry the status, supporting theReviewmodel (None/Accepted/Rejected/Cancelled/Completed) and theMarkedmodel (Unmarked/Marked) used by Acrobat's comment-review workflow;GetAnnotStateandGetAnnotStateModelread the recorded strings back from any annotation (empty when absent)
修正
- 修正 a load-time failure that prevented applications built with recent development versions from starting (a Windows certificate-name lookup was bound to a non-existent DLL entry point), and repaired compile regressions in the FDF comment import, page-range rotation and signature-flag paths
Version 3.99.0
追加
- ドキュメントのフィンガープリントとページ遷移の読み取り API を追加しました:
GetDocumentFileIDは、トレーラの/ID配列(16進エンコードされた最初の要素)から永続的なドキュメント識別子を返し、安定したキャッシュキーやドキュメントのフィンガープリントとして機能します;GetPageTransitionはSetPageTransitionの読み取り側の対応機能であり、保存されている/Transの/S、/Dm、および/Mエントリを逆マッピングすることで、トランジションスタイルを型指定されたTPDFlibPageTransition値として返し、さらに表示時間とトランジション時間を返します
Version 3.98.0
追加
- ページ範囲の回転とサムネイルのイントロスペクションを追加しました:
RotatePageRangeは、指定された範囲の各ページに 0/90/180/270 度の回転を適用します(既存の単一ページ用のRotatePageをラップしているため、呼び出し元でページごとのループが不要になります);HasPageThumbnailは、ページが/Thumbエントリを保持しているかどうかを報告します;GetPageThumbnailInfoは、サムネイル画像の XObject の幅、高さ、およびコンポーネントごとのビット数(bits-per-component)を読み取ります
Version 3.97.0
追加
- 拡張注釈プロパティの読み取り機能を追加しました:
GetAnnotColorは/Cカラー配列(0..1 RGB、「明示的な色なし」と「明示的な黒」を区別する HasColor フラグ付き)を読み取ります;GetAnnotBorderWidthは/BS /Wを読み取り、フォールバックとして従来の/Border配列を使用します;GetAnnotOpacityは/CAストロークのアルファ値(デフォルト 1.0)を読み取ります;GetAnnotCreationDateは/CreationDateタイムスタンプを読み取ります;GetAnnotFlagsは/Fの可視性/印刷フラグのバイトを読み取ります
Version 3.96.0
追加
- 読み取り側のセキュリティイントロスペクション API を追加しました:
IsEncryptedは、ロードされたドキュメントが/Encrypt辞書を保持しているかどうかを報告します;GetEncryptionLevelは、書き込み側の暗号化オプションに一致する型指定された強度(0=なし, 1=RC4-40, 2=RC4-128, 3=AES-128, 4=AES-256, 5=AES-256 Acrobat X)を返します;GetUserPermissionsは、直接ビットテストを行うために生の/P権限ワードを返します;IsOwnerPasswordは、ドキュメントが所有者クレデンシャルで開かれたかどうかを報告します
Version 3.95.0
追加
- 高度な印刷およびテキスト置換を追加しました:
PrintDocumentAdvancedは、部数/部単位の印刷(collation)に加えて、型指定されたTPDFlibPrintSettingsレコードを通じてプリンターの完全な DEVMODE(両面印刷、向き、カラー、印刷品質、用紙サイズ、給紙トレイ)を制御し、既存のカスタムプリンタープロファイルメカニズムを介して非デフォルトの各フィールドを適用します;SearchAndReplaceTextは、ページ範囲全体で検索を実行し、一致するごとに元のテキストブロックを不透明な白い長方形でマスクし、PDFtoolkit の SearchAndReplace のオーバーレイ置換動作をミラーリングして、呼び出し元が選択したフォントでブロックの原点に置換テキストを再描画します
Version 3.94.0
追加
- 注釈の FDF インターチェンジ(Acrobat の「コメントのデータ書き出し/データ取り込み」)を追加しました:
ExportAnnotationsToFDFStringおよびExportAnnotationsToFDFは、各ページの/Annotsをたどり、各注釈を FDF の/Annots配列内の/Type /Annotエントリとしてシリアライズし、/Subtype、/Contents、/Rect、/T作成者ラベル、/Subj、および 0 ベースの/Pageインデックスを保持します;ImportAnnotationsFromFDFStringおよびImportAnnotationsFromFDFは、小さなステートマシンを使用してこのような FDF を解析し、一致するページに新しい注釈として各エントリを再作成し、付箋に縮小するのではなく、完全な注釈辞書を保持します
Version 3.93.0
追加
- 署名証明およびフォームフィールドプロパティ API を追加しました:
SetSignProcessDocMDPは、レベル 1/2/3(変更なし / フォームへの入力 / 注釈)の DocMDP/Reference変換をアタッチし、AcroForm/SigFlagsの AppendOnly ビットを設定することで、署名プロセスによって生成される次の署名を証明(作成者)署名に変換します;GetSigFlags/SetSigFlagsは、生の AcroForm/SigFlagsバイトを直接読み書きします;GetFormFieldIsComb、GetFormFieldIsMultiLine、GetFormFieldJustification、およびGetFormFieldAllowedValuesは、フィールドごとの/Ffスタイルビット、/Qテキストクワッディング(quadding)、および/Opt選択配列を型指定された値として公開します
Version 3.92.0
追加
- 添付ファイルのエクスポートおよびフォームフィールドの便利な API を追加しました:
SaveAllAttachmentsは、統合された添付ファイルリスト(ドキュメントレベルの/EmbeddedFilesとページごとの/FileAttachment注釈)をたどり、ファイル仕様名(file-spec name)でディレクトリにすべてのストリームを書き込み、数値の接尾辞を使用して競合を回避します;RemoveFormFieldByNameは、完全修飾のフィールド名をそのインデックスに解決して削除します;RenameFormFieldは、個別のインデックス検索なしにフィールドを名前で名前変更します
Version 3.91.0
追加
- ドキュメント全体の列挙 API を追加しました:
EnumDocumentFontsは、すべての Font 辞書をたどり(必要に応じて最初にFindFontsを呼び出します)、フォントごとに 1 つのTPDFlibDocumentFontを返し、そのオブジェクト番号、/BaseFont名、タイプ、エンコーディング、および埋め込み/サブセットのステータスを含めることで、各エントリでSelectFontを呼び出しスカラーゲッターを照会する必要をなくします;EnumAttachmentsは、ドキュメントレベルの/EmbeddedFiles名前ツリーとページごとの/FileAttachment注釈を単一のTPDFlibAttachmentリストに統合し、各エントリのソース、1 ベースのソースインデックス、ファイル名、MIME サブタイプ、説明、およびバイトサイズを記録します
Version 3.90.0
追加
- 注釈、ブックマーク、およびドキュメントバージョン用の読み取り専用イントロスペクション API を追加しました:
GetPDFVersionは、有効な PDF バージョン文字列(例:1.7)を返します;GetAnnotType、GetAnnotTitle、GetAnnotSubject、GetAnnotContentsEx、GetAnnotModifiedDate、GetAnnotName、およびGetAnnotRectExは、既存のAnalyseAnnotキャッシュに対する名前付きラッパーとして、注釈ごとのフィールドを公開します(これにより呼び出し元はマジックプロパティのタグ番号を必要としなくなります);GetOutlineLevelは、アウトラインルートに対するブックマークの深さを返し、GetOutlineIsOpenはビューアで展開されているかどうかを報告し(負の/Countは折りたたまれていることを意味します)、ブックマークパネルがレンダリングするレイアウト状態をミラーリングします
Version 3.89.0
追加
- HotPDF 姉妹製品から移植された JBIG2 画像エンコーダー ユニット
PDFlibJBIG2Enc(TPLJBIG2Encoder.EncodeToByteArray) を追加しました。これには 2 つのバックエンドがあります: Win64 では C++jbig2enc算術コーダー (ITU-T T.88) がPDFlibJBIG2EncC+HPDFCLibs(thirdparty/Win64x/配下の 228 leptonica/jbig2enc オブジェクト) を介して静的にリンクされ、HotPDF の運用パスに一致するデフォルト バックエンドとして登録されます。他のターゲットで、またはUseExternalEncoderが False の場合、純粋な Pascal MMR フォールバックは CCITT G4 エンコーダーでバイレベル スキャンラインを圧縮し、JBIG2 セグメント ヘッダー (ページ情報タイプ 48 + 即時汎用領域タイプ 38) でラップします - 既存の
PDFlibLZWデコーダーに対応するエンコーダーとして LZW エンコーダー ユニットPDFlibLZWEnc(TPLLZWEncoder.Compress) を追加しました: 9..12 ビット可変長コード、ClearCode/EOI および PDF デフォルトの EarlyChange セマンティクス、さらにオプションで TIFF Predictor 2 (水平差分) を備えた PDF 仕様の/LZWDecodeストリームを生成し、デコーダーを通るラウンドトリップによって元のバイトを再現します
Version 3.88.0
追加
- 既存の
PDFlibCCITTデコーダーに対応するエンコーダーとして CCITT Group 3 / Group 4 (T.6) バイレベル画像エンコーダー ユニットPDFlibCCITTEnc(TPLCCITTEncoder) を追加しました: HotPDF 姉妹製品 (両方とも losLab ライセンスを共有) から移植されたCompressImage/Executeを介してpf1bitビットマップを CCITT G3 1D / G3 2D / G4 (T.6) バイト ストリームにエンコードします。これにより不足していたエンコーダーが補完され、CCITTFaxDecode出力用にモノクロ画像データを生成できるようになりました。さらに完全な画像パイプラインとRenderPageToMonochromeFileG4 出力統合が続きます
Version 3.87.0
追加
- Implemented cryptographic signature verification for detached PKCS#7 signatures:
TPDFlibSignatureVerifier.VerifySignature(previously a stub returningvsUnknown) now recomputes the document digest over the two/ByteRangesegments and validates it against the signedmessageDigestattribute and the signer's public key via the Windows CryptoAPI (CryptVerifyDetachedMessageSignature), returningvsValid/vsInvalidforadbe.pkcs7.detachedandETSI.CAdES.detachedsubfilters; this is the first verification layer and covers digest+signature integrity only (certificate chain, CRL/OCSP revocation and RFC 3161 timestamp-token validation remain out of scope and will be added in later layers)
Version 3.86.0
追加
- マージ時のブックマークごとのコールバックを追加しました:
MergeFileList/MergeFileListFast/MergeFileListStrictがマージされたアウトライン ツリーをリンクする間に、トップレベルのソース アウトラインごとにOnMergeOutlineイベントが発生し、ターゲット ドキュメントに配置される前に入力ブックマークの名前変更 (Title) または破棄 (Skip=True) を呼び出し元に許可します。コールバックは 0 ベースのソース ドキュメント インデックスを受け取るため、呼び出し元はドキュメントごとのポリシーを適用できます
Version 3.85.0
追加
- Windows システム証明書ストアからの署名を追加しました:
SetSignProcessCertFromStoreは名前付きストア ("MY"/"Root"/ ...) からサブジェクトの単純な表示名 (通常は CN、大文字と小文字を区別せずに一致します。空の名前は秘密鍵を持つ最初の証明書を選択します) によって署名証明書を解決し、既存の PKCS#7 署名パイプラインを再利用するため、.pfx/.p12ファイルを提供しなくてもドキュメントに署名できます。SetSignProcessKeysetと組み合わせてCURRENT_USER(1) かLOCAL_MACHINE(2) を選択します
Version 3.84.0
追加
- すでにロードされているドキュメントへのフォント プログラム埋め込みを追加しました:
EmbedMissingFontsはすべてのフォント辞書をトラバースし、BaseFont 名で一致するインストール済みシステム フォント プログラムを読み取り、FontFile2またはFontFile3を書き戻して、プログラムを取得したフォントの数を返します。EmbedFontProgramはインストール済みのシステム フォントを使用して単一のフォントを名前で埋め込みます。EmbedFontProgramFromFileはシステムにインストールされていないフォントのために呼び出し元が提供する.ttfまたは.otfファイルを使用して単一のフォントを埋め込みます - 新規作成されたドキュメントが PDF/A モード以外でも埋め込まれていないシステム フォントを誤って参照しないように、
AddTrueTypeFontのEmbed=0をEmbed=1に昇格させるライター側ガードであるSetEmbedAllFontsを追加しました
Version 3.83.0
追加
- 新しいレンダリング便利 API を追加しました:
RenderPageToMonochromeFileはレンダリングコアを変更することなく、GDI ハーフトーンディザリングを通じて 24 ビットからダウングレードし、ページを 1 ビットモノクロビットマップ(FAX/アーカイブ/OCR シナリオ)としてレンダリングします;RenderPageRegionToFileはページの指定された子矩形(“Left,Top,Width,Height”)のみをビットマップとしてレンダリングし、以前切断されていたRenderPageToDCClipの Clip パイプラインを接続しました
Version 3.82.0
追加
- 新しい FDF フォームデータのエクスポートを追加しました:
ExportFormDataToFDFは現在のドキュメントのすべてのフォームフィールド名と値を独立した FDF ファイル(%FDF-1.2でラップされた/Fields配列)に書き込みます。ExportFormDataToFDFStringは同じ構造の文字列を返し、PDF からフォームデータを分離して保存したり、後で結合したりするのに便利です; 非 ASCII バイトは ISO 32000-1 に従って 3 桁の 8 進数でエスケープされます
Version 3.81.0
追加
- 新しいページおよび構造の便利 API を追加しました:
SetPageTransitionは指定したページにプレゼンテーションのトランジション効果(Split/Blinds/Wipe/Dissolve/Glitter などを含む/Transの 17 種類の標準トランジション)とページの表示時間を書き込みます;GetPageFontCount、GetPageFontIDは指定したページで参照されているフォントを列挙します;SetMeasurementUnitは型付きの単位列挙(従来のピクセル/ミリメートル/インチに twips と points を追加)を受け入れ、ConvertToPointsおよびConvertFromPoints単位変換ヘルパーと組み合わせて使用します;SaveToFileOptionsは圧縮、リニアライズ、および更新日時の保持などの保存オプションを 1 つのレコードに集約します
Version 3.80.0
追加
- 新しいセキュリティと署名の便利 API を追加しました:
EncryptFileExは元の権限ビット整数の代わりに、型付きの名前付き権限セット(低解像度印刷と高解像度印刷などを区別する 8 つの名前付き権限ビットであるTPDFlibUserPermissions)を受け入れます;TPDFlibSignatureVerifier.GetSignatureMetadataは PKCS#7 デコードを必要とせずに、署名辞書から直接フィールド名、Filter、SubFilter、署名時間、理由、場所、連絡先情報、署名者、および ByteRange 構造の検証を読み取ります;PrintDocumentExは 1 回の呼び出しで印刷部数と部数単位で印刷(ソート)を指定します
Version 3.79.0
追加
- 新しい編集の便利 API を追加しました:
MaskRectは指定したページに不透明な塗りつぶし矩形を描画して領域をカバー(マスク/墨消し)します;SetPageThumbnailFromFileはコンテンツストリームの描画状態を汚染することなく、画像ファイルから直接ページの/Thumbをアタッチします;FlattenFormFieldsOnPageRangeはページ範囲で設定されたすべてのフォームフィールドをフラット化(外観を静的コンテンツにベイクし、アクティブなフィールドを削除)します;InsertAnnotationは指定した位置に作成済みの注釈辞書を挿入します;NewMarkupAnnotationはハイライト/取り消し線/下線/波線のマークアップ注釈をワンステップで作成し、quad ポイント、色、透明度を書き込みます;StampText、StampImageはページ範囲で設定された透かし(スタンプ)を適用し、透明度、回転角度、および重ね合わせ位置をサポートします
Version 3.78.0
追加
- 新しいテキストクエリとページ要素列挙 API を追加しました:
SearchTextは指定したページ範囲を検索語で検索し、ヒットごとのページ番号と境界矩形を返し、大文字小文字の区別や完全に一致する単語の検索オプションをサポートします;EnumPageElementsは指定したページのすべてのテキストブロックと埋め込まれた画像要素を列挙し、要素の種類、矩形、テキスト、フォント名、画像 ID を統一して返します;GetTextInAreaExはGetTextInAreaの矩形付きバージョンであり、領域内の各テキストブロックとその境界矩形を返します
Version 3.77.0
追加
- 以前の「書き込み可能だが読み取り不可」という非対称性を補完する、新しい読み取り専用イントロスペクション API を追加しました:
FindOutlineByTitleはタイトルでしおりを検索します(兄弟のみ/子のみ/サブツリー全体の 3 つの深さをサポートします);GetOutlineActionInfoおよびGetAnnotActionInfoはしおりまたは注釈のアクションの種類(GoTo/GoToR/URI/Launch/Named/JavaScript)と、URI、JavaScript、およびファイル名のペイロードを型付き構造体として返します;GetOutlineDestinationInfoはターゲットページ、Fit タイプ(XYZ/Fit/FitH/FitV/FitR/FitB/FitBH/FitBV)、および座標を返します;EnumSignatures、GetSignatureFieldCount、GetSignatureFieldInfoは署名フィールドを列挙し、署名済みかどうかを報告します
Version 3.76.3
変更
- E-Invoice デモの Factur-X EXTENDED プロファイルが標準の conformance 値と標準の guideline ID を使用するようになり、ZUGFeRD 1.0 インボイスに
ChargeTotalAmountとAllowanceTotalAmountの集計要素を追加しました; 全 6 プロファイルが veraPDF(PDF/A 適合)と Mustang(電子インボイスのビジネスルール)の両方の検証に通る PDF/A-3b および PDF/A-3u 出力を生成するようになりました
Version 3.76.2
修正
- Factur-X/ZUGFeRD ハイブリッドインボイスの XMP メタデータが
fx:インボイスプロパティを記述するため PDF/A 拡張スキーマ(pdfaExtension:schemas)を宣言するようになりました; 従来はこの宣言が欠落していたため、生成された PDF/A-3 が veraPDF などのバリデータで不適合と判定されることがありました
変更
- E-Invoice デモのインボイス XML に売手および買手の電子アドレスと売手の電話番号が追加され、より多くのプロファイルが ZUGFeRD/Factur-X ビジネスルールの検証を通過できるようになりました
- E-Invoice デモのプロファイルカタログ、XML 構築、PDF/A-3 生成フローが共有 unit に抽出され、GUI と新しい外部バリデータテストツールの両方が再利用します
Version 3.76.1
修正
- E-Invoice デモで生成をクリックした際のクラッシュを修正しました: PDF/A モードでは組み込みの標準フォントが利用できないため、デモはインボイスページをレンダリングするために TrueType フォントを埋め込むようになりました
変更
- E-Invoice デモは PDF/A-3a オプションを削除し(電子インボイスでは稀にしか使用されません)、XRechnung プロファイルの既定モードを PDF/A-3u に変更しました
Version 3.76.0
変更
- E-Invoice GUI デモがデータ駆動になりました: インボイス番号、発行日、買手と売手、正味金額、税率、通貨が編集可能で、インボイス XML が固定のプレースホルダコンテンツではなくページ上の表示金額と完全に一致します
- デモはプロファイルごとに構造的に正しいインボイス XML を生成します: Factur-X、XRechnung、ZUGFeRD 2.0 は
CrossIndustryInvoice構造を使用し、ZUGFeRD 1.0 COMFORT は明細、税額計、支払条件を含む独自のCrossIndustryDocument構造を使用します - 金額はロケール固有の桁区切りやカンマでスキーマが壊れないよう固定の英語小数点形式で XML に書き込まれ、ユーザ入力は書き込み前にエスケープされます
- デモは XML のライブプレビュー、プロファイルレベルのコンテンツ自己チェック、同名の外部
.validation.json検証レポートの解析を追加し、生成時にリポジトリの sRGB ICC 出力インテントを明示的に読み込みます
Version 3.75.6
追加
SetPDFAModeにモード7を追加し、PDF/A-3 関連ファイルを引き続き許可しながら PDF/A-3u メタデータを生成できるようにしました。E-Invoice GUI デモにも PDF/A-3u オプションを追加し、ZUGFeRD 2.0 BASIC profile は既定で PDF/A-3u を使用します
Version 3.75.5
追加
- Delphi E-Invoice GUI デモを追加しました。Factur-X、ZUGFeRD、XRechnung の profile を選択し、PDF/A-3 ハイブリッド請求書を生成し、対応する XML ファイル名と guideline ID を埋め込み、画面上でコンテナ検証を実行し、XMP 請求書情報、検証問題、抽出した XML を表示できます
Version 3.75.4
追加
- PDF/A-3 関連ファイルと電子請求書 XML のサポートを追加しました。
AddPDFA3AssociatedFileFromStringはメモリ上のバイト列から Catalog/AF関連ファイルを直接作成でき、AddFacturXAssociatedFileFromStringは Factur-X、ZUGFeRD、XRechnung XML の書き込み、XMP メタデータの同期、ファイル名、profile、XMP 名前空間、XML guideline ID の組み合わせの検証を行えます。読み取り側には検出、検証、問題一覧、XML 抽出 API を追加しました
Version 3.75.3
修正
- PDF マージ関数: ローカル変数
GlobalRootObjNum,GlobalRootGenNum,StructRootGlobalObjNum,StructRootGlobalGenNumは条件ブロック内でのみ代入されていたため、Delphi Win64 コンパイラ 26 と 29 (RAD Studio 12 と 16) で W1036 “variable might not be initialized” 警告が出ていましたが、関数エントリでゼロ初期化を追加しました
Version 3.75.2
修正
- マルチバージョン ビルド互換性: 16 進文字列パーサ (
PDFlibStruct) のforループはInt64制御変数を使っていたため、Delphi XE3/XE5 (コンパイラ 26/27) では non-ordinal として拒否されていましたが、Whileループに書き換えて RAD Studio 12 と 14 との互換性を回復しました - Reference XObject チェッカー (
PDFlibPDFUA): ディクショナリ ポインタDが non-stream/non-dictionary 分岐で初期化されておらず、すべてのターゲットでコンパイラ ヒントが出ていましたが、Assignedチェックの前に必ずDを代入するよう分岐を再構成しました CreateFontPackageラッパー (PDFlibFont): Delphi ≤ XE8 での W1035 “return value might be undefined” の誤警告を抑えつつ、新しいコンパイラでの対になる H2077 の dead-assignment ヒントを避けるため、{$IF CompilerVersion}ガードを追加しました- BMP DPI ライターと PDF 増分保存パス: 非推奨の
TStream.Seek(Longint, Word)呼び出しをPosition :=代入に置き換えました (PDFlibPDFium,PDFlibDocument)
Version 3.75.1
修正
- TIFF マルチページ パーサ: 過度に大きいページ数に対するループ終了ガードは、
FPageCountがWord(最大 65 535) だったため> 65535比較が常に false になって機能していませんでしたが、Integerに変更して病的ファイルでもガードが正しく発火するようにしました - CFF/Type 2 文字セット パーサ (Format 1 と Format 2):
Breakの直前にあり、以後読まれないDone := True代入を削除し、コンパイラ ヒントを解消しました
Version 3.75.0
セキュリティ
- 信頼できない埋め込みフォント (TrueType, Type 1, CFF, CMap) の解析を、境界外書き込み、無制限の charstring 再帰、破損したフォント データによる過大なメモリ割り当てに対して強化しました
- 画像デコーダ (PNG, GIF, TIFF, JBIG2, CCITT Group 3 と 4) を、境界外読み取り/書き込み、幅と高さ計算の整数オーバーフロー、悪意ある画像による空パレット参照に対して強化しました
- ストリーム フィルタ (LZW, ASCII85, Flate predictors) を、バッファの過読取り、ゼロ除算、仕込まれたストリーム データでの非終了ループに対して強化しました
- クロス リファレンス、文書再構築、名前ツリーの解析を、不正または循環したクロス リファレンス データによる境界外アクセスと無限ループに対して強化しました
- AES-CBC 復号は、暗号文ブロックの整列を検証し、出力バッファをゼロ初期化するようになり、未初期化のヒープ メモリが復号された文字列やストリームに漏れるのを防ぎます
修正
- SHA-256, SHA-384, SHA-512 の detached-signature ダイジェストは正しい暗号プロバイダで生成されるようになりました。以前は空のダイジェストを返して無効な署名になっていました
- ASCII85 と RC4 のデコードは、切り詰められた入力や空のキーで未初期化データを返したり例外を送出したりしなくなりました
- GIF の背景色は、緑チャネルを複製するのではなく、正しい青チャネルで読み込まれるようになりました
Version 3.74.1
修正
- PAdES 署名検証データ (VRI) サポートにおける E2010 incompatible-types コンパイル エラーを修正し、ライブラリがコンパイルできない問題を解消しました
- 最後に残っていたコンパイラ警告と未使用変数ヒントを削除し、Win32 と Win64 の trial / release ライブラリ ビルドはすべてクリーンにコンパイルされるようになりました
Version 3.74.0
追加
EncryptFileとDecryptFileの direct file paths は、クロス リファレンス データが cross-reference streams にある PDF を、増分更新チェーンや/XRefStmの side section を持つ hybrid-reference ファイルも含めて、より遅い full reader にフォールバックせずに直接読むようになりました。1.25 GB のベンチマーク文書では AES-256 保護が約 4.4 秒から 2.5 秒へ、復号が約 1.7 秒から 1.3 秒へ短縮しました- 圧縮オブジェクト ストリームに格納されたオブジェクトを含む再書き込みでは、cross-reference stream の trailer を出力するようになり、暗号化/復号化後の出力でもそれらのオブジェクトを参照できるままになります
修正
- 増分更新されたファイルで文書
/IDを持たないリビジョンが、直接再書き込み中に以前のリビジョンから継承した識別子を消してしまうことがなくなりました
Version 3.73.2
変更
DASaveAsFileは出力書き込みをまとめ、各オブジェクトの終了キーワードを段階ごとの文字列割り当てなしで見つけるようになり、100 万超のオブジェクトを含む 2 GB のベンチマーク文書の再書き込みが約 57 秒から 11 秒へ短縮されました
Version 3.73.1
変更
EncryptFileとDecryptFileの direct file paths は、スライディング ウィンドウでソースを読み、出力書き込みをまとめるようになったため、数百万オブジェクトを持つ非常に大きな PDF の AES-256 保護が数倍高速になりました。2 GB のベンチマーク文書では、暗号化が約 123 秒から 32 秒へ、復号が約 127 秒から 23 秒へ短縮されました- 読み取りウィンドウに収まるオブジェクト本体は、direct AES-256 再書き込み中にディスクから 2 回取得されなくなりました
修正
- hybrid-reference PDF (
/XRefStmtrailer entry を持つファイル) の direct AES-256 再書き込みは、圧縮オブジェクトを失う危険を避けて full reader にフォールバックするようになりました - direct file path での cross-reference 解析は、cross-reference section からファイル末尾までを一度にすべて読み込まなくなり、
/Prevチェーンがファイル先頭近くを指すマルチギガバイト ファイルでメモリを使い切ることがなくなりました。また、壊れた/Prevチェーンは不完全な文書を生成する代わりに full reader にフォールバックするようになりました
Version 3.73.0
追加
- SigningWorkbench デモは、Windows CryptoAPI を通じて detached CMS 署名 (
adbe.pkcs7.detachedとETSI.CAdES.detached) の完全な暗号ダイジェスト検証を行うようになりました。署名済みバイト範囲は再ハッシュされて CMS 署名と照合され、改ざんされた文書は新しい SG203 失敗コードで報告され、各署名には JSON, CSV, HTML レポート内で 3 状態のdigestValidフィールドが付きます - 新しい SigningWorkbench 自動化スイッチ:
--quietはバッチ要約とレポート パスのみを表示し、--fail-fastは最初の失敗ファイルでバッチを停止し、JSON レポートはライブラリ バージョンも記録します
Version 3.72.0
追加
- ComplianceWorkbench デモは、実務向けのバッチ ワークフローを獲得しました:
--policy-fileは JSON ファイルから監査ポリシーを読み込み、チームが文書ルールをバージョン管理して共有できるようにし、--baselineは実行を以前の compliance-report.json と比較して新しい失敗、修正済みファイル、失敗し続けるファイルを一覧化し、--preflight-detailsは preflight の問題行を JSON と HTML レポートに埋め込みます - 新しい ComplianceWorkbench 自動化スイッチ:
--quietはバッチ要約とレポート パスのみを表示し、--fail-fastは最初の失敗ファイルでバッチを停止し、JSON レポートはライブラリ バージョンも記録します
Version 3.71.2
修正
AppendToFileは、LoadFromFileで読み込んだ同じ PDF ファイルに増分更新を再び追加するようになりました。ストリーミング ローダーは、更新に必要な書き込みハンドルをブロックせずにソース ファイルを読み取り可能なまま維持します
Version 3.71.1
追加
- ComplianceWorkbench と SigningWorkbench のレポートは、検出項目の重大度ラベル、ファイルごとの最高重大度フィールド、バッチ重大度の頻度要約、およびより速いポリシー仕分けのための JSON, CSV, HTML, コンソール出力の対応を含むようになりました
Version 3.71.0
追加
- SigningWorkbench デモの検査は、各署名のリビジョン順と DocMDP 認証レベルを報告し、
--forbid-weak-digest(SG303/SG405) で弱い MD5/SHA-1 証明書署名アルゴリズムと旧式の adbe.pkcs7.sha1 SubFilter を、--forbid-self-signed(SG406) で自己署名証明書を、--require-certified(SG304) で認証署名のない文書をフラグ付けし、署名時刻が証明書の有効期間内にあるかを常に確認するようになりました (SG407) - SigningWorkbench の sign モードは、新しい
--subfilter(sha1, detached, または PAdES baseline signatures 用の cades) と--digest(auto to sha512) スイッチを備えた sign process API を使うようになり、SHA-256 の modernadbe.pkcs7.detachedが新しい署名デフォルトになりました - 新しい
TPDFlibSignDoc.GetSignatureDocMDPLevelByNameの読み取り側アクセサは、ISO 32000-1 §12.8.2.2 に従って署名フィールドの DocMDP 認証レベルを返します
Version 3.70.0
追加
- ComplianceWorkbench デモは、権限、メタデータ、サイズのポリシーも強制するようになりました:
--require-print-allowedと--require-copy-allowedは文書の権限ビット (PC205/PC206) を、--require-authorと--require-creation-dateはメタデータの完全性 (PC306/PC307) を、--max-pagesと--max-file-sizeは文書規模 (PC308/PC309) をチェックします - archive プロファイルは author と creation date も要求し、accessible プロファイルは支援技術が依存する copy permission を要求します
- ComplianceWorkbench レポートは、バッチ全体の failure-code 頻度要約を集計し、ファイルごとのメトリクスには author, creation date, file size, print および copy permission の状態が含まれます
Version 3.69.1
修正
DecryptFileは、owner password しか持たない文書を含む AES-128 と RC4 保護文書から再び暗号化を除去するようになりました。v3.67.4 以来、大きなファイル向けの fast path はこれらの文書を通常の復号パスに渡す代わりに誤った password (error 404) と報告していましたが、AES-256 文書は影響を受けていませんでした
Version 3.69.0
追加
- 新しい SigningWorkbench Delphi デモ: 1 つの PDF またはディレクトリ全体の署名フィールドを検査する署名および証明書のワークベンチ コンソール ツール (SubFilter, signing time, ByteRange coverage, 有効期限チェック付きの signing certificate)、PKCS #12 証明書で PDF をバッチ署名し、PFX ファイルを監査します。各違反は安定した policy failure code (SG101–SG501) に対応し、結果は 18 の文書言語すべての localized demo guides 付きで JSON, CSV, HTML レポートとして書き出されます
TPDFlibSignDoc上の新しい署名読み取り側アクセサ:GetSignatureFieldNamesは文書の署名フィールド一覧を返し、GetSignatureTextValueByNameは /M signing time, /Name, /Reason, /Location, /ContactInfo, /Type エントリを返し (暗号化文書では復号付き)、GetSignatureValueByNameはフィールド名ごとに /Filter, /SubFilter, /Contents, ByteRange エントリを返します
修正
CertCloseStoreの Windows CryptoAPI import を修正しました。flags parameter なしで宣言されていたため、証明書ストアを閉じると Win32 で呼び出し側スタックを破損する可能性がありました
Version 3.68.0
追加
- 新しい ComplianceWorkbench Delphi デモ: PDF/A と PDF/UA preflight、暗号化ルール、PDF バージョン範囲、Tagged PDF、linearization、document title を対象とする設定可能な compliance policy に対して 1 つの PDF またはディレクトリ全体をチェックするバッチ ポリシー監査コンソール ツールで、各違反を安定した policy failure code (PC101–PC501) として報告し、automation-friendly exit codes 付きで JSON, CSV, HTML レポートを書き出します
- この新しいデモには、archive, accessible, secure, web といった共通要件セットをまとめた policy profiles が同梱され、明示的な command-line switches でプロファイル値を上書きでき、18 の文書言語すべてに対する localized demo guides を含みます
Version 3.67.4
変更
EncryptFileとDecryptFileは、大きな classic-xref PDF に対して direct AES-256 rewrite path を使うようになり、各オブジェクトを読み込んで再シリアル化する代わりにファイル間で暗号化データをストリーミングします。2 GB のベンチマーク ファイルは、Direct File API を通じて file-to-file の AES-256 暗号化/復号を result code 1 とLastErrorCode0 で完了します
修正
- direct AES-256 の string-token 処理を修正し、ディクショナリ区切りが hex strings と誤認されず、暗号化された空文字列が正しく復号されるようにしました
Version 3.67.3
変更
- DrawShapes、CreateWithImage、CreateTable、EditFormField、EmbeddedFonts の Delphi および C++Builder デモを拡充し、生成される PDF が最小限の単一操作出力ではなく、実用的な描画、画像配置、表レイアウト、フォームフィールドのスタイル設定、フォント埋め込み比較のワークフローを示すようになりました
修正
- CreateTable デモで表を描画する前に明示的な A4 ページサイズを設定するよう修正し、Delphi サンプルにあった未初期化のページサイズ変数を回避しました
Version 3.67.2
修正
- v3.67.0 で導入されたローダー側の遅延検出に起因する回帰を修正しました。コンテンツ機能検出が保存時に実行され、明示的に要求された保存バージョン (SetInformation 0) やロックされたバージョン (LockSaveVersion) を上書きする可能性があり、その結果、厳密な低バージョン保存が高バージョンのコンテンツを拒否しなくなったり、ロックされたバージョンが上方へ変動したりしていました。検出は明示的なバージョン設定より前に実行されるようになり、読み込まれたものではなく新規作成されたドキュメントでは実行されないため、v3.67.0 より前のバージョン制御動作を復元しつつ、遅延読み込みによる節約効果を維持します
Version 3.67.1
変更
- 機能検出は、オブジェクト辞書だけを調べてストリーム本体をスキップする浅い解析でストリームオブジェクトを読むようになりました。検出ではストリーム内容を調べないため、大きな画像ストリームを含むドキュメントでは検出中に本体バイトを読まずに済み、検出パスのオブジェクト読み取り時間を約 40% 短縮します (2 GB、160 万オブジェクトのファイルで約 20 s から約 13 s)。検出される機能リストと有効な PDF バージョンは同一のままです
Version 3.67.0
変更
- ローダー側のコンテンツ機能検出が遅延実行(lazy)になりました – 読み込み時に文書全体をスキャンする代わりに、実効 PDF バージョンや検出された機能リストを照会したとき、または文書を保存したときの初回利用時に実行され、ページ数の取得・テキストや画像の抽出・レンダリングのようにバージョンを照会せず再保存もしない読み取り専用の処理ではスキャンを完全にスキップし、非常に大きな文書の読み込み時間を約 80% 短縮し(2 GB・160 万オブジェクトのファイルで約 56 秒から約 10 秒へ)、検出された機能セットと実効 PDF バージョンは検出の実行後も同一に保たれます
Version 3.66.1
変更
- 非常に大きなマルチページ文書の読み込みが大幅に高速化されました:ローダー側のコンテンツ機能検出が、結果に影響しないルールチェック(すでに一致したルール、および特定のオブジェクトに適用できないルール)をスキップするようになり、検出される機能と実効 PDF バージョンを同一に保ちながら、巨大なファイルの読み込み時間をおよそ半分に短縮します
Version 3.66.0
変更
- 非常に大きな複数ページのドキュメントの読み込みで使用するピーク時のメモリ量が大幅に削減されました。ローダー側のコンテンツ機能検出はオブジェクトモデル全体を一度に展開しなくなりました – ランダムアクセスリーダーを通じて 1 オブジェクトずつストリーミング処理します – これにより、大きなファイルでの working set のピークが約 90 % 削減され、検出された機能と有効な PDF バージョンは変わりません。
Version 3.65.0
追加
- 2 GB を超える文書を開けるようになりました。文書サイズを約 2 GB に制限していた従来のメモリ内バッファを廃止しました。
変更
- ファイルから PDF を読み込む際、ドキュメント全体をメモリにバッファリングするのではなく、オブジェクトデータをソースから必要に応じて読み込むようになり、大きなファイルでのピークメモリ使用量を大幅に削減しました。
- ファイルから読み込んだ文書は、その文書を閉じるかクリアするまで、共有読み取りアクセスでそのファイルを開いたままにします。
修正
- %PDF- ヘッダーの前に先頭バイトが含まれる文書の読み込み、および不正な cross-reference データの処理における堅牢性を向上しました。
Version 3.64.0
変更
- 非常に大きい、またはオブジェクト数が多い PDF に対する Direct API 操作 – EncryptFile、DecryptFile、DASaveAsFile – が大幅に高速化され、停止しなくなりました。約 160 万オブジェクトの 2 GB の文書はこれまで処理を完了できませんでしたが、現在は約 1 分で暗号化が完了し、処理時間はオブジェクト数の増加で急激に悪化するのではなく、文書サイズにほぼ比例するようになりました。
- 大きな文書の暗号化が大幅に高速化されました – これまで数分かかっていた操作が、数秒から約 1 分で完了します – 暗号化強度、暗号文の互換性、出力に変更はありません。
Version 3.63.0
修正
- 内部のバイトオフセットが32ビット境界(約2 GB)を超える大きなPDFファイルを読み込む際のプロセスのクラッシュを修正しました。ローダーが全体で64ビットオフセットを使用するようになり、2 GB近いファイルが確実に読み込まれ、2 GB以上のファイルはクラッシュせずに読み込みエラーを適切に報告します。
Version 3.62.0
変更
- AES-256-CBC の暗号化と復号が、64 ビットだけでなく 32 ビット Windows でもハードウェアアクセラレーション対応の AES-NI パスを使用するようになりました。AES-NI を持たないプロセッサーでは、引き続き移植可能な C 実装に自動的にフォールバックします。暗号文はすべてのプラットフォームで変わりません。
Version 3.61.0
変更
- AES-256-CBC の暗号化と復号が、64 ビット Windows でハードウェアアクセラレーション対応の AES-NI バックエンドを使用するようになりました。AES-NI を持たないプロセッサーでは、移植可能なソフトウェア実装に自動的にフォールバックします。暗号文はすべてのプラットフォームで同一であり、変わるのはパスワードベースの AES-256 PDF 暗号化の速度のみです。
Version 3.60.0
追加
MergeFileListは入力ドキュメントの論理構造(Tagged PDF)ツリーを、最初のドキュメントのツリーのみを保持して残りを到達不能なオブジェクトとして残すのではなく、単一の到達可能な構造ツリーに統合するようになりました。最上位の構造要素、parent tree(ページの/StructParentsと注釈の/StructParentキーを再マッピング)、/RoleMap、/ClassMap、/IDTreeが結合され、統合されたカタログは Tagged としてマークされます(/MarkInfo /Marked true)。
変更
/RoleMap、/ClassMap、/IDTreeのキーが競合するドキュメントを統合する場合、最初の出現が保持されます。高速パス(MergeFileListFast)は引き続き構造情報を破棄します。
Version 3.59.0
変更
MergeFileListは文書を 1 回のパスで結合するようになり(O(N²) ではなく O(N))、多数のファイルの結合が大幅に高速化されます。また、高速パスに追加された複数文書のしおり結合も利用できます。- 既定では、
MergeFileListは読み取り不能または暗号化された入力ファイルをスキップして残りの結合を続行するようになり、最初の不正なファイルで処理全体を中断しなくなりました。以前の「最初の失敗で停止する」動作に戻すには、新しいMergeFileListStrictを使用してください。 - 入力の論理構造(Tagged PDF)オブジェクトは
MergeFileListによって保持されるようになりました(高速パスは引き続き破棄します)。
追加
MergeFileListStrictはファイルリストを結合しますが、最初の読み取り不能または暗号化されたファイルで停止し、以前のバージョンの厳密な「失敗で停止」セマンティクスを保持します。
Version 3.58.0
追加
MergeFileListFastがすべての入力ファイルの文書アウトライン(しおり)を結合するようになり、高速マージ経路で AcroForm フォームフィールドに加えてしおりも保持されます。- 結合されたしおりは階層とページ移動先を保持し、結合出力のトップレベルのしおり数は入力の合計と一致します。
Version 3.57.1
変更
- 非常に大きな文書での Direct File API 保存(
DASaveAsFile、DASaveToStream、DASaveCopyToStream)が大幅に高速化しました。変更されていないオブジェクトは再解析・再シリアライズせず、ソースファイルのバイトをそのまま再利用します。60,000 ページ / 883 MB の文書の再保存が約 33 秒から約 23 秒に短縮されました。
Version 3.57.0
変更
- 複数ドキュメントのマージにおける
TPDFlib.MergeFileListFastのパフォーマンスをさらに最適化しました。追加ドキュメント内の変更されていない非ストリームオブジェクトは、バイトレベルの間接参照シフトを適用して元のソースバイトから直接再利用されるようになり、解析・再シリアライズのラウンドトリップを省略して複数ページドキュメントのスループットを向上させます。マージ出力は変わらず、ページ数も同一です。 - ストリームを含むオブジェクトや構造ツリーに属するオブジェクトは引き続き既存のデコードパスを使用するため、より高速なバイトパスは安全であることが証明できる場合にのみ適用されます。
Version 3.56.44
変更
TPDFlib.MergeFileListFastは、マージメタデータを事前確保し、最初のドキュメント内で変更されていないオブジェクトを元のソースデータから書き出すよう最適化されました。高速な複数ファイルマージで、メモリの再配置と不要なオブジェクトのデコード/出力処理を削減します。- Delphi
MergePDFGUI は、高速モードの結果ログをまとめて書き込み、メモ全体のテキストを繰り返し走査しないようになりました。マージ完了後も大きな入力リストで応答性を保ちやすくなります。
Version 3.56.43
変更
- 通常の
TPDFlib.MergeFileListマージ経路を最適化し、追加の入力ごとに大きくなる中間 PDF をコピーする代わりに中間一時ファイルを交互に使うようにしました。これにより、複数ファイルのワークフローでディスク I/O を減らしつつ、既存の戻り件数の契約を維持します。
Version 3.56.42
追加
- 保存時に暗号化 stream を復元する際の入力バッファーと結果のエイリアスケースを対象に、以前の失敗を露呈した 504 KB の大きなペイロードを含む AES 回帰テストを追加しました。
変更
- 通常 API の
LoadFromFile、Encrypt、SaveToFile、再読み込み、Decrypt、SaveToFileのワークフローは、大きな読み込み済み PDF でも再び完了し、コピー削減型の AES-CBC 復号最適化も維持します。
修正
- v3.56.41 で導入したバッファーベースの AES-256 復号パスを修正し、呼び出し側が暗号文バッファーを提供した同じ
AnsiStringに復号結果を代入してもアクセス違反が発生しないようにしました。
Version 3.56.41
追加
- ページ数と未変更のファイルコピーが必要で、完全な通常オブジェクトグラフを構築したくない Direct Access ワークフロー向けに
TPDFlib.DACopyFileを追加しました。 - Delphi
HugeFileBenchmarkdemo にdirect-copy行を追加し、大きなファイルの集中テスト向けに--opsと--skipフィルターを追加しました。
変更
- バッファーベースの AES-CBC 復号パスを追加し、読み込み済みの文字列と stream の復号で使用することで AES-256 復号を最適化し、大きな暗号化 stream での余分な暗号文コピーを削減しました。
Version 3.56.40
変更
- Delphi と C++Builder の
HelloWorldデモは、同じビルドして実行するワークフローを保ちながら、ドキュメント情報、選択した標準フォントでの出力、スタイル付きタイトルブロック、簡単なベクター描画、次に試すデモへの案内を含む、より充実したスターター PDF を作成するようになりました。 - Delphi と C++Builder のすべてのデモノートを、ブラウザーで読みやすい
Readme.htmlページに置き換えました。パスワード、制限付きファイル、署名結果に関する補助ノートも含まれ、デモのインデックスは HTML ノートへ案内するようになりました。
Version 3.56.39
変更
- Direct file API の保存処理は、クロスリファレンス検索テーブルを線形に構築するようになり、オブジェクト数が非常に多い PDF や密なページツリーを持つ PDF で
DASaveAsFileと関連する直接保存パスが大幅に高速化されました。 - 最適化された writer は同じ free-object chain セマンティクスを維持しつつ、完全な xref 生成中のオブジェクト番号の反復スキャンを避けます。これにより、公開 API や出力契約を変えずに大規模な直接保存ワークフローを改善します。
Version 3.56.38
変更
- 通常 API の
LoadFromFile、Encrypt、SaveToFile、再読み込み、Decrypt、SaveToFileのワークフローは、明示的なDecryptの前まで暗号化状態を保持し、大きなレガシー PDF に対する直接ファイル API の動作と一致するようになりました。
修正
- 通常 API の暗号化出力を修正し、
Encryptが AES-256 セキュリティデータを書き込む前に trailer の/IDを作成または保持するようにしました。これにより、暗号化された PDF は再読み込み後もEncryptionStatusで検出できます。
Version 3.56.37
追加
TPDFlib.ComparePreflightReportsを追加しました。これはプレーンテキストの preflight レポートを行単位で比較する機能で、変動するGenerated:タイムスタンプ行を無視し、安定したレポート内容が一致する場合は空文字列を返します。- Delphi の
PreflightReportデモは単一ファイルモードで--compare <file>をサポートし、生成されたテキストレポートが baseline と異なる場合に UTF-8 の.diff.txtレポートを書き出して終了コード 2 を返します。
Version 3.56.36
追加
- Delphi の
PreflightReportデモは--input-dir、--output-dir、--recursiveによるディレクトリのバッチ実行に対応し、PDF ごとに<basename>.preflight.<ext>形式のレポートを書き出します。
変更
- バッチモードは UTF-8 の
preflight-summary.csvを書き出し、各入力 PDF、pass/fail 状態、問題数、生成されたレポートのパスを記録します。自動化向けの既存の終了コード契約は維持されます。
Version 3.56.35
追加
ReportFormat = 3により、TPDFlib.CreatePreflightReportExとTPDFlib.SavePreflightReportExで CSV 出力を生成できるようになりました。レポートのメタデータ、選択した各適合性チェック、個別の問題コードとメッセージ、最終サマリーを UTF-8 行として出力します。- Delphi の
PreflightReportデモは--format csvと--csvに対応し、コマンドラインの preflight 実行結果を JSON の後処理やテキスト抽出なしでスプレッドシートや簡単な CI パーサーへ渡せるようになりました。
Version 3.56.34
追加
- 形式指定に対応した
TPDFlib.CreatePreflightReportExとTPDFlib.SavePreflightReportExAPI を追加し、既存のテキスト専用 API を維持したまま、PDF/A および PDF/UA-1 の preflight レポートをプレーンテキスト、JSON、または単体 HTML として生成できるようにしました。 - Delphi の
PreflightReportデモは--format text|json|htmlと--json/--htmlの短縮指定に対応し、同じコマンドラインワークフローで人が読むレポートと機械処理向け CI アーティファクトを出力できます。
Version 3.56.33
追加
TPDFlib.CreatePreflightReportとTPDFlib.SavePreflightReportを追加し、アプリケーションが組み込みの PDF/A および PDF/UA-1 適合性チェックから再利用可能なプレーンテキストレポートを生成できるようにしました。文字列リストハンドルを手動で列挙する必要はありません。
変更
- Delphi の
PreflightReportデモはライブラリレベルのレポート API を直接呼び出すようになり、コマンドラインワークフロー、選択したチェック、最初の問題で停止するモード、自動化向けの終了コードに焦点を合わせたサンプルになりました。
Version 3.56.32
追加
- 新しい Delphi コンソールデモ
PreflightReportを追加しました。CheckFileComplianceで PDF/A と PDF/UA-1 のチェックを実行し、GetStringListCountとGetStringListItemで問題リストを列挙して、プレーンテキストの preflight レポートを書き出します。
変更
- このデモは
--input、--output、--pdfa、--pdfua、--both、--first-issueの各オプションと、自動化しやすい成功・問題検出・実行時エラーの終了コードに対応しました。
Version 3.56.31
変更
GetCustomKeys(2)现在能够一致地隐藏由库管理的 Catalog 系统条目,包括/OutputIntents、/Extensions、/Requirements、/Collection和/NeedsRendering。
修正
SetPDFAMode関数によって作成される PDF/A 出力設定は、カスタムカタログキーとして表示されなくなりました。これにより、アプリケーションのメタデータ列挙と PDF 準拠構造が分離されます。
Version 3.56.25
変更
- writer 側の GetPDFUADiagnostics に、v3.56.24 の reader
10044と対応するMULTIPLE-H-CHILDREN:Nissue を追加しました。ISO 14289-1 §7.4.4 は、タグツリーノードごとに直接の H 子要素を複数持つことを禁じています。writer 側チェックは、メモリ上の FStructElems ツリーにその違反が含まれる場合に発火します。 - 新しいネストされた CountMultipleHChildren ヘルパーは、ツリーを深さ優先で走査し、各レベルの H 子要素を数えます。このチェックは既存の LIST-STRUCT / LIST-NO-NUMBERING 走査と並行して実行され、同じ FStructElems 走査パターンを共有します。
Version 3.56.24
変更
- PDF/UA-1 監査に ISO 14289-1 §7.4.4 の H タグ一意性チェックを追加しました。
10044は、直接の H 子要素を複数持つ任意の構造ノードを報告します。これは仕様が強構造化ドキュメントで禁じているものであり、同じ制約は全体の構造モードに関係なく任意のタグツリーノードに適用されます。もう一つの §7.4.4 SHALL(ドキュメントは強構造または弱構造のどちらか一方でなければならず、両方ではない)はドキュメント全体のヒューリスティックを必要とするため、この監査からは意図的に除外しています。 - 新しい前順の構造ツリー walker(UAVisitStructNodeForHUniqueness / ScanStructTreeForHUniqueness)は、ノードごとの直接 H 子要素を数え、深さ優先で再帰します。既存の見出し / リスト / 注記 walker と同じ K 形状デコーダーを再利用します。
Version 3.56.23
追加
- 新しい
Lib/PDFlibPDFUAFontInspect.pasは、寛容な SFNT table-directory walker と cmap subtable directory parser を実装します。前の基盤 commit で scaffold として追加した 4281 名の Adobe Glyph List テーブルは、Differences チェック経由で接続されました。SFNT として解析できない program(Type 1 PFB / PFA、OpenType collection、任意のごみデータ)は黙ってスキップします。監査レイヤーでは false positive より false negative を優先します。
変更
- PDF/UA-1 監査に、v3.56.10 の辞書レイヤーチェックが TrueType parser の利用可能になるまで延期していた ISO 14289-1 §7.21.6 の font-program チェック 2 件を追加しました。
10034は、埋め込み SFNT cmap テーブルに symbolic(platformID=3, encodingID=0)エントリしか含まない non-symbolic TrueType program を報告します。§7.21.6 第 1 段落は、program が /Encoding で宣言された codepoint を描画できるよう、少なくとも 1 つの non-symbolic cmap subtable を要求しています。10035は、glyph name が Adobe Glyph List メンバーではない(.notdefを除く)non-symbolic TrueType/Encoding /Differences配列を報告します。§7.21.6 第 3 段落は、すべての Differences エントリが AGL に属することを要求しています。
Version 3.56.22
変更
- PDF/UA-1 監査に ISO 14289-1 §7.18.6 の media clip data チェックを追加しました。
10042は、必須の/CTcontent-type エントリを欠く media clip data dictionary(/S /MCD、任意で/Type /MediaClipにより識別)を報告します。10043は、必須の/Alt配列を欠く同じ dictionary を報告します。ISO 32000-1 Table 274 では両キーを optional としていますが、ISO 14289-1 §7.18.6 は、screen reader が埋め込み multimedia の意味のある説明を読み上げられるよう、これらを required に引き上げています。 - これは PDF/UA deep-audit plan(
.superpowers/plans/2026-05-23-pdfua-deep-audit-plan.md)の Phase 6 です。font-program parser や content-stream parser への依存なしで動作するため、v3.56.0..v3.56.13 シリーズ後の最初の follow-up sub-class です。
Version 3.56.21
追加
- 新しい
SetSignProcessCommitmentTypeは、PAdES-B-B SignerInfo 内に CAdEScommitment-type-indicationsigned attribute(OID 1.2.840.113549.1.9.16.2.16, ETSI EN 319 122-1 v1.2.1 §5.2.3)を出力します。integer code 1..6 を受け取り、よく知られた ETSI commitment OID のid-cti-ets-proofOfOriginからid-cti-ets-proofOfCreationまでに対応します。0 を渡すとクリアします。範囲外の code は拒否されます。 - 新しい
SetSignProcessSignaturePolicyは、CAdESsignature-policy-identifiersigned attribute(OID 1.2.840.113549.1.9.16.2.15, §5.2.9)を出力します。dotted-decimal policy OID、policy document hash の uppercase-hex 文字列、digest algorithm code(1=SHA-1、2=SHA-256、3=SHA-384、4=SHA-512、0=auto/SHA-256)を受け取ります。この attribute はsigPolicyId+sigPolicyHash(OtherHashAlgAndValueSEQUENCE)を持つSignaturePolicyIdSEQUENCE を格納します。
変更
- 両方の attribute は SubFilter が
ETSI.CAdES.detached(PAdES-B-B path)の場合にのみ有効です。既存のrgAuthAttr配列をcontent-typeおよびsigning-certificate-v2と並んで拡張します。PAdES Table 1 row d) は、commitment-type-indicationと PDF Signature Dictionary の/Reasonエントリの併用を禁じています。両方を設定しない責任は caller 側にあります。
Version 3.56.20
追加
- 新しい
AddPAdESDSSVRIは、組み立て中の DSS に Signature VRI subdictionary entry を付加し、ETSI EN 319 142-1 v1.2.1 clause 5.4.2.3 Validation Related Information structure を完成させます。この entry は signature の/Contentsbytes の uppercase-hex SHA-1 を key とし、Cert/CRL/OCSPsub-array は、comma-separated list(例:"0,2,5")として指定された 0-based index で対応する parent DSS stream を参照して埋められます。
変更
- 基盤の
TSmartPDFDocument.AddPAdESDSSWithVRIは、各 cert / CRL / OCSP に対して出力された stream object number を追跡し、それを使って VRI sub-array を parent DSS array がすでに指している同じ stream への indirect reference として書き出します。これにより、VRI entry が parent DSS dictionary と storage を共有するという仕様要件を満たします。VRI が不要な caller 向けに、従来のAddPAdESDSSentry point は変更なしで動作し続けます。 - 各 signature ごとの VRI subdictionary は任意の
/Type /VRImarker を持つため、catalog をTypetag で走査する tooling は、parent path を再解決しなくても構造を認識できます。
Version 3.56.19
追加
- 既存の PAdES-B-B signature に RFC 3161 / RFC 5816 signature-time-stamp(id-aa-signatureTimeStampToken, OID 1.2.840.113549.1.9.16.2.14)を付加する新しい PAdES-B-T workflow を追加しました。
NewPAdESSignatureTimeStampProcessFromFile/FromStream/FromStringは signed PDF を開き、SetPAdESSignatureTimeStampFieldは field 名を指定し、GetPAdESSignatureValueHashHexは TSA へ送信する signer のsignatureValueの SHA-256(または 384 / 512)hash を返し、GetPAdESSignatureCMSBytesは既存 CMS payload を公開し、SetPAdESSignatureCMSBytesは caller が任意の CMS library で組み立てた augmented CMS bytes を受け取り、EndPAdESSignatureTimeStampProcessToFile/ToStream/ToStringは新しい CMS を元の/Contentsplaceholder に差し込みます。 - 新しい
SetSignProcessReserveContentsBytesは、初回署名時に/Contentsplaceholder を広げ、後から付加される augmented CMS が元の予約領域を超えずに収まるようにします。一般的な TSA 発行 TimeStampToken は SignerInfo に 2-6 KB を追加します。余裕を残すにはここに 1024-8192 を渡します。十分な reserve がない場合、augmentation call は13(output overflow)を返します。
変更
BuildPAdESSignatureTimeStampAttributeは、TSA が発行した TimeStampToken をSignerInfo.unsignedAttrsが期待する CMS Attribute SEQUENCE に包む stateless helper です。すでに CMS library を持っている caller は、OID と SET-of の配管を省略できます。- この library は TSA HTTP client を同梱しません。caller が TimeStampToken を取得します(通常は FreeTSA や DigiCert などに対する TSP request + HTTP POST の 30-50 行程度)。Windows CryptoAPI の
CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTRは原理上 library 内 CMS injection を自動化できますが、PAdES が出力する detached SignedData shape ではCRYPT_E_INVALID_INDEX(0x80091008)を返すため、代わりに caller-supplied CMS bytes path を使います。
Version 3.56.18
追加
- 新しい ASN.1 helper の
DER_IntegerFromLittleEndian(Win32CRYPT_INTEGER_BLOBbyte order を処理)とDER_ContextTagExplicit(payload を constructed context-specific tag に包む)により、PDFlibASN1micro-encoder が補完されました。PDFlibCryptoAPIの新しいCERT_INFO/CRYPT_ALGORITHM_IDENTIFIER/CRYPT_INTEGER_BLOB/PCERT_CONTEXT宣言により、sign path は解析済み certificate fields にアクセスできます。
変更
- PAdES
signing-certificate-v2attribute は、RFC 5035(ESSCertIDv2)で定義された任意のIssuerSerialfield を埋め込むようになりました。signing certificate の issuer Distinguished Name はGeneralNames内のGeneralName [4] EXPLICIT directoryNameCHOICE に包まれ、その後に certificate serial number が ASN.1 INTEGER として続きます。serial number bytes は Windows CryptoAPI(CRYPT_INTEGER_BLOB)から little-endian で届くため、OpenSSL や BouncyCastle が同じ field を出力する方法に合わせて、high bit が立っている場合は positive-integer pad byte を追加しつつ big-endian へ反転します。 - issuer name + serial pair を path-building candidate set と照合する verifier(特に strict mode の EU DSS)は、signing-cert-v2 attribute 内で両方の identifier を見つけられるようになりました。以前の v3.56.17 出力は
certHashreference のみを提供していました。
Version 3.56.17
追加
- 新しい
PDFlibASN1ユニットは、SigningCertificateV2属性値の構築に使用される、目的を絞った DER (X.690) マイクロエンコーダ — length prefix、OCTET STRING、SEQUENCE、SET、OBJECT IDENTIFIER — を提供します。このエンコーダは base-128 の OID arc の標準ルールに従い、オプションのhashAlgorithmフィールドが単に SHA-256 のデフォルト値を繰り返すだけになる場合は省略します。これは OpenSSL や BouncyCastle が出力する内容と一致します。
変更
- 組み込みの
ETSI.CAdES.detached署名パスは、構造的に PAdES-B-B 準拠の署名を生成するようになりました。ライブラリは CMS authenticated attributes を自前で構築します —content-type(id-data) と RFC 5035 / RFC 5816 のsigning-certificate-v2(署名証明書の SHA-256 ハッシュ付き) — それをrgAuthAttr経由でCryptSignMessageに渡します。そのフィールドが non-NULL になると、Windows CryptoAPI は PAdES (ETSI EN 319 142-1 v1.2.1 Table 1) で禁止されているsigning-time属性の自動注入を停止します。その結果、得られるSignerInfoは必須属性のみを保持します。 ApplySignatureはETSI.CAdES.detachedを、事前計算済みダイジェストを渡すのではなく、raw-byte パス(adbe.pkcs7.detachedが使用するのと同じパス)にルーティングするようになりました。CryptoAPI は実際に署名されるコンテンツに対してmessageDigestauthenticated attribute を計算するようになり、これは検証者が期待する動作です。- signing-certificate-v2 属性の構築時には SHA-384 と SHA-512 も尊重されます。
hashAlgorithmフィールドはデフォルト値に依存せず、対応するAlgorithmIdentifier付きで出力されます。このコンテキストでは SHA-1 は SHA-256 に静かにアップグレードされます。PAdES-B-B は SHA-1 を許可していないためです (clause 6.2.1)。
Version 3.56.16
追加
- 新しい
SetSignProcessDigestAlgorithmは、署名の message-digest アルゴリズムを選択します:1= SHA-1 (deprecated)、2= SHA-256 (現代のデフォルト)、3= SHA-384、4= SHA-512、0= auto (legacy のadbe.pkcs7.sha1パスを除くすべての SubFilter で SHA-256、当該 legacy パスはバイト安定的な後方互換性のために SHA-1 を維持します)。ETSI EN 319 142-1 v1.2.1 §6.2.1 は MD5 を禁止し、推奨される暗号スイートについては ETSI TS 119 312 に委ねているため、PAdES 署名者は SHA-256 以上を選択すべきです。 - 既存の
SHA1StreamRangeに並ぶハッシュヘルパーとしてSHA256StreamRange、SHA384StreamRange、SHA512StreamRangeを追加しました。署名パスは選択されたアルゴリズムに基づき、これらを使用して PDF ByteRange のダイジェストを計算します。PKCS#7 のSignerInfo.digestAlgorithmOID と実際に書き出されるハッシュバイトは現在一致することが保証されています (以前のコードは、ネゴシエートされたアルゴリズムに関係なく常に SHA-1 のダイジェストを渡していました)。
変更
TPDFlibPFXFile.SignDataはDigestAlgorithmパラメータを受け取り、各 (SubFilter, algorithm) ペアに対して正しい OID を選択するようになりました: detached およびカスタム SubFilter での SHA-256/384/512 には2.16.840.1.101.3.4.2.1/.2/.3(RFC 5754)、legacy のadbe.pkcs7.sha1パスには対応するsha256WithRSAEncryptionファミリの OID を使用します。
Version 3.56.15
追加
- 新しい
SetSignProcessDocTimeStampはサインプロセスを ETSI EN 319 142-1 v1.2.1 §5.4.3 の PAdES Document Time-stamp モードに切り替えます。生成される Signature Dictionary は/Type /DocTimeStampと/SubFilter /ETSI.RFC3161を保持し、禁止されている/M、/Reason、/Location、/ContactInfo、/Nameキーを省略します。さらに外部から取得される RFC 3161 TimeStampToken のために/Contentsに 8192 バイト (または呼び出し元指定サイズ) の hex プレースホルダを予約します。
変更
- DocTimeStamp モードが選択されると、TimeStampToken は外部 TSA から来るためパススルーが自動的に有効化されます。DocTimeStamp モードへ切り替えた後の
SetSignProcessInfo呼び出しは、署名辞書を仕様準拠に保つために silently に無視されます。 - v3.56.8 で追加された既存の PAdES
/Extensions /ESIC自動注入は、その SubFilter がETSI.で始まるため DocTimeStamp もすでにカバーしています。よって Document Time-stamp PDF は追加配線なしで必須のカタログ拡張を宣言します。
Version 3.56.14
追加
- 新しい PAdES Document Security Store (DSS) 拡張 API。
NewPAdESDSSProcessFromFile/NewPAdESDSSProcessFromStream/NewPAdESDSSProcessFromStringはすでに署名された PDF を開き、AddPAdESDSSCertificate/AddPAdESDSSCRL/AddPAdESDSSOCSPは DER エンコードされた検証マテリアルをステージし、EndPAdESDSSProcessToFile/EndPAdESDSSProcessToStream/EndPAdESDSSProcessToStringは ETSI EN 319 142-1 v1.2.1 §5.4.2.2 で規定された/DSS << /Type /DSS /Certs [...] /CRLs [...] /OCSPs [...] >>辞書を含むインクリメンタル更新を書き出します。これは PAdES-B-B / B-T 署名を PAdES-B-LT 長期検証へ昇格させるためのビルディングブロックです。
変更
- DSS プロセスは検証マテリアルを追加するときに、§5.6 の要件に整合してカタログの
/Extensions /ESICエントリを少なくともExtensionLevel 1まで自動 bump します。複数回呼び出すと新しい証明書、CRL、OCSP 応答が既存の/Certs//CRLs//OCSPs配列にマージされ、リビジョンが上書きではなく累積されます。 GetPAdESDSSProcessResult/ReleasePAdESDSSProcessはライフサイクルを完了させ、既存のSignProcessAPI サーフェスと対称です。
Version 3.56.8
変更
- PAdES ベースライン適合: 署名が PAdES SubFilter (
ETSI.CAdES.detachedまたはETSI.RFC3161) で作成されると、文書カタログは ETSI EN 319 142-1 v1.2.1 §5.6 で要求される/Extensions /ESIC <</BaseVersion /1.7 /ExtensionLevel 2>>エントリを自動的に受け取るようになりました。エントリは署名を運ぶ同じインクリメンタル更新を通じて追加され、既存の上位/ExtensionLevelをダウングレードすることはなく、ソース PDF がすでに/Extensionsや/ESICを別オブジェクトとして格納している場合は間接参照に従います。 - SetSignProcessCustomSubFilter によって
TPDFlib経由で作成された PDF に書き出される Adobe 等価の拡張マーカーが/ADBE /BaseVersion /1.7 /ExtensionLevel 8(旧ExtensionLevel 5) になりました。これは PAdES ベースライン署名が使用できる代替宣言と一致します。レベル 5 は ISO 32000-2 フォーム / 3D / RichMedia 機能のみをカバーし、PAdES 拡張を実際には識別していませんでした。
Version 3.56.13
変更
- SetPDFUAMode が有効で文書が保存されるとき、明示的な
ListNumbering属性を欠く L (リスト) 構造要素は/O = List /ListNumbering = Noneを自動的に受け取るようになりました。ISO 14289-1 §7.6 はすべての L タグが番号付けスタイルを宣言することを要求します。新しいApplyPDFUAListNumbering保存時 fix-up は既存のApplyPDFUATabOrder/ApplyPDFUAFormFieldTU/ApplyPDFUAAnnotContents/ApplyPDFUAEmbeddedAFRelationship/ApplyPDFUAStripTrapNetファミリに加わります。 - 特定のリストスタイルを気にする作成者は引き続き EndTag の前に SetStructElemListNumbering を呼ぶ必要があります。自動 fix-up は保存時に ListNumbering 属性が存在しないときのみ発動するため、明示値は保持されます。
- ライタ側の
LIST-NO-NUMBERING:N診断メッセージは、自動 fix-up が保存時に問題をマスクすることを注記するようになりました。ユーザーは欠落属性と自動修復動作の両方を理解できます。
Version 3.56.12
変更
- PDF/UA-1 監査が ISO 14289-1 の 3 つの新しいチェックを獲得しました。
10031は URI アクション辞書が/IsMap = trueを保持する Link 注釈を報告します (§7.18.5 によりコンテンツの別の場所で同等の機能が提供されない限り禁止。正当な IsMap ユースケースを持つ作成者は自身で診断を抑制できます)。10032は/IDエントリを欠くNote構造要素を報告します — §7.9 はすべての Note タグが一意の ID を宣言することを要求します。10033は 2 つ以上の Note タグが同じ/ID値を共有するとき重複ペアカウントを報告します。 - Note ID 衝突検出はソートされた TStringList で ID を収集し隣接ペアを走査することで行われるため、1 つの ID を共有する 3 つの Note のグループは 2 つの重複ペアとしてカウントされます。
- URI アクションチェックは各ページの
/Annots配列を走査し、/Subtype /Linkでフィルタしてから/A /S /URIと/IsMapブール値を検査します。間接参照は各ステップで dereference されるため、分離されたアクション辞書はインラインのものと同じように動作します。
Version 3.56.11
変更
- ISO 14289-1 §7.6 はすべての L (リスト) 構造要素に明示的な
ListNumbering属性を保持することを要求します。10030(リーダ側) とLIST-NO-NUMBERING:N(ライタ側) はそれを省略する L タグを報告します。リーダ側ウォーカは両方の/A形 (単一属性辞書、または辞書とリビジョン整数が混在する配列) をデコードし、owner に関係なく/ListNumberingキーを探します。ライタ側チェックは finalised 構造リストと still-open タグスタックの両方でTPDFStructElem.Attributesから同名を検査します。 - ISO 32000-1 Table 347 で有効な
ListNumbering値はNone、Disc、Circle、Square、Decimal、UpperRoman、LowerRoman、UpperAlpha、LowerAlphaです。監査はキーの存在のみをチェックし、どの値が選択されているかはチェックしません — すべての L タグはこれらのうち 1 つを必要とします。
Version 3.56.10
変更
- PDF/UA-1 監査が ISO 14289-1 §7.21.6 TrueType エンコーディングルールを獲得しました。
10028は/Encoding(または Encoding 辞書内の/BaseEncoding) がMacRomanEncodingでもWinAnsiEncodingでもない非シンボリック TrueType フォントを報告します。10029は/Encodingエントリを保持するシンボリック TrueType フォントを報告します (§7.21.6 第 4 段落により禁止)。 - シンボリック vs 非シンボリックは FontDescriptor
/Flagsビット 3 (マスク4) から決定され、サブクラス 4 の既存UAFontDescriptorSymbolicヘルパを再利用します。§7.21.6 第 1 段落全文 (埋め込み TrueType プログラムに一致する cmap エントリが含まれる必要がある) は TrueType フォントプログラムの解析を要求するためまだ保留中です。上記の辞書レベルルールは TrueType パーサなしで監査が検証できる現実的なレイヤーです。 - §7.21.6 の Differences 配列ルール (AGL のみのグリフ名、Microsoft Unicode cmap の存在) も同じ理由でスコープ外 — フォントプログラム検査を要求します。
Version 3.56.9
変更
- PDF/UA-1 監査が完全な ISO 14289-1 §7.18.4 チェックを獲得しました。
10027は/StructParentが構造ツリーの/ParentTreeを通じて解決されるが/S = Formを持つ構造要素に到達しない Widget 注釈を報告します。前回 v3.56.7 の部分チェック (10026) は/StructParentを完全に欠く Widget のみを捕捉していました。新しいチェックは number-tree ポインタをたどって宛先タグを検証することでルールを完成させます。 - 新しい
NumberTreeLookupヘルパは ISO 32000-1 §7.9.7 の number-tree 形状 (フラット/Numsルート、/Limitsで範囲付けされた中間/Kids) を実装します。/StructParentsページエントリや/PageLabelsラベルの解決が必要な将来の監査はこれを再利用できます。 - Widget 注釈 Form-tag 検証は 2 階層モデルを使用します:
/StructParentなしの Widget は10026として報告され、/StructParentが存在するが/S = Formに解決されない Widget はより具体的な10027として報告されます。これにより同じ違反が両コードでダブルカウントされることを避けます。
Version 3.56.7
変更
- SetPDFUAMode が有効で文書が保存されるとき、各ページの
/Annots配列からTrapNet注釈エントリが自動的に削除されるようになりました。ISO 14289-1 §7.18.2 はTrapNet注釈を禁止します。新しいApplyPDFUAStripTrapNet保存時 fix-up は既存のApplyPDFUATabOrder/ApplyPDFUAFormFieldTU/ApplyPDFUAAnnotContents/ApplyPDFUAEmbeddedAFRelationshipファミリに加わるため、PDF/UA モード文書は silently にTrapNetの残骸を発出することを止めます。 - PDF/UA-1 監査が部分的な §7.18.4 チェックを獲得しました。
10026は/StructParentを欠く Widget 注釈を報告します —/StructParentなしの Widget は構造ツリーから到達できないためForm構造タグにネストできません。完全な構造検証 (ParentTreeを通じて/StructParentを解決し、親/SがFormであることを確認) は後続リリースに残されます。 - ライタ側 GetPDFUADiagnostics は一致する
WIDGET-NO-STRUCTPARENT:Nissue を獲得しました。既存の TRAPNET-ANNOT メッセージは SetPDFUAMode が保存時にこれらを自動 strip することも注記するようになりました。
Version 3.56.6
変更
- PDF/UA-1 監査が ISO 14289-1 §7.4.2 の 2 つの見出し階層チェックを獲得しました。
10024は文書順序で最初の見出し要素が H1 (または H) でないとき報告します。10025は降順シーケンスの見出しレベルスキップ数を報告します (例: H1 の後に H2 なしで H3)。両チェックはネストされた/K形 (単一 StructElem、StructElem / IndRef / MCR の配列) をデコードする 1 回の構造ツリー pre-order ウォークを共有します。 - ライタ側 GetPDFUADiagnostics は一致する
FIRST-HEADING-NOT-H1issue を獲得し、リーダ10024と対応します。以前存在した HEADING-LEVEL-SKIP ライタチェックは「最初の見出しが H2 だった」というスタイルの問題も捕捉する仲間を持つようになりました。
Version 3.56.5
変更
- SetPDFUAMode が有効で文書が後に暗号化されるとき、暗号化権限キー (encrypt 辞書の
/P) は呼び出し元が Encrypt に渡したTPDFExtraPermissionsにppCanCopyAccessを含めていなくても、ビット 10 (マスク$200、「アクセシビリティをサポートするためのテキストとグラフィックスの抽出」) を自動的にセットするようになりました。ISO 14289-1 §7.16 はすべての暗号化された準拠ファイルがアクセシビリティ抽出を許可することを要求し、このビットは見落としやすいものです。このビットをセットすることは常に安全 — 支援技術への追加アクセスのみを許可し、他の抽出パスには許可しません。 - ライタ側 GetPDFUADiagnostics は PDFUAMode がオンで encrypt 辞書の
/Pビット 10 がクリアされているとき発動する新しいENCRYPT-NO-ACCESSissue を獲得しました。これはユーザーが先にEncrypt()を呼んだ後に SetPDFUAMode を呼んだ呼び出し順序エッジケースを捕捉します — 診断は修正された/Pで encrypt 辞書が再発行されるようEncrypt()を再度呼ぶようユーザーに伝えます。
Version 3.56.4
変更
- ライタ側 GetPDFUADiagnostics は 5 つの新しい ISO 14289-1 チェックを獲得しました。これによりインメモリ文書監査はリーダ側 CheckFileCompliance ComplianceTest=2 監査と同じ違反を捕捉します。
SUSPECTS-TRUEは MarkInfo/Suspects=true をフラグします (§7.1: PDF/UA 準拠ファイルは Suspects=false を要求)。ROLEMAP-STANDARD-REMAP:Nは標準構造タグを remap する AddRoleMap 呼び出しをフラグします — §7.1 は標準タグの remap を禁止します。DC-TITLE-MISSINGは空の XMP dc:title をフラグします (DOCINFO-TITLE-MISSING とは別、後者は /Info /Title をチェック)。TRAPNET-ANNOT:Nは TrapNet 注釈をフラグします (§7.18.2 はそれらを禁止)。ANNOT-PAGE-NO-TABS-S:Nはページ辞書 /Tabs が /S でない注釈を運ぶページをフラグします (§7.18.3 はそれらのページに構造ツリータブ順序を要求)。 - ライタ側とリーダ側の PDF/UA-1 監査はおおむね同等になりました: リーダ側監査が保存ファイルで提起するすべての issue は、各関数のフォーマット規約 (改行区切りテキスト vs NNNNN コード文字列リスト) を法としてインメモリ診断からも到達可能です。
Version 3.56.3
変更
- PDF/UA-1 監査が §7.21 フォントチェックを獲得しました。
10020は FontDescriptor がFontFile/FontFile2/FontFile3を欠くすべての非 Standard-14 フォントを報告します (§7.21.4.1: レンダリングされるすべてのフォントはそのプログラムを埋め込まなければならない)。10021は/CIDToGIDMapエントリのない CIDFontType2 子孫を報告します (§7.21.3.2)。10022は埋め込まれたプログラムなしで参照される Standard 14 フォント (Helvetica、Times、Courier、Symbol、ZapfDingbats と bold / oblique バリアント) を指摘します — §7.21.4 NOTE 5 はこれらのフォントの埋め込みに免除がないことを明確にしています。10023は/ToUnicodeCMap を欠き §7.21.7 免除リスト (定義済み MacRoman / MacExpert / WinAnsi エンコーディング、Adobe-GB1 / CNS1 / Japan1 / Korea1 文字コレクションを持つ Type 0、非シンボリック TrueType) に一致しないフォントを報告します。 - Composite Type 0 フォントは両層で検査されます: Type 0 親辞書自体の
/ToUnicode、および最初の子孫 CIDFont の埋め込み //CIDToGIDMap。Type 3 フォントは埋め込みチェックをスキップ (そのグリフはインライン CharProcs) しますが、/ToUnicodeチェックには引き続き参加します。 - 同様のフォント作業のための PDFlibPDFA ヘルパは意図的に共有されていません — 半ダースの短いルーチン (サブセットプレフィックス除去、Standard-14 名前テーブル、FontFile 存在、Symbolic フラグ) は
UA*ヘルパとしてローカルに複製され、PDF/A 監査が PDF/UA を壊さずに進化し続けられるようにし、逆も同様です。
Version 3.56.2
変更
- PDF/UA-1 監査が注釈、埋め込みファイル、optional content をカバーする 5 つの ISO 14289-1 チェックを追加しました。
10015は非空の/Contents代替記述を欠く Link 注釈を報告します (§7.18.5)。これによりスクリーンリーダがリンクターゲットをアナウンスできます。10016と10017は必須の/Fまたは/UFファイル名キーを欠く埋め込みファイル FileSpec 辞書をフラグします (§7.11)。10018は非空/Nameテキスト文字列を省略する optional-content 構成辞書をフラグします (§7.10)。10019は禁止された/ASキーを含む optional-content 構成辞書をフラグします (§7.10)。 - TrapNet と
/Tabs /Sチェックをすでに動かしているページごとの注釈ウォークは、同じパスで Link //Contentsデータも収集するようになり、監査をオブジェクト数に対して O(N) に保ちます。
Version 3.56.1
変更
- PDF/UA-1 監査が 5 つの新しい ISO 14289-1 チェックを獲得しました。
10010は暗号化ファイルでアクセシビリティ抽出権限 (暗号化/Pキーのビット 10) を検証します (§7.16)。10011は XFA XDP パケット内の<dynamicRender>required</dynamicRender>要素を通じて動的 XFA フォームを検出します (§7.15)。10012は/Refエントリを保持する Form XObjects をフラグします — リファレンス XObjects は禁止です (§7.20)。10013はTrapNet注釈をフラグします (§7.18.2)。10014は各ページを走査しページ辞書が/Tabs /Sをセットしない注釈を運ぶページを報告します (§7.18.3) — これによりタブ順序が構造ツリーに従います。 - 5 つの新しいコードはすべて、前回リリースが追加した同じ CheckFileCompliance + GetStringListItem ハンドルペアを通じて流れます — 新しい公開 API サーフェスはありません。
Version 3.56.0
追加
- 新しいリーダ側監査
CheckCompliancePDFUAは外部 PDF を ISO 14289-1 (PDF/UA-1) に対して検証します。任意の入力 PDF (自身の出力、スキャナ出力、サードパーティコンテンツ) を受け付け、CheckFileCompliance が PDF/A 問題を報告するのと同じ方法で PDF/UA-1 違反をリストすることにより、既存の GetPDFUADiagnostics ライタ側チェックを補完します。
変更
- CheckFileCompliance は新しい PDF/UA-1 監査を実行するために
ComplianceTest = 2を受け付けるようになりました。ComplianceTest = 1での PDF/A テストは変更されておらず、issue リストは引き続き既存の GetStringListCount / GetStringListItem ハンドルペアを通じて返ります。 - 最初のカットは §5 (XMP
pdfuaid:part識別) と §7.1 (カタログ/Metadataストリーム、タグ付き PDF マーカー、構造ツリー、ビューアタイトル設定、文書言語、XMPdc:title、/Suspects値、標準構造タグの remap 禁止) の基礎的な PDF/UA-1 適合性ゲートをカバーします。8 つの診断コードが発行されます —10001から10009— 数値範囲を PDF/A の00xxxコードと視覚的に分離しています。 - より深い PDF/UA-1 条項 (セキュリティ、注釈、XObjects、フォントサブセット化) は同じ監査フレームワーク上で後続パッチリリース用に追跡されています。
Version 3.55.6
変更
- 新しく生成されるすべての XMP パケットは uuid:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX の形式の xmpMM:InstanceID プロパティを運ぶようになりました。識別子は Win32 CoCreateGuid を通じて生成され、ISO 19005-1 §6.7.2 (Cor2) と PDF/A ベストプラクティスガイドが推奨するとおり、各生成文書に一意でバージョン非依存のフィンガープリントを与えます。非 Windows ビルド (XMP パケットが空のまま) は影響を受けません。
- xmpMM 名前空間 (http://ns.adobe.com/xap/1.0/mm/) は XMP パケットの SelectionNamespaces の一部になりました; 新しい SetXMPMM と GenerateInstanceID ヘルパは InstanceID 発出の基盤となり、将来の xmpMM:History / xmpMM:DerivedFrom サポートの基礎を提供します。
- PDF/A Extension Schema 記述スキーマ (pdfaExtension / pdfaSchema / pdfaProperty / pdfaType / pdfaField) はこのリリースで追加されていません。カスタム拡張スキーマの作成は現在の SetDublinCore / SetXMPBasic 形を超える複数段階の bag / seq / 構造化プロパティ構築を要求します; この作業は将来のリリース用に追跡されています。カスタム XMP プロパティを宣言する必要がある文書は引き続き LoadFromString パスにフォールバックします。
Version 3.55.5
変更
- PDF/A 文書は保存時に注釈の /F フラグが正規化されるようになりました。ISO 19005-1 §6.5.3 はすべての注釈で Print ビットが 1 で Hidden / Invisible / NoView ビットが 0 であることを要求します; ライタは保存時にそのマスクを適用するようになったため、呼び出し元はビットレイアウトを覚えておく必要がありません。/Subtype /Popup ケースは免除 — popups は他の注釈の子で伝統的に印刷されません。
- AcroForm /NeedAppearances フラグは文書が任意の PDF/A モードにあるとき保存時に強制的に false にセットされるようになりました。ISO 19005-1 §6.9 はフラグが不在または false であることを要求します; 以前はライタは呼び出し元がセットした値をそのまま残していたため、ビューアにオープン時に外観を再生成するよう要求する文書を生成し、呼び出し元が true にセットしていた場合 silently に仕様違反していました。修正はフラグが以前は不在だった文書にも実行されます — ライタはバリデータに曖昧さを残さないために明示的な /NeedAppearances false を発出します。
Version 3.55.4
変更
- AddStandardFont は PDF/A モードでの呼び出しを拒否するようになりました。ISO 19005-1 §6.3.4 は PDF reference の「Standard 14 は埋め込みなしでもよい」免除を撤回します: 準拠ファイルのすべてのフォントプログラムは埋め込まれなければならず、ライブラリは Standard 14 アウトラインを同梱していません。ファサードは silently に 0 を返します; 呼び出し元は実フォントファイルを使う AddTrueTypeFont または AddType1Font に切り替えるべきです。
- AddTrueTypeFont は PDF/A モードがアクティブなとき Embed=0 (埋め込みなし) を Embed=1 (フルフォント埋め込み) に silently に昇格させるようになりました。非埋め込みリファレンスパスはビューアのシステム Arial / Times / Courier インストールへのフォントフォールバックに依存する PDF を生成し、ISO 19005-1 §6.3.4 に違反していました。埋め込みを要求した既存呼び出し元 (Embed=1 または 2) は影響を受けません。
- 非シンボリック TrueType /Encoding 適合チェック (ISO 19005-1 §6.3.7 Cor2 は WinAnsi または MacRoman をエンコーディング名または BaseEncoding として要求し /Differences なし) はこのリリースで追加されていません。なぜならライブラリはすでに非シンボリック TrueType サブセットに対して /WinAnsiEncoding を発出しており、より深い強制はサブセットパスを通じてシンボリック vs 非シンボリックディスパッチを追跡する必要があるからです。v3.51.0 で追加された CheckCompliancePDFA 00034 / 00035 は検証時に非準拠出力をフラグします。
Version 3.55.3
変更
- TrueType ベースの CIDFontType2 フォント辞書は /CIDToGIDMap /Identity を明示的に運ぶようになりました。ISO 19005-1 §6.3.3.2 (Cor2) はすべての埋め込み Type 2 CIDFont にエントリの存在を要求します; PDF reference は暗黙の Identity デフォルトを許可しますが、PDF/A は明示値を要求します。ライタは以前はキーを完全に省略していたため、veraPDF (および v3.51.0 で追加された CheckCompliancePDFA 00033) がファイルをフラグしていました。/Identity 名はライタがすでに暗黙的に生成していた GID-as-CID レイアウトと一致するため、既存文書は同じようにレンダリングされます。
- FontDescriptor /CharSet (Type 1 サブセット用) と /CIDSet (CIDFont サブセット用) は引き続き TODO; ライタはどのグリフ名 / CID がサブセットに入ったかを正確に populate するために追跡する必要があります。v3.51.0 で追加された CheckCompliancePDFA 00031 と 00032 が不在をフラグするため、ユーザーは検証時に issue を見ます。
Version 3.55.2
変更
- AddImageDirectFromString はエントリポイントで PDF/A 非互換フィルタを拒否するようになりました。Filter = 'LZWDecode' を渡すと各 PDF/A パートで拒否されます (ISO 19005-1 §6.1.10 と等価な ISO 19005-2 / -3 ルール)。Filter = 'JBIG2Decode' または 'JPXDecode' を渡すと PDF/A-1 (モード 1 と 2) で拒否されます。PDF/A-2 と PDF/A-3 は ISO 19005-2 §6.2.8.3 の下、ライタ側ゲートが強制しないサブ仕様制約 (カラーチャネル数、ビット深度均一性、METH/APPROX 要件) 付きで JPXDecode を許可します — それらのモードの呼び出し元は依然として JPEG 2000 ストリームが準拠していることを確認する必要があります。ファサードは禁止フィルタが要求されたとき silently に 0 を返します。
- AddImageFromFile / AddImageFromStream を通じてロードされる TIFF、PNG、JPEG、JPEG 2000 入力は影響を受けません: インポータはソースバイトを解凍し FlateDecode (または JPEG ペイロードには DCTDecode) で再エンコードするため、LZW 入力は出力 Filter チェーンに伝播しません。v3.50.0 (00004) と v3.52.0 (00022、00023) で追加された CheckCompliancePDFA バリデータは、禁止フィルタを出力に滑り込ませる間接パスのために検証時に第二の防御線を提供します。
Version 3.55.1
変更
- AddLinkToHideField は PDF/A モードでの呼び出しを拒否するようになりました。前回リリースはアクションが PDF/A 互換だと主張するコメントを残しましたが、ISO 19005-1 Cor2 は /Hide を禁止アクションリストに追加し (§6.6.1)、ISO 19005-2 / -3 も制限を継承します。ファサードは PDF/A モードで呼ばれると silently に 0 を返し、AddLinkToJavaScript と AddLinkToImportData と一致します。
- AddSWFAnnotationFromFile は PDF/A モードでの呼び出しを拒否するようになりました。SWF / RichMedia 注釈は ISO 19005-1 §6.5.2 (Movie / Sound サブタイプなし) で禁止され ISO 19005-2 §6.3.1 (3D / Sound / Screen / Movie なし) で強化された Flash メディアをラップします。ファサードは silently に 0 を返します。
- AddEmbeddedFile と AddLinkToEmbeddedFile は PDF/A-1 と PDF/A-2 モードでの呼び出しを拒否するようになりました。ISO 19005-1 §6.1.11 は /EF を禁止し、ISO 19005-2 §6.8 は埋め込まれた PDF/A ファイルのみを許可します; 添付ペイロードの再帰的 PDF/A 性を検証するのではなく、ライタは単にこれらのモードで呼び出しを拒否します。PDF/A-3 (SetPDFAMode 5 または 6) は引き続き許可されます — 自動 /AFRelationship 注入については v3.55.0 を参照。
- SetOpenActionMenu は文書が PDF/A モードのとき {NextPage, PrevPage, FirstPage, LastPage} ホワイトリスト外の MenuItem 値を拒否するようになりました。ISO 19005-1 §6.6.1 は名前付きアクションをそのセットに制限するため、以前は API が veraPDF が拒否する非準拠 Find / Print / FullScreen Open-Action 辞書を silently に生成していました。
- NewOptionalContentGroup は PDF/A-1 モード (SetPDFAMode 1 または 2) での呼び出しを拒否するようになりました。ISO 19005-1 §6.1.13 はカタログ /OCProperties キーを禁止します。PDF/A-2 (モード 3/4) と PDF/A-3 (モード 5/6) はそれぞれの §6.9 の制約付きで optional content を許可するため、ゲートは PDF/A-1 のみで発動します。
Version 3.55.0
変更
- PDF/A-3 文書はすべての埋め込みファイルに /AFRelationship エントリを自動的に受け取るようになりました。以前はライブラリで作成された PDF/A-3 ファイルは ISO 19005-3 Annex E、Table E.1 がすべての埋め込みファイル仕様に AFRelationship を要求するため検証に失敗する可能性がありました。ライタは設定されたデフォルト値 (デフォルトでは 'Unspecified') を保存時にエントリを欠くすべての FileSpec 辞書に注入するようになり、以前に導入された PDF/UA AFRelationship 自動注入をミラーします。PDF/A-3 モード (SetPDFAMode 5 = PDF/A-3b または 6 = PDF/A-3a) のみが自動注入をトリガし、PDF/A-1 と PDF/A-2 は ISO 19005-1 §6.1.11 と ISO 19005-2 §6.8 に従い埋め込みファイルを引き続き完全に拒否します。
- SetPDFA3DefaultAFRelationship は新しい API で、埋め込みファイルが /AFRelationship エントリを欠くときライタが書き出すデフォルト値を上書きします。ISO 19005-3 Table E.1 の値を受け付けます: 'Source' (埋め込みファイルは PDF コンテンツを生成したソースマテリアル)、'Data' (ファイルは視覚的なテーブルやチャートを支える構造化データ)、'Alternative' (オーディオバージョンなどの代替レンディション)、'Supplement' (方程式の MathML 形などの補足表現)、'Unspecified' (関係を上記で特徴付けられない)、または任意の登録済み第 2 級名前。空文字列は 'Unspecified' にリセット。ファイルごとの上書きは SetEmbeddedFileAFRelationship を通じて引き続き利用可能。
- 新しい API は Delphi ファサードで TPDFlib.SetPDFA3DefaultAFRelationship として、DLL で DLSetPDFA3DefaultAFRelationship (PWideChar) と DLSetPDFA3DefaultAFRelationshipA (PAnsiChar) として公開されています。
Version 3.54.0
変更
- LoadOutputIntentProfile は新しい API で、同梱の sRGB OutputIntent プロファイルをディスクからロードされた外部 ICC プロファイルに置き換えます。ライブラリは sRGB プロファイルしか同梱していないため、DeviceCMYK や DeviceGray 色空間で PDF/A 文書を生成するときに必須です。典型的な使用は最初に SetPDFAMode を呼び (OutputIntent skeleton を初期化)、次に LoadOutputIntentProfile('C:\\path\\to\\FOGRA39.icc', 'DeviceCMYK') でプロファイルバイトを入れ替え新しい色空間で文書をタグ付けすることです。成功時 1、ファイル不在または未知の色空間時 0 を返します。Delphi ファサードで TPDFlib.LoadOutputIntentProfile として、DLL で DLLoadOutputIntentProfile (PWideChar 形) と DLLoadOutputIntentProfileA (PAnsiChar 形) として公開されています。ISO 19005-1 §6.2.2 は DestOutputProfile ストリームに任意の登録済み ICC プロファイルを許可します。
- SetFillColorCMYK、SetTextColorCMYK、SetTextHighlightColorCMYK、SetTextUnderlineColorCMYK、AddSeparationColor、SetFillColorSep、SetLineColorSep、SetTextHighlightColorSep、SetTextColorSep は文書の OutputIntent プロファイルが DeviceCMYK のとき PDF/A モードで成功するようになりました。以前はこれらの API は OutputIntent に関係なく PDF/A モードのすべての呼び出しを拒否しており、準拠 CMYK 文書の生成を妨げていました。ゲートは現在 PDFAMode = 0 OR OutputIntentColorSpace = 'DeviceCMYK' になっており、OutputIntent が CMYK プロファイルを使うとき DeviceCMYK が許可されるという ISO 19005-1 §6.2.3.3 ルール、およびベース色空間も準拠する Separation alternates を許可する ISO 19005-1 §6.2.3.4 と一致します。
- SetTextShader は OutputIntent プロファイルが DeviceRGB または DeviceCMYK のいずれかのとき PDF/A モードで成功するようになりました。シェーダ自体は PDF/A で禁止されていません; バリデータ (read 側) はシェーダの内部色空間が OutputIntent と一致することを検証します。以前の strict-reject 動作は準拠シェーダ使用を拒否していました。
- CMYK / Separation / Shader アンブロックは AddOutputIntent と LoadOutputIntentProfile (v3.53.0 で導入) によってセットされた OutputIntentColorSpace タグに依存します。LoadOutputIntentProfile なしで SetPDFAMode を呼び出すと色空間は DeviceRGB (同梱の sRGB プロファイル) のままなので、CMYK 呼び出しはデフォルトで引き続き拒否されます — 新しい動作は LoadOutputIntentProfile 経由のオプトインです。
Version 3.53.0
変更
- OutputIntent 辞書は ISO 19005-1 §6.2.2 と Adobe Acrobat preflight が推奨する完全な PDF/A skeleton フィールドを運ぶようになりました: /OutputCondition (人間可読の色条件記述)、/Info (長形識別テキスト)、/RegistryName (レジストリ URL、デフォルトは http://www.color.org)。値はレガシーの単一引数呼び出しサイトに対してそれぞれ "sRGB IEC61966-2.1" / "sRGB IEC61966-2.1" / "http://www.color.org" がデフォルトです; 新しい AddOutputIntent オーバーロードは 4 つのカスタムフィールドを直接取るため、呼び出し元は自身の色条件のためにそれらを populate できます。
- AddOutputIntent は新しい 5 引数オーバーロードを獲得しました: AddOutputIntent(ColorSpace, OutputConditionIdentifier, OutputCondition, Info, RegistryName)。レガシーの単一引数形は変更なく動作し続けます; sRGB デフォルトで新オーバーロードに委譲するようになりました。ColorSpace 引数は埋め込み ICC プロファイル辞書に書き込まれる /N コンポーネント数も選択します (DeviceRGB で 3、DeviceCMYK で 4、DeviceGray で 1); 埋め込みプロファイル自体は v3.54.0 で出荷予定の LoadOutputIntentProfile API までは同梱 sRGB ストリームのままです。
- TPDFDocument は最後の AddOutputIntent 呼び出しの色空間を追跡する読み書きプロパティとして OutputIntentColorSpace を公開します。これは v3.54.0 における CMYK / Separation / Shader ライタ側制限のゲート条件になり、今日 PDF/A モードのすべての呼び出しを拒否する色 API は色空間が OutputIntent と不一致のときのみ拒否するようになります。
Version 3.52.0
変更
- CheckCompliancePDFA は注釈、graphics-state、アクション、form XObjects を監査するようになり、ISO 19005-1 第 6.2-6.6 章と等価な PDF/A-2/-3 差分ルールに対する PDF/A 読み取り側バリデータのカバレッジを完成させます。バリデータは 14 の新しい issue クラス (00050-00067) を報告します: 禁止注釈サブタイプ (00050; ISO 19005-1 §6.5.2 は PDF/A-1 で FileAttachment / Sound / Movie を禁止、ISO 19005-2 §6.3.1 は PDF/A-2 と PDF/A-3 で 3D / Sound / Screen / Movie を禁止)、1.0 以外の注釈 /CA (00051; §6.5.3)、欠落または Print=0 / Hidden=1 / Invisible=1 / NoView=1 の注釈 /F (00052; §6.5.3、/Subtype /Popup は免除)、注釈 /AA (00054; §6.6.2)、/N 以外のキーまたは非準拠 /N 値を持つ注釈外観辞書 (00055; §6.5.3 Cor2)、/A を持つ Widget 注釈 (00056; §6.9)、ExtGState /TR (00058; §6.2.8)、/Default 以外の ExtGState /TR2 (00059; §6.2.8)、PDF/A-1 のみ: /None 以外の ExtGState /SMask (00061; §6.4)、Normal または Compatible 以外の /BM (00062; §6.4)、1.0 以外の /CA または /ca (00063; §6.4)。
- Action-anywhere 監査 (00064、00065) は v3.50.0 の OpenAction 限定チェックを、アクションがどこに住んでいるか (注釈 /A、widget /A、outline /A、catalog /OpenAction など) に関係なく禁止 /S アクション値 (Launch、Sound、Movie、ResetForm、ImportData、JavaScript、Hide、SetState、NOP、Trans、GoTo3DView、Rendition、SetOCGState) と /N が {NextPage, PrevPage, FirstPage, LastPage} 外の名前付きアクションをフラグする完全な走査に置き換えます。ISO 19005-1 §6.6.1。
- XObject 監査 (00066、00067) は PostScript と Reference XObjects、加えて Form XObjects 上の禁止キー (/OPI、/PS、/Subtype2 = /PS) と Image XObjects 上の禁止キー (/Alternates、/OPI、/Interpolate true) を報告します。ISO 19005-1 §6.2.4 - §6.2.7。
Version 3.51.0
変更
- CheckCompliancePDFA は v3.50.0 で追加された構造チェックに加えてフォントと色空間の適合性も監査するようになりました。バリデータは 9 つの新しい issue クラスを報告します: 少なくとも 1 つのフォントプログラムが埋め込まれていない (00030; ISO 19005-1 §6.3.4 は Standard 14 代替を含むすべてのフォントプログラムが埋め込まれることを要求)、Type 1 サブセットの FontDescriptor が /CharSet を欠く (00031; §6.3.5)、CIDFont サブセットが /CIDSet を欠く (00032; §6.3.5)、CIDFontType2 が /CIDToGIDMap を欠く (00033; §6.3.3.2 Cor2)、非準拠 /Encoding を持つ非シンボリック TrueType (00034; §6.3.7 Cor2 は WinAnsi/MacRoman を直接または BaseEncoding として要求、/Differences なし)、引き続き /Encoding を運ぶシンボリック TrueType (00035; §6.3.7 Cor2)、PDF/A-Na または PDF/A-Nu 文書で少なくとも 1 つのフォントが /ToUnicode を欠く (00036; §6.3.8 4 クラス免除適用)、プロファイルストリームを埋め込まない ICCBased 色空間 (00037; §6.2.3.2)、DeviceRGB と DeviceCMYK の両方を使うファイル (00038; §6.2.3.3 はその混合を禁止)。
- /ToUnicode チェック (00036) は ISO 19005-1 §6.3.8 と ISO 19005-2 §6.2.11.7 に従い Unicode マッピングを要求するのはこれらのレベルのみであるため、適合性レベル A と U にスコープされます。レベル B ファイル (PDF/A-1b、PDF/A-2b、PDF/A-3b) はフラグされません。4 クラス免除は定義済みエンコーディング (MacRomanEncoding、MacExpertEncoding、WinAnsiEncoding)、Adobe Standard Latin / Symbol グリフ名フォントのプロキシとしての Standard 14 Type 1 BaseFonts、子孫 CIDFont が Adobe-GB1、Adobe-CNS1、Adobe-Japan1、Adobe-Korea1 レジストリを使う Type 0 フォントを認識します。
- フォント監査はすべての Font 辞書を走査し、Subtype (Type1、MMType1、TrueType、Type3、子孫 CIDFontType0 または CIDFontType2 を持つ Type 0) で分類してから関連チェックをディスパッチします。Type 0 composite フォントは Type 0 ラッパー上で /ToUnicode を保ちつつ、埋め込みとサブセットチェックを子孫 CIDFont に委譲します。サブセット検出は標準の 6 大文字プレフィックス規約を使用します。
Version 3.50.0
変更
- CheckCompliancePDFA はバリデータが以前見逃していた 15 の追加 PDF/A 非適合 issue を報告するようになりました: トレーラ /ID 配列の欠落 (00013)、文書カタログ /Metadata ストリームの欠落 (00014)、/Metadata ストリームに適用された /Filter (00015)、/F、/FFilter、/FDecodeParms 経由で外部ファイルを参照するストリーム辞書 (00016)、任意のファイル仕様辞書の /EF 経由または PDF/A-1 文書の Name tree /EmbeddedFiles エントリ経由で宣言された埋め込みファイル (00017、00018)、禁止アクションタイプを指す /OpenAction (00019)、文書カタログまたは任意のページの /AA 追加アクション辞書 (00020、00021)、PDF/A-1 文書の JBIG2Decode または JPXDecode フィルタ (00022、00023)、/Name が /Identity でない Crypt フィルタ (00024)、文書カタログの /Requirements (00025)、/UR3 と /DocMDP 以外のキーを持つ /Perms (00026)、true にセットされた /AcroForm /NeedAppearances (00027)。バリデータは ISO 19005-1 §6.6.1 に従い、禁止カタログ /OpenAction アクションタイプ (/Launch、/Sound、/Movie、/ResetForm、/ImportData、/JavaScript、/Hide、/SetState、/NOP、/Trans、/GoTo3DView、/Rendition、/SetOCGState) と {NextPage, PrevPage, FirstPage, LastPage} 許可リスト外の名前付きアクション /N 値をフラグするようになりました。
- フィルタ固有チェック (JBIG2Decode、JPXDecode) と埋め込みファイルチェック (/EF、/EmbeddedFiles) は引き続き PDF/A-1 にスコープされます。なぜなら ISO 19005-2 §6.2.8.3 と §6.8 は PDF/A-2 と PDF/A-3 ではそれらの制限を明示的に緩和するからです。文書構造チェック (/Metadata、/AcroForm /NeedAppearances、/OpenAction、/AA、/Requirements、/Perms) はすべての PDF/A パートに適用されます。
修正
- PDFAID パーサは既存の A と B バリアントと並んで U 適合性サフィックス (PDF/A-2U、PDF/A-3U) を受け付けるようになったため、別のツールで生成された PDF/A-2U または PDF/A-3U ファイルをスキャンするとき CheckCompliancePDFA はもはや偽の "00005 PDFA Mark NOT Found or invalid" 警告を発しません。ISO 19005-2:2011 で追加された Unicode マッピング適合性レベルがバリデータで認識されるようになりました。
Version 3.49.0
変更
- AddLinkToImportData は Link 注釈を作成し、その action は PDF インポートデータアクション (/S /ImportData) です。ユーザーがリンクをクリックすると、外部 FDF ファイルから文書の AcroForm フィールドを populate します (ISO 32000-1 §12.6.4.8, Table 198)。FileName パラメータは filespec 辞書として参照され、パス正規化規則は AddLinkToFile / AddLinkToFileEx と同じです (ISO 32000-1 §7.11.2.1 に従ってバックスラッシュをスラッシュに変換)。Options ビット 0 は表示ボーダーの切り替え、ビット 1–3 はリンクハイライトモード (Invert、Outline、Push) を選択し、既存の AddLinkTo* の規約と一致します。PDF 1.4 以降。アクションが外部リソースを参照するため PDF/A では許可されません。ファサードは PDF/A モードで呼ばれると silently に 0 を返します。Delphi ライブラリと DLL インターフェースに DLAddLinkToImportData / DLAddLinkToImportDataA (PWideChar と PAnsiChar 形式) として公開されています。
Version 3.48.0
変更
- AddLinkToHideField は Link 注釈を作成し、その action は PDF 非表示アクション (/S /Hide) です。ユーザーがリンクをクリックすると、1 つ以上の AcroForm フィールドの可視性を切り替えます (ISO 32000-1 §12.6.4.10, Table 196)。FieldNames はカンマ、セミコロン、改行で区切られた 1 つ以上の完全修飾フィールド名を受け付けます。単一名はテキスト文字列として /T に書き出され、2 つ以上は配列として /T に書き出されます。両形式とも仕様で許可されています。HideFlag は可視性方向を選択します。非ゼロ値は列挙フィールドを非表示にし (/H true)、ゼロは表示します (/H false)。Options ビット 0 は表示ボーダーの切り替え、ビット 1–3 はリンクハイライトモード (Invert、Outline、Push) を選択し、AddLinkToWeb / AddLinkToNamedAction と一致します。PDF 1.2 以降。外部リソースを参照しないため PDF/A 互換です。Delphi ライブラリと DLL インターフェースに DLAddLinkToHideField / DLAddLinkToHideFieldA (PWideChar と PAnsiChar 形式) として公開されています。
Version 3.47.0
変更
- AddLinkToNamedAction は Link 注釈を作成し、その action は PDF 名前付きアクション (/S /Named) です。ISO 32000-1 §12.6.4.11, Table 194 で定義された 4 つの標準ビューア ナビゲーションコマンドのいずれか (NextPage、PrevPage、FirstPage、LastPage) をトリガーします。NamedActionType パラメータでコマンドを選択 (0=NextPage、1=PrevPage、2=FirstPage、3=LastPage)。範囲外の値は NextPage にフォールバックし、ライタは常に spec 準拠の /N 名前を書き出します。Options ビット 0 は表示ボーダーの切り替え、ビット 1–3 はリンクハイライトモード (Invert、Outline、Push) を選択し、既存の AddLinkToWeb / AddLinkToPage の規約と一致します。注釈は PDF 1.1 以降が必要で、外部リソースを参照しないため PDF/A 互換です。Delphi ライブラリと DLL インターフェースで利用可能。
Version 3.46.1
変更
- AddCaretAnnotation は指定された矩形位置にカレットマークアップ注釈 (PDF /Subtype /Caret) を作成します。ページ上でテキストや内容が挿入、省略、またはレビュアの注意を要する位置をマークするために使用します。SymbolType (0 / 1) で 2 種類のシンボルタイプ (None と Paragraph) をサポートし、色、不透明度、タイトル、内容、作成/変更タイムスタンプを設定できます。ISO 32000-1 §12.5.6.11 で定義。PDF 1.5 以降。Delphi ライブラリと DLL インターフェースで利用可能。
- この項目は v3.44.0 の Square+Circle で始まった幾何注釈の補完作業を完了するものです。PDFlibPas は既存の Link、FileAttachment、SVG、U3D、SWF のサポートに加え、Text、Stamp、FreeText、TextMarkup (Highlight/Underline/Squiggly/StrikeOut)、Square、Circle、Line、Polygon、PolyLine、Ink、Caret 注釈を作成できるようになりました。
Version 3.46.0
変更
- AddInkAnnotation は ink マークアップ注釈 (PDF /Subtype /Ink) を作成します。ページに描かれた手書きストロークやフリーフォームマークを表現します。ストロークは単一文字列として渡され、複数ストロークは '|' または改行で区切り、各ストローク内の座標ペアは AddPolygonAnnotation と同じ空白/カンマ/セミコロン/タブ形式に従います。例として "100 100 110 105 120 110 | 200 200 210 205" は 2 つの独立したストロークを表します。設定可能なボーダー幅、ink 色、不透明度、タイトル、内容、タイムスタンプをサポート。ISO 32000-1 §12.5.6.13 で定義。PDF 1.3 以降。Delphi ライブラリと DLL インターフェースで利用可能。
- 各ストロークは偶数個の値 (少なくとも 4 つ) を含む必要があり、満たさない場合は 0 を返し注釈は書き込まれません。/Rect は全ストロークの結合範囲に小さなパディングを加えて自動計算され、ストロークが注釈バウンディングボックス内に収まります。
Version 3.45.0
変更
- AddPolygonAnnotation は閉じた多角形マークアップ注釈 (PDF /Subtype /Polygon) を作成します。頂点は空白、カンマ、セミコロン、タブ区切りの座標ペア文字列として渡します (例: "100 100 200 100 200 200 100 200")。設定可能なボーダー幅、ボーダー色、オプションの内部塗りつぶし色、不透明度、タイトル、内容、タイムスタンプをサポート。ISO 32000-1 §12.5.6.9 で定義。PDF 1.5 以降。Delphi ライブラリと DLL インターフェースで利用可能。
- AddPolyLineAnnotation は開いた折れ線マークアップ注釈 (PDF /Subtype /PolyLine) を作成します。同じ頂点文字列形式に加えて、両端で設定可能な端点スタイル (None、Square、Circle、Diamond、OpenArrow、ClosedArrow、Butt、ROpenArrow、RClosedArrow、Slash) を持ちます。ISO 32000-1 §12.5.6.9 で定義。PDF 1.5 以降。Delphi ライブラリと DLL インターフェースで利用可能。
- 両方の注釈は少なくとも 2 頂点 (4 つの数値) と偶数個の数値が必要です。頂点文字列が有効なペアリストに解析できない場合は 0 を返します。/Rect は頂点範囲にボーダー幅に比例したパディングを加えて計算され、端点装飾が見えるようにします。
- 両方の注釈は文書の最低バージョンが低い値にロックされているとき、emit 時にバージョンを PDF 1.5 まで自動的に bump します。
Version 3.44.1
変更
- AddLineAnnotation は 2 つの端点間に線マークアップ注釈 (PDF /Subtype /Line) を作成します。設定可能なボーダー幅、線色、オプションの内部塗りつぶし色、両端の端点スタイル (None、Square、Circle、Diamond、OpenArrow、ClosedArrow、Butt、ROpenArrow、RClosedArrow、Slash)、不透明度、タイトル、内容、作成/変更タイムスタンプを持ちます。ISO 32000-1 §12.5.6.7 で定義。PDF 1.3 以降。Delphi ライブラリと DLL インターフェースで利用可能。
- 注釈の /Rect は 2 つの端点にボーダー幅に比例したパディングを加えて計算され、端点装飾が注釈バウンディングボックス内に収まります。
Version 3.44.0
変更
- AddSquareAnnotation は指定された矩形位置に矩形マークアップ注釈 (PDF /Subtype /Square) を作成します。設定可能なボーダー幅、ボーダー色、オプションの内部塗りつぶし色、不透明度、タイトル、内容、作成/変更タイムスタンプを持ちます。ISO 32000-1 §12.5.6.8 で定義。PDF 1.3 以降。Delphi ライブラリと DLL インターフェースで利用可能。
- AddCircleAnnotation は指定された矩形に内接する楕円マークアップ注釈 (PDF /Subtype /Circle) を作成します。設定可能なボーダー、塗りつぶし、不透明度、タイトル、内容、タイムスタンプは AddSquareAnnotation と同じです。ISO 32000-1 §12.5.6.8 で定義。PDF 1.3 以降。Delphi ライブラリと DLL インターフェースで利用可能。
- 両方の新注釈は文書の最低バージョンが低い値にロックされているとき、emit 時に PDF 1.3 まで自動的に bump し、標準のマークアップ注釈フィールドセット (/Type /Subtype /Rect /C /IC /BS /Border /CA /F /M /CreationDate /NM /T /Contents /Subj /P) を emit します。これにより Acrobat、Foxit、Edge の既存のレビューワークフローは作成後もこれらの注釈を編集できます。
Version 3.43.0
変更
- SetStructElemSpaceBefore と SetStructElemSpaceAfter は現在開いている構造要素に /SpaceBefore と /SpaceAfter 属性 (Layout owner) を設定します。ブロックレベル要素の前後の間隔をポイント単位で表現します。ISO 32000-1 §14.8.5.4.2 Table 340 で定義。Delphi ライブラリ、ActiveX (Dispid 73008051/73008052)、DLL インターフェースで利用可能。
- SetStructElemStartIndent と SetStructElemEndIndent は現在開いている構造要素に /StartIndent と /EndIndent 属性 (Layout owner) を設定します。書字方向を考慮した内容矩形の start と end エッジからのインデント距離をポイント単位で表現します。ISO 32000-1 §14.8.5.4.2 Table 340 で定義。Delphi ライブラリ、ActiveX (Dispid 73008053/73008054)、DLL インターフェースで利用可能。
- SetStructElemColor は /Color 属性 (Layout owner) を RGB トリプル (各成分 0.0-1.0) として設定し、要素の前景色を記述します。リフローエンジンと下流の色コントラストチェッカーで使用されます。ISO 32000-1 §14.8.5.4.2 Table 340 で定義。Delphi ライブラリ、ActiveX (Dispid 73008055)、DLL インターフェースで利用可能。
修正
- BuildStructElemDictRef のシリアライズバグを修正:単一トークン数値属性値 (SpaceBefore、SpaceAfter、StartIndent、EndIndent など) が PDF 数値ではなく PDF 名前として書き出されていました。修正は単一 owner と複数 owner の属性ブランチ両方に適用されます。
Version 3.42.0
変更
- 3 つの新しいコンプライアンスチェックを追加:コード 00006 は暗号化された文書をフラグ (暗号化は全 PDF/A バージョンで禁止)、コード 00007 はカタログに OutputIntents エントリが欠けている文書をフラグ (全 PDF/A バージョンで必須)、コード 00011 と 00012 はコンフォーマンスレベルが -a (アクセシビリティ) のときに MarkInfo または StructTreeRoot が欠けている文書をフラグします。
修正
- CheckCompliancePDFA は 6 種類すべての PDF/A モード (1a、1b、2a、2b、3a、3b) を正しく検証するようになりました。PDFAID チェック (コード 00005) は '1B' だけでなく 6 つの有効な XMP マーカーのいずれかを受け入れます。バージョン上限チェック (00002) は PDF/A-1 に 1.4、PDF/A-2 と PDF/A-3 に 1.7 を適用します。
- OCProperties チェック (コード 00003) は条件付きになりました:PDF/A-1 文書にのみ適用され、PDF/A-1 では optional content (レイヤー) が禁止されています。PDF/A-2 と PDF/A-3 はレイヤーを許可し、フラグされません。
Version 3.41.0
変更
- PDF/A モードは API レベルで禁止操作を強制するようになりました。PDF/A モード (1-6 のいずれか) が有効なとき、SetEncryption、AddSeparationColor、SetFillColorCMYK、SetTextColorCMYK、その他の CMYK/Separation/Shader API を呼び出すと 0 を返し効果なしになります。PDF/A の単一 sRGB 出力インテント要求と整合します。
- PDF/A-1 (モード 1 と 2) では透明度が禁止:SetTransparency、SetBlendMode、SetPageTransparencyGroup は現在のモードが 1 または 2 のとき 0 を返し no-op になります。PDF/A-2 と PDF/A-3 (モード 3-6) は限定的な透明度を許可し制限されません。
- JavaScript アクションは全 PDF/A モード (1-6) で禁止:SetOpenActionJavaScript、PageJavaScriptAction、DocJavaScriptAction、AddGlobalJavaScript、AddLinkToJavaScript は PDF/A モードが有効なときすべて 0 を返し no-op になります。ISO 19005-1 §6.6.1 は PDF/A 文書での JavaScript を明示的に禁止しています。
- ファイル添付 API (EmbedFile、AddFileAttachment) は PDF/A-1 と PDF/A-2 モード (1-4) でブロックされます。任意の埋め込みファイルを明示的に許可する PDF/A-3 (モード 5 と 6) では引き続き機能します。
Version 3.40.0
追加
- SetPDFAMode が PDF/A-2 と PDF/A-3 コンフォーマンスレベルをサポートするようになりました。NewMode=3 は PDF/A-2b、4 は PDF/A-2a、5 は PDF/A-3b、6 は PDF/A-3a。PDF/A-2 は PDF 1.7 を対象とし、レイヤー、インタラクティブフォーム、JPEG2000 画像、限定的な透明度を許可します。PDF/A-3 は PDF/A-2 を拡張し、任意の埋め込みファイル (任意の MIME タイプ) を許可します。すべての -a 変種はアクセシビリティ コンフォーマンスレベルで必要な /MarkInfo とタグ付き PDF 構造マーカーを自動的に書き込みます。
変更
- GetInformation(201) は新しいモード番号付けと整合して、アクティブな PDF/A モードに対応する '1' から '6' を返します。
修正
- 修正:SetPDFAMode(1) (PDF/A-1a) は v3.20.0 で導入された内部ルーティングバグにより no-op になっていました。/MarkInfo と /OutputIntents を正しく書き込み、XMP pdfaid:part=1/conformance=A を設定するようになりました。
Version 3.39.0
変更
- SetStructElemWritingMode は現在開いている構造要素に /WritingMode 属性 (Layout owner) を設定します。有効値は LrTb (左から右、ラテンスクリプトのデフォルト)、RlTb (右から左、アラビア語とヘブライ語)、TbRl (上から下、右から左、伝統的な CJK 縦書き)。ISO 32000-1 §14.8.5.4.2 Table 340 で定義。Delphi ライブラリ、ActiveX (Dispid 73008049)、DLL インターフェースで利用可能。
- SetStructElemListNumbering は現在開いている構造要素に /ListNumbering 属性 (List owner) を設定します。サポートされる値は None、Disc、Circle、Square (順序なしマーカー) と Decimal、UpperRoman、LowerRoman、UpperAlpha、LowerAlpha (順序付き番号付け) です。属性は L (リスト) 要素に設定され、支援技術がリストタイプを正しくアナウンスできるようにします。ISO 32000-1 §14.8.5.3.2 Table 336 で定義。Delphi ライブラリ、ActiveX (Dispid 73008050)、DLL インターフェースで利用可能。
Version 3.38.0
変更
- SetStructElemColSpan は現在開いている構造要素に /ColSpan 属性 (Table owner) を設定し、セルがまたぐ列数を示します。ISO 32000-1 §14.8.5.7.2 Table 337 で定義。Delphi ライブラリ、ActiveX (Dispid 73008047)、DLL インターフェースで利用可能。
- SetStructElemRowSpan は現在開いている構造要素に /RowSpan 属性 (Table owner) を設定し、セルがまたぐ行数を示します。ISO 32000-1 §14.8.5.7.2 Table 337 で定義。Delphi ライブラリ、ActiveX (Dispid 73008048)、DLL インターフェースで利用可能。
- 両関数は AddTagAttribute を Owner='Table' と対応する属性名で呼び出すのと等価な便利ラッパーです。複雑または span ヘッダーテーブル内のセルを完全に記述するために SetStructElemScope を補完します。
Version 3.37.2
変更
- GetPDFUADiagnostics は N 個のインタラクティブフォームフィールド (Widget 注釈) に TU (ツールチップ / アクセシブル名) エントリが欠けているとき FORM-NO-TOOLTIP:N を報告するようになりました。ISO 14289-1 §7.18.4 はすべてのインタラクティブフォームフィールドが TU エントリを持つことを要求し、フィールドがフォーカスを受けたとき支援技術がユーザーにフィールドの目的をアナウンスできるようにします。/TU はスクリーンリーダーが読み上げるアクセシブル名で、プログラムからのアクセスやフォーム送信に使われる部分フィールド名 /T とは異なります。
Version 3.37.1
変更
- GetPDFUADiagnostics は N 個の LI または LBody 構造要素が必要な親要素の外に現れるとき LIST-STRUCT:N を報告するようになりました。ISO 32000-1 §14.8.4.4 は LI が L (リスト) の直接の子、LBody が LI (リスト項目) の直接の子であることを要求します。リストネストの不整形は支援技術がリスト内容を正しく走査・アナウンスできなくし、PDF/UA-1 バリデータで文書構造検証の失敗を引き起こす可能性があります。
Version 3.37.0
変更
- BeginTagEx2 は新しい API で、1 回の呼び出しで構造要素を開きすべての主要な要素プロパティを設定します。BeginTagEx の TagType、AltText、ActualText、Lang パラメータに加えて、BeginTagEx2 は Title (/T、Tags ナビゲーションパネル用)、ElemID (/ID、要素一意識別子)、Expansion (/E、略語または頭字語の完全形) を受け付けます。これら 3 つの追加パラメータのいずれかに空文字列を渡すことは、対応する setter を省略することと等価です。BeginTagEx2 はよく記述された要素の定型コードを削減します — BeginTagEx の後に SetStructElemTitle、SetStructElemID、SetStructElemExpansion を個別に呼び出す代わりに、7 つすべてのプロパティを 1 回の呼び出しで設定できます。この関数は Delphi ライブラリ、ActiveX (Dispid 73008046)、DLL インターフェースで利用可能。
Version 3.36.1
変更
- GetPDFUADiagnostics は N 個の TH (テーブルヘッダーセル) 構造要素に Scope 属性が欠けているとき TABLE-TH-NO-SCOPE:N を報告するようになりました。ISO 32000-1 §14.8.4.3.4 Table 337 は Scope (Row、Column、または Both) を、ヘッダーセルがどのデータセルに適用されるかを記述する属性として定義しています。Scope が無いと、スクリーンリーダーやその他の支援技術は複雑または多層ヘッダーテーブルでヘッダーセルとデータセルを確実に関連付けられず、ISO 14289-1 §7.5 で要求される動作ができません。各 TH 要素をタグ付けした直後に SetStructElemAttr('Table','Scope', 'Column') (または 'Row' / 'Both') を呼んでください。
Version 3.36.0
変更
- SetStructElemExpansion は新しい API で、現在開いている構造要素に /E (展開テキスト) エントリを設定します (ISO 32000-1 §14.9.5)。展開テキストは要素に含まれる略語や頭字語の完全な綴り形式です — 例えば Span のテキストが "WWW" の場合は "World Wide Web"。スクリーンリーダーは略語の文字を発音しようとせず展開を読み上げ、技術および科学コンテンツのアクセシビリティに不可欠です。PDF/UA-1 (ISO 14289-1 §7.2) は自然言語が一意に決定可能であることを要求し、/E は略語と頭字語の標準的なメカニズムです。この関数は Delphi ライブラリ、ActiveX、DLL インターフェースで利用可能。
Version 3.35.1
変更
- GetPDFUADiagnostics は文書情報辞書の /Title エントリが欠けているか空のとき DOCINFO-TITLE-MISSING を報告するようになりました。PDF/UA-1 (ISO 14289-1) は文書タイトルを要求し、文書を開いたときスクリーンリーダーがそれをアナウンスできるようにします。既存の DISPLAYDOCTITLE-FALSE チェックはタイトルがビューア タイトルバーに表示されることを確認します。DOCINFO-TITLE-MISSING は補完的で、タイトル値自体が設定されていることを確認します。値を提供するには SetDocumentInfo('Title', ...) を呼んでください。
Version 3.35.0
変更
- SetStructElemTitle は新しい API で、現在開いている構造要素に /T (タイトル) エントリを設定します (ISO 32000-1 §14.7.2 Table 324)。タイトルは特定の要素インスタンスを識別する人間可読のラベルで — 例えば "Chapter 1"、"Summary Table"、"Figure 3: Quarterly Sales" — PDF ビューアの Tags ナビゲーションパネルに表示され、アクセシビリティ修復ツールで使われます。/T は /Alt (レンダリング障害ユーザー向けの代替テキスト) や /ActualText (グリフレベルテキスト修正) とは異なり、Table、Figure、Form、Sect、Div などの非テキストコンテナ要素で最も有用です。設定済み値をクリアするには空文字列を渡します。この関数は Delphi ライブラリ、ActiveX、DLL インターフェースで利用可能。
Version 3.34.0
変更
- SetStructElemAltText は新しい API で、現在開いている構造要素に /Alt エントリを設定します (ISO 32000-1 §14.9.3)。BeginTag に AltText を渡すのと等価ですが、要素が開かれた後に代替テキスト記述を設定または更新できます — 記述が要素タイプと別に計算される場合に有用です。PDF/UA-1 (ISO 14289-1 §7.5) は Figure と Formula 要素に Alt テキストを要求し、GetPDFUADiagnostics はすでに欠落値に対して FIGURE-NO-ALT:N を報告します。この関数は Delphi ライブラリ、ActiveX、DLL インターフェースで利用可能。
Version 3.33.1
追加
- GetPDFUADiagnostics に ROLEMAP-UNMAPPED:N チェックが含まれるようになり、/RoleMap 辞書にエントリのない文書で使用されたカスタム構造要素タイプ名を検出します。ISO 14289-1 §7.1 と ISO 32000-1 §14.7.3 はすべての非標準構造タイプを標準 PDF タイプ (P、Span、Figure など) にマップすることを要求し、支援技術が要素の処理方法を判断できるようにします。N 個のマップされていないタイプが見つかると、issue 記述にタイプ名のリストが含まれ、呼び出し元はどの AddRoleMap エントリが必要かを知ることができます。ISO 32000-1 Table 333 (PDF 1.7) で定義された全 49 種類の標準構造タイプは認識され、報告から除外されます。
Version 3.33.0
変更
- SetStructElemLang は新しい API で、現在開いている構造要素に /Lang エントリを設定します (ISO 32000-1 §14.9.2)。言語タグは SetDocumentLanguage または SetPDFUAMode で宣言された文書レベル言語を要素とその子孫すべてに対して上書きし、多言語文書が各スパンを正しい BCP 47 言語タグ (例: 'en-US'、'fr'、'zh-Hant-TW') でマークできるようにします。スクリーンリーダーは要素レベルの /Lang を使用して、文書を読み上げるときに適切なテキスト読み上げエンジンまたは音声を選択します。この関数は Delphi ライブラリ、ActiveX、DLL インターフェースで利用可能。
Version 3.32.0
変更
- SetStructElemActualText は新しい API で、現在開いている構造要素に /ActualText エントリを設定します (ISO 32000-1 §14.9.4)。コンテンツストリーム抽出が正しくない結果をもたらすとき、グリフシーケンスが表現する正確な Unicode テキストを指定するために使用します — 最も一般的なケースは OpenType 合字グリフ (U+FB00 ff、U+FB01 fi、U+FB02 fl) と展開形が自明でない略語です。ActualText はレンダリングコンテンツを置き換えるのではなく補完します。支援技術とテキスト抽出器がその要素について読み上げる/出力するものを上書きしますが、視覚的レンダリングは抑制しません。この関数は Delphi ライブラリ、ActiveX、DLL インターフェースで利用可能。
Version 3.31.1
変更
- GetPDFUADiagnostics は欠落 Alt テキスト (FIGURE-NO-ALT:N) を報告するときに Figure 要素に加えて Formula 構造要素もチェックするようになりました。ISO 32000-1 §14.9.3 はグラフィカルな figure と数式の両方に代替記述を要求します。以前は Figure 要素のみがスキャンされていました。
- GetPDFUADiagnostics は文書の PDF バージョンが 1.7 より低いとき PDF-VERSION-LOW を報告するようになりました。PDF/UA-1 (ISO 14289-1) は PDF 1.7 (ISO 32000-1:2008) に対して定義されています。PDF 1.5 や 1.6 の文書はベース仕様の要件を満たせません。SetPDFUAMode を呼び出すとバージョンを自動的に 1.7 に上げます。
Version 3.31.0
修正
- 構造要素 ID とテーブルヘッダー関連付けがサポートされるようになりました。SetStructElemID は現在開いている構造要素に一意の文字列識別子 (/ID) を割り当てます。文書保存時に ID は構造ツリールートの /IDTree 名前ツリーに収集され、アクセシビリティツールや相互参照が ID で要素を見つけられます (ISO 32000-1 §14.7.4)。SetStructElemHeaders は現在のテーブルセル (TD または TH) を、以前に割り当てた ID のカンマ区切りリストを使って 1 つ以上のヘッダーセルに関連付け、Table 属性 owner 辞書に /Headers 配列を書き出します (ISO 32000-1 §14.8.5.7.2)。これら 2 つの関数を合わせて PDF/UA-1 (ISO 14289-1 §7.10) と WCAG 2.x SC 1.3.1 の複雑なテーブルマークアップをサポートします。両関数は Delphi ライブラリ、ActiveX、DLL インターフェースで利用可能。AddTagAttribute も /Headers 属性をカンマ区切り値で正しく扱い、PDF テキスト文字列配列として書き出すようになりました。
Version 3.30.1
追加
- GetPDFUADiagnostics に HEADING-LEVEL-SKIP:N チェックが含まれるようになり、文書順での見出しレベルのジャンプ (例: H1 の直後に H2 を挟まず H3 が続く) を検出します。チェックは構造要素ツリー全体に対して pre-order トラバーサルを行い、次の見出しレベルが前のレベルを 1 を超えて上回る出現を数えます。汎用 H 要素は H1 として扱われます。より高いレベルの見出しに戻ること (H3 → H1) はスキップとして数えません。WCAG 2.x 成功基準 1.3.1 と ISO 14289-1 §7.1 は見出しが gap なしにネストすることを要求します。
Version 3.30.0
変更
- タグ付き PDF と PDF/UA 文書で構造要素属性がサポートされるようになりました。3 つの新しい API 関数で、タグスタック上に構築中の構造要素に属性をアタッチできます:AddTagAttribute (汎用、任意の owner/name/value)、SetStructElemScope (Table owner 配下に /Scope 属性を設定する便利ラッパー、TH ヘッダーセル用 — ISO 32000-1 §14.8.5.7.2)、SetStructElemBBox (Layout owner 配下に /BBox 属性を設定する便利ラッパー、figure などの視覚配置要素用 — ISO 32000-1 §14.8.5.4)。文書保存時、属性は各構造要素の /A 属性辞書として書き出されます。同じ owner からの複数属性は 1 つの辞書にまとめられ、異なる owner からの属性は辞書の配列として書き出されます。3 つの関数すべてが Delphi ライブラリ、ActiveX、DLL インターフェースで利用可能。
Version 3.29.1
追加
- GetPDFUADiagnostics に 2 つの追加チェックが含まれるようになりました:文書内の Figure 構造要素が Alt テキスト値を欠いているか (FIGURE-NO-ALT:N として報告、ISO 14289-1 §7.5 と ISO 32000-1 §14.9.3 に従う)、EndTag が呼ばれずに構造要素がまだ開いたままか (STRUCT-UNCLOSED:N として報告)。figure チェックは構造要素ツリーを完全に再帰的に走査し、すべてのネスト深さの要素をカバーします。
Version 3.29.0
変更
- GetPDFUADiagnostics は新しい診断 API で、文書を PDF/UA-1 (ISO 14289-1) コンプライアンス潜在問題に対してチェックし、改行区切りの発見リストを返します。6 つのチェックが実行されます:MarkInfo/Marked が設定されているか (タグ付き PDF)、文書カタログに /Lang エントリがあるか、ViewerPreferences/DisplayDocTitle が true か、XMP メタデータに pdfuaid:part 識別子が含まれているか、Contents エントリの欠けている非除外注釈の数、AFRelationship エントリの欠けている埋め込みファイルの数。各発見は短いコード (例: LANG-MISSING、ANNOT-NO-CONTENTS:3) と人間可読の記述で識別されます。問題が見つからない場合は空文字列を返します。Delphi ライブラリ、ActiveX、DLL インターフェースで利用可能。
Version 3.28.5
変更
- PDF/UA-1 注釈アクセシビリティ改善:FileAttachment 注釈が Contents エントリも /T フィールドも持たないとき、注釈の埋め込みファイル仕様 (/FS /UF または /F) のファイル名がフォールバック アクセシブル記述として使用されるようになりました。これは注釈 Contents フォールバックチェーンを完成させます:/T → Link URI → Stamp name → FileAttachment ファイル名。スクリーンリーダーは沈黙の代わりに添付ファイルの名前を受け取り、最も一般的な注釈タイプに対する ISO 14289-1 §7.18.1 を満たします。
Version 3.28.4
変更
- PDF/UA-1 注釈アクセシビリティ改善:Stamp 注釈が Contents エントリ (または空のもの) と /T フィールドのどちらも持たないとき、注釈の /Name エントリのスタンプタイプ名がフォールバック アクセシブル記述として使用されるようになりました (例: "Approved"、"Draft"、"Confidential"、"Final")。これは v3.28.3 で導入された注釈 Contents フォールバックチェーンをスタンプ注釈に拡張します。レビューや承認に関わるワークフローで一般的で、明示的な Contents 値を欠くことが多いものです。
Version 3.28.3
変更
- PDF/UA-1 注釈アクセシビリティ改善:Link 注釈が Contents エントリ (または空のもの) と /T フィールドのどちらも持たないとき、注釈の URI アクションの URI がフォールバック アクセシブル記述として使用されるようになりました。これは SetPDFUAMode 処理中にのみ適用され、/URI アクションを持つ Link 注釈にのみ適用されます。スクリーンリーダーは最後の手段のラベルとして URL を受け取り、作者が人間可読の記述を提供せずにハイパーリンクを作成する一般的なケースで ISO 14289-1 §7.18.1 を満たします。
Version 3.28.2
変更
- SetEmbeddedFileAFRelationship は新しい API で、埋め込みファイルのファイル仕様辞書に AFRelationship 値を明示的に設定します。ISO 14289-1 (PDF/UA-1) §7.11 で要求されており、呼び出し元は 5 つの有効値 Source、Data、Alternative、Supplement、Unspecified から選んで、埋め込みファイルと文書内容のセマンティック関係を指定できます。SetPDFUAMode が有効なとき、AFRelationship キーのない埋め込みファイルは自動的に Unspecified を割り当てられます。保存前にそのデフォルトを上書きするにはこの関数を使ってください。Delphi ライブラリ、ActiveX、DLL インターフェースで利用可能。
Version 3.28.1
変更
- SetPDFUAMode が、XMP メタデータが文書固有のタイトルではなく汎用ライブラリ デフォルト タイトルを保持している文書で呼ばれたとき、文書の /Info Title エントリの値 (存在すれば) でタイトルが自動的に置き換えられるようになりました。これにより pdfuaid:part-1 XMP パケットがプレースホルダではなく実際の文書タイトルを反映することが保証され、PDF/UA-1 検証ツールの期待を満たします。
- XMP パーサ (LoadFromString) が文書ロード時に既存の XMP メタデータから dc:title 値を読み取るようになりました。すでに dc:title を持つ PDF をラウンドトリップすると、デフォルトのプレースホルダに戻ることなくそのタイトルが正しく保持されます。
Version 3.28.0
変更
- BeginArtifactEx(ArtifactType, ArtifactSubtype) は新しいタグ付き PDF API で、BeginArtifact を拡張し、1 回の呼び出しで artifact の /Type と Pagination /Subtype の両方を表現します。両パラメータが非空のとき、書き出される演算子は /Artifact << /Type /T /Subtype /S >> BMC となり、ISO 32000-1 §14.8.2.2.1 に従ってヘッダーやフッターなど完全に指定された Pagination artifact を有効にします。1 つのパラメータのみが非空の場合は、対応する単一キー形式が使用されます。DLL エントリポイント DLBeginArtifactEx と DLBeginArtifactExA もエクスポートされます。
Version 3.27.2
修正
- BeginArtifact が artifact タイプと pagination サブタイプを正しく区別するようになりました。引数が Pagination、Layout、Page (ISO 32000-1 §14.8.2.2.1 Table 330 による artifact タイプ) のとき、marked-content 演算子は /Subtype ではなく /Type を書き出します。Header、Footer、Watermark などのその他の値は引き続き /Subtype として書き出されます。これは pagination artifact をマークしようとした呼び出し元が /Subtype /Pagination と書かれていた以前の誤った出力を修正します。
Version 3.27.1
変更
- PDF/UA モードが有効で文書に埋め込みファイルが含まれているとき、AFRelationship エントリのないファイル仕様辞書は保存時に自動的にそれを取得するようになりました。書き込まれる値は /Unspecified で、ISO 14289-1 §7.11 のすべての埋め込みファイルが AFRelationship キーを持つ要件を満たします。これは EmbedFile で追加されたファイルとロード済み文書に既に存在する埋め込みファイルの両方に適用されます。
Version 3.27.0
変更
- AddRoleMap(CustomType, StandardType) は新しいタグ付き PDF API で、カスタム (非標準) 構造要素タイプ名から標準 PDF 構造タイプへのマッピングを登録します。保存時にマッピングは構造ツリールートの RoleMap 辞書に書き出され、アプリケーション固有のタグ名を使う文書に対する ISO 14289-1 §7.1 の要件を満たします。複数のマッピングを登録できます。重複キーは最後の呼び出しで上書きされます。DLL エントリポイント DLAddRoleMap と DLAddRoleMapA もエクスポートされます。
Version 3.26.0
変更
- BeginTagEx(TagType, AltText, ActualText, Lang) は新しいタグ付き PDF API で、BeginTag を拡張して明示的な自然言語属性を追加します。Lang が非空のとき構造要素の /Lang 属性に書き込まれ、ISO 14289-1 §7.2 で要求される多言語文書のための要素ごとの言語注釈を有効にします。空の Lang 文字列を渡すと BeginTag と同じ動作になります。DLL エントリポイント DLBeginTagEx と DLBeginTagExA もエクスポートされます。
Version 3.25.1
変更
- デフォルトの Windows コードページ (WinAnsiEncoding) でロードされた非サブセット化 TrueType フォントが ToUnicode CMap ストリームを受け取るようになり、これらのフォントで信頼性の高い Unicode テキスト抽出とコピー/ペーストが可能になりました。以前は明示的なコードページ オーバーライドや Differences 配列が存在するときのみ ToUnicode ストリームが書き出されていました。一般的なデフォルト エンコーディング パスではそれが欠けていました。
- 同じ修正は、明示的な非デフォルト コードページでロードされたが Differences 配列のない TrueType フォント、および packaged-font 形式でロードされたフォントにも適用されます。
Version 3.25.0
変更
- PDF/UA モードが有効なとき、非空の Contents エントリを持たない非除外注釈 (Widget、PrinterMark、TrapNet 以外のすべてのタイプ) は保存時に自動的にそれを受け取るようになりました。注釈の /T (タイトル / 作者) 値がフォールバックとして使われ、タイトルを持つが明示的なアクセシブル記述を持たない注釈に対する ISO 14289-1 §7.18.1 を満たします。
Version 3.24.0
変更
- PDF/UA モードが有効なとき、TU (ツールチップ / 代替記述) エントリを持たないインタラクティブ フォーム フィールドは保存時に自動的にそれを受け取るようになりました。フィールドの部分名 (/T エントリ) がフォールバック値として使われ、スクリーンリーダーがすべてのフィールドを識別できることを保証します。プッシュボタンは ISO 14289-1 §7.18.4 に従ってこの要件から正しく除外されます。
Version 3.23.1
変更
- GetInformation(200) は選択された文書で PDF/UA-1 モードが有効なとき '1' を返し、呼び出し元が実行時にコンフォーマンス モード状態をクエリできるようにします。
- GetInformation(201) は PDF/A-1a で '1'、PDF/A-1b で '2' を返し、PDF/A モードがオフのときは空文字列を返します。
- GetInformation(313) は保存ターゲットが現在ロックされている PDF バージョン文字列を返し、自由にバージョニングする文書には空文字列を返します。
修正
- GetInformation(311) と GetInformation(312) は、直近のバージョン ロック競合からのバージョン要件文字列と機能名を正しく返すようになりました (以前 v3.20.3 の項目で告知されたものの実装されていませんでした)。
Version 3.23.0
変更
- SetMarkInfo(Marked) が公開 API になりました。SetPDFUAMode で実行される完全な PDF/UA-1 セットアップから独立して MarkInfo.Marked フラグを設定できます。Marked が 1 のとき、ISO 14289-1 §7.18.6 で要求されるように MarkInfo.Suspects も false に設定されます。
- PDF/UA モードが有効なとき、すべてのページは保存時に自動的に /Tabs /S エントリを受け取り、ISO 14289-1 §7.18.4 の構造ベース タブ順序要件を満たします。
- SetPDFUAMode、SetDocumentLanguage、SetMarkInfo、BeginTag、EndTag、BeginArtifact、EndArtifact 用の HTML リファレンス ドキュメントを追加し、完全な構文表と使用例を含みます。
Version 3.22.0
変更
- BeginTag(TagType, AltText, ActualText) は現在のコンテンツストリームでタグ付き PDF 構造要素を開き、自動割り当てされた MCID を持つ BDC 演算子を書き出して、要素を文書構造ツリーに登録します。TagType は任意の PDF 標準構造タイプ (P、H1、Figure、Table など)。AltText と ActualText はオプションのアクセシビリティ文字列で、PDF テキスト文字列 (UTF-16BE) としてエンコードされます。
- EndTag は最後に開かれた構造要素を閉じ、対応する EMC 演算子をコンテンツストリームに書き出します。
- BeginArtifact(SubType) はコンテンツ領域を PDF artifact (pagination artifact、背景など) としてマークし、BMC 演算子を書き出します。SubType はオプションです。提供されたとき /Artifact << /Subtype /SubType >> として書き出されます。
- EndArtifact は EMC 演算子で artifact 領域を閉じます。
- 保存時に、タグ付き構造要素が登録されていれば、ライブラリは自動的に完全な StructTreeRoot を構築し、影響を受けるページに StructParents キーを割り当て、ParentTree 番号ツリーを書き出して、ISO 32000-1 §14.7 のタグ付き PDF 要件を満たします。
- 標準 Type 1 フォント (Helvetica、Times、Courier ファミリー、Symbol) と WinAnsi エンコーディングを持つ埋め込み Type 1 フォントが ToUnicode CMap ストリームを受け取るようになり、これらのフォントタイプで信頼性の高い Unicode テキスト抽出とコピー/ペーストが可能になりました。
Version 3.21.0
変更
- SetPDFUAMode(Language) は PDF/UA-1 (ISO 14289-1) コンフォーマンス モードを有効にします:文書を自動的に PDF 1.7 まで bump し、MarkInfo.Marked と MarkInfo.Suspects を書き出し、ViewerPreferences で DisplayDocTitle を有効にし、Language が非空のとき Catalog.Lang を設定し、ISO 14289-1 セクション 6.7.11 で要求される pdfuaid:part = 1 XMP 名前空間エントリを書き出します。
- SetDocumentLanguage(Language) は Catalog /Lang エントリを直接書き出し、PDF/UA モードから独立して文書言語を宣言できるようにします。
- MarkInfo.Marked が true に設定されるたびに MarkInfo.Suspects は false に設定され、ISO 14289-1 のタグ付き PDF 構造要件 (セクション 7.18.6) を満たします。
- Encrypt は文書が PDF/UA モードのとき CanCopyAccess (アクセシビリティのための内容コピー) 権限フラグを強制するようになりました。ISO 14289-1 セクション 7.17 で要求されています。
修正
- Choice (ドロップダウン) フォームフィールドは意味のないハードコードされたツールチップ値を持たなくなりました。TU は未設定のままにされ、呼び出し元がフォーム フィールド プロパティ API を介して意味のあるラベルを割り当てられます。
Version 3.20.3
変更
- Encrypt と AddSWFAnnotationFromFile は、保存バージョンが選択された暗号化強度または注釈タイプで要求される最低バージョン未満にロックされているとき、保存時にのみ失敗するのではなく LastErrorCode 602 で即座に 0 を返すようになりました。
- GetInformation(311) と GetInformation(312) は、ロックされたバージョンが AES-256 や RichMedia 注釈などの拡張レベル機能をブロックするとき、書き込み時に競合するバージョン要件を反映するようになりました。
Version 3.20.2
変更
- AddU3DAnnotationFromFile は、3D 注釈が低バージョン文書に追加されるとき、文書バージョンを自動的に PDF 1.6 まで bump するようになりました。他のすべての PDF 1.6+ API エントリ ポイントのバージョン自動 bump 動作と整合します。
Version 3.20.1
変更
- PDF 1.2 保存ターゲットは厳格な PDF 1.2 契約として強制されるようになりました。PDF 1.2 ターゲットで PDF 1.3+ オブジェクト (ページ TrimBox データなど) を保存しようとすると、混合バージョンファイルを出力する代わりに出力書き込み前に失敗します。
- PDF 1.7 Adobe 拡張レベル コンプライアンスが保存プリフライトの一部になりました。AESV3、AES-256、RichMedia、Projection、地理空間辞書、ETSI 署名サブフィルタが必要な ExtensionLevel に対してチェックされます。
- AES-256 暗号化、RichMedia 注釈、地理空間辞書、ETSI 署名サブフィルタは、PDFlib が文書を PDF 1.7 拡張コンテンツまで自動 bump するとき、対応する Adobe Extensions エントリを宣言するようになりました。
- Append 保存はフル保存と同じバージョン コンプライアンス ゲートを使うようになりました。
- バンドルされたオプションの PDFium ランタイム DLL を Win32 と Win64 でリフレッシュしました。GDI+ がデフォルト レンダラーのままで、PDFium は SetPDFiumFileName と SelectRenderer(3) を介してオプトインのままです。
- 検証:Delphi Win32 と Win64 の DUnitX スイートはそれぞれ 207/207 をパスし、C++Builder Win64x の GoogleTest は 61 テストをパスし、2 つの既存サンプル依存テストはスキップされました。
Version 3.20.0
変更
- さらに 8 つの PDFlib writer エントリ ポイントが Phase 3 EnsureMinVersion 経由でルーティングされ、emit される機能で要求される最低バージョンまで文書バージョンを自動 bump するようになりました:SetDocumentMetadata (PDF 1.4 - /Metadata XMP ストリーム)、SetPDFAMode(1 または 2) (PDF 1.4 - /MarkInfo + /OutputIntents)、PageJavaScriptAction (PDF 1.5 - Page /AA + JavaScript)、DocJavaScriptAction (PDF 1.4 - Catalog /AA + JavaScript)、SetTabOrderMode (PDF 1.5 - Page /Tabs)、NewOptionalContentGroup (PDF 1.5 - /Type /OCG)、SetNeedAppearances (PDF 1.5 - AcroForm /NeedAppearances)、NewFormField(ftSignature) (PDF 1.5 - AcroForm /SigFlags AppendOnly)。
- v3.15.0 セット (SetTransparency、SetPageUserUnit、Encrypt、SetPageLayout) と v3.17.0 セット (8 つの JavaScript / 埋め込みファイル / XFA / SWF エントリ) と合わせて、PDFlib は 21 個の writer エントリ ポイントで FVersion を自動 bump するようになりました。
- NewOptionalContentGroup は以前 FVersion を直接 bump していましたが、現在は EnsureMinVersion を通り、LockSaveVersion が尊重され bump が AutoBumpedFeatures に記録されます。
Version 3.19.0
変更
- 保存時とロード時の PDF バージョン コンプライアンスが、以前は延期されていた 4 つの機能も認識するようになりました:Btn /Ff ビット 15 NoToggleToOff (ラジオボタン専用) -> PDF 1.4、DeviceN /Subtype /NChannel (色空間の改良) -> PDF 1.6、FontFile3 /Subtype /OpenType (フォント プログラム タイプ) -> PDF 1.6、Sig /SubFilter ETSI.CAdES.detached または ETSI.RFC3161 -> PDF 1.7。
- NChannel ルールは DeviceN 色空間配列形式 [/DeviceN names alternateSpace tintTransform attributes] にマッチし、インデックス 4 の attributes 辞書が /Subtype /NChannel を持つときに発動します。
- FontFile3 OpenType ルールは 'FontFile3' という親キーを経由してストリームに到達したときのみ発動し、たまたま /Subtype /OpenType を持つ無関係なストリームはフラグされません。
- PDFFeatureRules テーブルは 103 ルール (99 + 4 新規) を保持するようになりました。
Version 3.18.6
変更
- 保存時とロード時の PDF バージョン コンプライアンスが、コンテナ タイプ認識付きで /AA (追加アクション) を認識するようになりました:Catalog /AA (文書レベル トリガー) -> PDF 1.4、Annot /AA (注釈トリガー) -> PDF 1.4、Page /AA (ページ トリガー) -> PDF 1.5。
- フォームフィールド /AA (PDF 1.2) は既存の PDF 1.3 保存契約でカバーされ続けます。新しいルールは不要です。
- PDFFeatureRules テーブルは 99 ルール (96 + 3 新規) を保持するようになりました。
Version 3.18.5
追加
- 新ルール:AcroForm /NeedAppearances が PDF 1.5 Table 218 に従って PDF 1.5 機能として認識されます。
変更
- PDFFeatureRules テーブルは 96 ルール (95 + 1 新規) を保持するようになりました。
修正
- 保存時とロード時の PDF バージョン コンプライアンスが Page /Tabs を PDF 1.5 機能として正しく分類するようになりました。以前は PDF 1.4 として誤分類されていました。PDF 1.4 仕様変更ドキュメント (Adobe TN #5409) は /Tabs を列挙せず、PDF 1.5 Table 8.10 は "Tabs (Optional; PDF 1.5)" を導入します。
Version 3.18.4
追加
- zlib-ng 回帰カバレッジに境界サイズ ペイロード、PNG ライク スキャンライン データ、stored マルチブロック ストリーム、既知の zlib ストリームが Delphi と C++Builder テスト ランナーを通して含まれるようになりました。
変更
- PDFlibZLib は常にバンドルされた静的 zlib-ng obj バックエンドを通常のライブラリ ビルドで使い、残っていた System.ZLib フォールバック パスを削除しました。
- 検証:Delphi Win32 と Win64 の DUnitX スイートはそれぞれ 194/194 をパスし、C++Builder Win64x の GoogleTest は 58 テストをパスし、2 つの既存サンプル依存テストはスキップされました。
Version 3.18.3
変更
- PDF またはテキスト出力を生成する Delphi と C++Builder のデモは、保存成功後に生成されたドキュメントを自動的に開くようになりました。
- インストーラ パッケージングがビルド成果物をデモ フォルダから除外し、C++Builder サンプルと DLL、ActiveX/OCX モジュールをオプトイン コンポーネントにするようになりました。対応するファイルはコンポーネントが選択されたときのみインストールされます。
Version 3.18.2
変更
- Delphi と C++Builder の EditFormField デモが、フィールド値を更新する前に /NeedAppearances をクリアするようになり、編集された各テキスト フィールドが保存された PDF でリフレッシュされた normal appearance ストリームを取得します。
- これにより保存された /AP ストリームと保存された /V 値が同期し、フィールドにフォーカスを当てたときに静的フィールド外観から欠けていたテキストが表示されるビューア依存の差異を回避します。
Version 3.18.1
変更
- 保存時とロード時の PDF バージョン コンプライアンスがビット レベル フォーム フィールド /Ff フラグと AcroForm /SigFlags AppendOnly ビットも認識するようになりました:/Ff ビット 21 (FileSelect, mask 1048576) -> PDF 1.4、/Ff ビット 22 (MultiSelect, mask 2097152) -> PDF 1.4、/Ff ビット 23 (DoNotSpellCheck, mask 4194304) -> PDF 1.4、/Ff ビット 24 (DoNotScroll, mask 8388608) -> PDF 1.4、/Ff ビット 25 (Comb, mask 16777216) -> PDF 1.5、/Ff ビット 26 (RichText / RadiosInUnison, 33554432) -> PDF 1.5、/Ff ビット 27 (CommitOnSelChange, mask 67108864) -> PDF 1.5、/SigFlags ビット 2 (AppendOnly, mask 2) -> PDF 1.5。
- /Parent 継承は追跡されません:明示的に /Ff または /SigFlags を持つ辞書のみがルールをトリガーします。
- PDFFeatureRules テーブルは 95 ルール (87 + 8 新規ビット レベル) を保持するようになりました。
- 検証:Delphi Win32 と Win64 の DUnitX スイートはそれぞれ 191/191 をパスし、C++Builder Win64x の GoogleTest は 57/57 をパスしました。
Version 3.18.0
変更
- 保存時とロード時の PDF バージョン コンプライアンスが、さらに 9 つのサブキーとビット レベル機能を認識するようになりました:ビット レベル注釈フラグ (/F mask):Locked (128) -> PDF 1.4、ToggleNoView (256) -> PDF 1.5、LockedContents (512) -> PDF 1.7。区別的なカタログとページのサブキー:/BoxColorInfo (ページ) -> PDF 1.4、/Permissions、/Legal、/PresSteps -> PDF 1.5、/VP (ページ geospatial viewport) -> PDF 1.6、/Collection (カタログ portable collection) -> PDF 1.7。
- PDFFeatureRules テーブルは 87 ルール (78 章レベル + 9 サブキー / ビット レベル) を保持するようになりました。
- 検証:Delphi Win32 と Win64 の DUnitX スイートはそれぞれ 189/189 をパスし、C++Builder Win64x の GoogleTest は 57/57 をパスしました。
Version 3.17.0
変更
- さらに 8 つの PDFlib writer エントリ ポイントが Phase 3 EnsureMinVersion 経由でルーティングされ、emit される機能で要求される最低バージョンまで文書バージョンを自動 bump するようになりました:AddLinkToJavaScript、SetOpenActionJavaScript、AddGlobalJavaScript、FormFieldJavaScriptAction (PDF 1.3 - JavaScript アクション)、AddEmbeddedFile、AddFileAttachment (PDF 1.3 - ファイル添付)、SetXFAFromString (PDF 1.5 - XFA フォーム)、AddSWFAnnotationFromFile (PDF 1.7 - RichMedia 注釈)。
- v3.15.0 セット (SetTransparency、SetPageUserUnit、Encrypt、SetPageLayout) と合わせて、PDFlib は 13 個の高バージョン writer エントリ ポイントをエンドツーエンドでカバーするようになりました。
- 検証:Delphi Win32 と Win64 の DUnitX スイートはそれぞれ 187/187 をパスし、C++Builder Win64x の GoogleTest は 57/57 をパスしました。
Version 3.16.3
追加
- 新しい PDFlib API:LockSaveVersion(Version) は文書を Version にピン留めし、Phase 3 writer 側 EnsureMinVersion がそれを超えて自動 bump するのを止めます。UnlockSaveVersion はロックをクリアします。
変更
- 保存時ゲートは変更されません:ロックされたバージョンを超える writer 出力機能は、ヘッダを silently に bump する代わりに保存時に LastErrorCode 602 を生成します。
- 検証:Delphi Win32 と Win64 の DUnitX スイートはそれぞれ 184/184 をパスし、C++Builder Win64x の GoogleTest は 57/57 をパスしました。
Version 3.16.2
変更
- ロード済み PDF は GetInformation(103) ("ContributorFeatures") を通じて、ロード時機能検出の contributor のみのビューを公開するようになりました。リストには最低必要バージョンが HeaderVersion (キー 100) より厳密に大きい機能のみが含まれ、"なぜ有効バージョンがファイル ヘッダーより高いのか?" という質問に直接答えます。
- GetInformation(101) ("DetectedFeatures") は変更されず、貢献に関係なくマッチしたすべての機能を引き続き列挙します。
- 検証:Delphi Win32 と Win64 の DUnitX スイートはそれぞれ 181/181 をパスし、C++Builder Win64x の GoogleTest は 57/57 をパスしました。
Version 3.16.1
追加
- ローダー側検出テストカバレッジを 6 つの追加合成フィクスチャで拡張:ページ内透明度 ExtGState (バージョン bump なし)、Catalog /MarkInfo (PDF 1.3 -> PDF 1.4)、/OCProperties + OCG コンテンツ (PDF 1.4 -> PDF 1.5)、/Type /3DStream (PDF 1.5 -> PDF 1.6)、複数機能組み合わせフィクスチャ、スナップショット安定性チェック。
変更
- 検証:Delphi Win32 と Win64 の DUnitX スイートはそれぞれ 179/179 をパスし、C++Builder Win64x の GoogleTest は 57/57 をパスしました。
Version 3.16.0
追加
- 新しい GetInformation キー:100 は HeaderVersion (リテラル %PDF-X.Y) を返し、101 は DetectedFeatures (ロード時にマッチした機能、CRLF 区切り) を返し、102 は AutoBumpedFeatures (writer 側 EnsureMinVersion をトリガーした機能、CRLF 区切り) を返します。
変更
- ロード済み PDF 文書がコンテンツ駆動のバージョン検出パスを通過するようになりました:すべての間接オブジェクトが保存時ゲートで使われる feature-to-minimum-version テーブルを通じて走査され、コンテンツが実際により高いバージョンを要求するときに FVersion がリテラル %PDF-X.Y ヘッダー値を超えて bump されます。例として /UserUnit ページ エントリは、ファイル ヘッダーが PDF 1.4 と書かれていても、有効バージョンを PDF 1.6 まで bump します。
- 保存時ゲートは影響を受けません:ロード時に有効バージョンが bump され、その後 SetInformation(0, ...) で明示的にダウングレードされた文書は、保存時に依然として LastErrorCode 602 を生成します。
- 検証:Delphi Win32 と Win64 の DUnitX スイートはそれぞれ 173/173 をパスし、C++Builder Win64x の GoogleTest は 57/57 をパスしました。
Version 3.15.0
変更
- 特定の最低 PDF バージョンを要求する機能を生成する writer エントリ ポイントが、文書の PDF バージョンを自動的に bump するようになりました。PDF 1.3 とマークされた文書で SetTransparency を呼び出すと、保存を LastErrorCode 602 で失敗させる代わりに、ヘッダーを PDF 1.4 に昇格させます。
- 同じ自動 bump が SetPageUserUnit (>=1.6)、Encrypt + Strength 1/2/3/4 (それぞれ >=1.4/1.6/1.7/1.7)、SetPageLayout の 2 ページ バリアント (>=1.5) にも組み込まれました。
- 3.14.x との動作の変更:以前 v3.12.6 の "保存ターゲットが writer 出力機能を拒否する" ゲートに依存していたアプリケーションは、bump されたバージョンで成功するようになりました。すでに高バージョン機能を含むロード済み PDF は依然として既存の保存時ゲートを通り、タグ付き PDF をロードして PDF 1.3 を選択すると依然として LastErrorCode 602 で失敗します。
- 検証:Delphi Win32 と Win64 の DUnitX スイートはそれぞれ 170/170 をパスし、C++Builder Win64x の GoogleTest は 57/57 をパスしました。
Version 3.14.3
変更
- 保存時 PDF バージョン コンプライアンスが残りの PDF 1.6 3D 辞書タイプ (/Type /3DStream /3DRef /3DBackground /3DRenderMode /3DLightingScheme /3DCrossSection /3DNode) と PDF 1.7 の Redact、RichMedia、Projection 注釈サブタイプおよび /Type /Requirement と /ReqHandler コンパニオン辞書も認識するようになりました。
- 検証:Delphi Win32 と Win64 の DUnitX スイートはそれぞれ 168/168 をパスし、C++Builder Win64x の GoogleTest は 57/57 をパスしました。
Version 3.14.2
変更
- 保存時 PDF バージョン コンプライアンスが PDF 1.5 機能も認識するようになりました:/XFA フォーム、/AlternatePresentations、/Renditions 名前ツリー、/Type /Rendition /MediaCriteria /MediaPermissions /MediaPlayers マルチメディア辞書、Screen 注釈サブタイプ。
- PDF 1.4 として保存すると、これらの機能を持つ文書を LastErrorCode 602 で拒否するようになりました。
- 検証:Delphi Win32 と Win64 の DUnitX スイートはそれぞれ 166/166 をパスし、C++Builder Win64x の GoogleTest は 57/57 をパスしました。
Version 3.14.1
変更
- 保存時 PDF バージョン コンプライアンスが PDF 1.4 機能も認識するようになりました:タグ付き PDF /StructTreeRoot /MarkInfo および StructElem 辞書、文書 /Lang とページ /Tabs エントリ、/OutputIntents と /OutputIntent 辞書、/UR3 使用権利署名、および PDF 1.4 の注釈サブタイプ Polygon、PolyLine、Caret、Ink、Popup、Watermark。
- PDF 1.3 として保存すると、これらの機能を持つ文書を LastErrorCode 602 で拒否するようになりました。
- 検証:Delphi Win32 と Win64 の DUnitX スイートはそれぞれ 165/165 をパスし、C++Builder Win64x の GoogleTest は 57/57 をパスしました。
Version 3.14.0
変更
- 保存時 PDF バージョン コンプライアンスがスムース シェーディング、function オブジェクト、ICCBased と DeviceN 色空間、/TrimBox /BleedBox /ArtBox ページ エントリ、/ToUnicode CMap、ファイル添付および /Sound と /Movie 注釈、/Type /Filespec と /Type /EmbeddedFile 辞書、/Group /EF /Alternates /Mask キー、JavaScript アクションなど、PDF 1.3 機能も認識するようになりました。
- PDF 1.2 呼び出し元は現在 PDF 1.3 契約で保存します:リテラル %PDF-1.2 ヘッダーは保持されますが、ゲートは PDF 1.3 機能を受け入れます。PDF 1.4 以降の機能は依然として LastErrorCode 602 で拒否されます。
- 検証:Delphi Win32 と Win64 の DUnitX スイートはそれぞれ 162/162 をパスし、C++Builder Win64x の GoogleTest は 57/57 をパスしました。
Version 3.13.0
変更
- 高バージョン機能を保存時に拒否する PDF バージョン コンプライアンス ゲートを専用モジュールにリファクタリングし、文書コアを乱すことなくルール セットを拡張できるようにしました。
- v3.12.7 と比較してユーザー可視の動作変更なし:同じ範囲外バージョン機能が依然として LastErrorCode 602 で拒否されます。
- 検証:Delphi Win32 と Win64 の DUnitX スイートはそれぞれ 155/155 をパスし、C++Builder Win64x の GoogleTest は 57/57 をパスしました。
Version 3.12.7
追加
- Delphi DUnitX と C++Builder GoogleTest スイートで PdfToImage 直接アクセス レンダリング ワークフローの自動テスト カバレッジを拡張しました。
変更
- Delphi VCL GUI テスト ランナーが Syntax と XRef フィクスチャを登録し、コンソール ランナーのカバレッジと一致するようになりました。
- 検証:Delphi Win32 と Win64 の DUnitX スイートはそれぞれ 147/147 をパスし、C++Builder Win64x の GoogleTest は 57/57 をパスしました。
Version 3.12.6
変更
- PDF 1.3、1.4、1.5、1.6、または 1.7 として保存すると、選択されたバージョンがフル保存出力契約として強制されるようになりました。
- フル保存はカタログ /Version オーバーライドを削除し、低ターゲット用のサポートされていないカタログ拡張とメタデータ エントリを削除し、PDF 1.3 として保存するときに PDF 1.4 XMP メタデータ ストリームを抑制します。
- SaveToFile、SaveToString、SaveToStream は、選択された PDF ターゲット バージョンが透明度、optional content、JPX、UserUnit、3D、AES crypt-filter 機能など文書に依然として存在する機能より低いとき、LastErrorCode 602 で失敗するようになりました。
Version 3.12.5
追加
- 未知のリテラル文字列エスケープと混合 8 進/非 8 進エスケープ シーケンスの回帰カバレッジを追加しました。
変更
- PDF 1.7 リテラル文字列解析を改善し、未知のエスケープ シーケンスが標準で要求されるようにバックスラッシュを無視するようにしました。
- リテラル文字列の 8 進エスケープが 8 進数字のみを消費し、続く非 8 進数字を通常の文字列データとして保存するようになりました。
- 検証:Delphi Win32 と Win64 の DUnitX スイートはそれぞれ 141/141 をパスしました。
Version 3.12.4
追加
- 右中括弧 name 区切り文字と疎な圧縮オブジェクト xref ストリーム エントリの回帰カバレッジを追加しました。
変更
- PDF 1.7 字句解析を改善し、name オブジェクトが右中括弧区切り文字で正しく停止するようになりました。
- 検証:Delphi Win32 と Win64 の DUnitX スイートはそれぞれ 139/139 をパスしました。
修正
- SmartAccess の xref ストリーム圧縮オブジェクト エントリのロードで、オブジェクト ストリーム番号が PDF バイト長より大きい場合を修正しました。
Version 3.12.3
追加
- 新しい AES 暗号化 PDF が crypt フィルタの Length 値をビット長として書き出すようになり、PDF 1.7 crypt フィルタ辞書契約と一致するようになりました。
変更
- StrF、StmF、EFF、Identity、None、または StdCF スタイルの名前付き crypt フィルタを使う標準セキュリティ ハンドラ ファイルの PDF 1.7 暗号化文書の互換性を改善しました。
- メタデータ ストリームが復号化、暗号化、コピー/保存ワークフロー中に EncryptMetadata=false を尊重するようになり、通常のストリームのように処理されなくなりました。
- 埋め込みファイル ストリームが /Type /EmbeddedFile を持ち、暗号化文書のロードまたは保存時に埋め込みファイル crypt フィルタ決定パスを使うようになりました。
- 外部埋め込みファイル ストリームが FFilter を Filter に昇格させるときに FDecodeParms も DecodeParms に昇格させ、ストリームの decode パラメータを保持するようになりました。
- XRef ストリームの Prev/XRefStm 値と大きな数値オフセットがパーサと SmartAccess パスを通じて 64 ビット精度を保持するようになりました。
- 検証:Delphi Win32 と Win64 の DUnitX スイートはそれぞれ 137/137 をパスしました。
Version 3.12.2
変更
- PDF 1.7 ストリーム デコード互換性を改善しました。汎用ストリーム デコードが /DP を DecodeParms エイリアスとして尊重し、間接 decode-parameter 配列エントリを解決し、/AHx と /LZW 標準フィルタ略語を受け入れるようになりました。
- 大ファイル PDF 出力が xref、startxref、linearization、デジタル署名 ByteRange オフセットを 64 ビット フォーマット パスを通じて書き出すようになり、32 ビット整数ヘルパーを通じてこれらの値を狭めなくなりました。
- ロード済み文書がカタログ /Version エントリをファイル ヘッダー バージョンより新しいときに有効 PDF バージョンとして扱うようになりました。
- 検証:Delphi Win32 と Win64 の DUnitX スイートはそれぞれ 134/134 をパスしました。
修正
- 書き換えられた xref-stream trailer が PDFlibPas によって古典的 trailer 辞書として保存されるとき、ストリーム専用の DecodeParms キーを保持しなくなりました。
Version 3.12.1
変更
- 生成された PDF が最初のページがビューアー ウィンドウの利用可能な高さに合わせられた状態で開くようになり、最初のページ全体がウィンドウに合う最大のズームで上から下まで表示されます。文書にカスタム OpenAction (SetOpenActionDestination、SetOpenActionMenu、SetOpenActionJavaScript) を設定するとこのデフォルトをオーバーライドできます。
Version 3.12.0
追加
- 静的 C ライブラリ用に 32 バイト アラインの malloc/calloc/realloc/free CRT スタブを追加し、TPDFJPEGImage.Compress を修正して jpeg_mem_dest バッファを割り当てたのと同じ C free パスで解放するようにしました。
- 公開検証ノートを拡張して、本リリースの厳格な自動カバレッジ:ライブラリ ビルド、圧縮ラウンドトリップ、HelloWorld /FlateDecode 出力、JPEG レンダリング、画像ワークフロー、フォント、フォーム、セキュリティ、署名、印刷、C++Builder デモ派生ワークフローを明示するようにしました。
変更
- Windows 静的バックエンドに libjpeg-turbo NASM SIMD オブジェクトが Win32 と Win64 用に含まれるようになり、Win64x zlib-ng セット用の zlib-ng x86 SIMD ディスパッチ オブジェクトも追加されました。
- zlib-ng リビルド スクリプトを再設計し、Win64x bcc64x と診断用 MSVC ビルドが汎用、SSE2、SSSE3、SSE4.1/SSE4.2、PCLMULQDQ、AVX2 のソース ファイルをファイルごとの機能フラグでコンパイルし、1 つのグローバル コンパイラ スイッチに依存しないようにしました。
Version 3.11.0
追加
- Win64 ビルド用に小さな zlib-ng ブリッジ オブジェクトを追加し、Pascal コードが安定した zlib 互換エントリ ポイントを保持しつつ、Delphi と C++Builder がそれぞれのリンカ互換オブジェクト セットを消費できるようにしました。
変更
- Windows Flate 圧縮と解凍を zlib-compatible モードの zlib-ng に切り替えました。Win32、Delphi Win64、C++Builder Win64x が Lib\thirdparty\Win32、Lib\thirdparty\Win64、Lib\thirdparty\Win64x からの ABI 一致 zlib-ng 静的オブジェクト セットをリンクするようになりました。
- すべての C++Builder デモ プロジェクトを PDFLIB_CPPBUILDER を定義するように更新し、GoogleTest ランナーと一致させ、Win64x デモが Delphi Win64 の zlib-ng オブジェクトをリンクするのを防ぎました。
修正
- Win64 パスは Delphi の System.ZLib ユニットを経由しなくなり、PDF ストリーム圧縮/解凍は 32 ビット ビルドと同様に zlib-ng バックエンドの恩恵を受けられるようになりました。
Version 3.10.3
追加
- C++Builder GoogleTest スイートを Demo\C++Builder 配下のすべてのデモをカバーするように拡張しました。7 フィクスチャの phase-1 レイアウトが 15 フィクスチャ / 52 GoogleTest ケースに成長し、すべて Win64x でパスしました。新たにカバーされたデモ:AddFormattedTitle、AddTextImage、AddTrueTypeSubsettedFont、AddWebLink、CanvasText、CaptureToNewSize、CopyPageRanges、CreateWithImage、CreateWithImageToStream、DoInTheStream、DrawWrappedText、EditFormField、EmbeddedFonts、ExtractAnnotAttach、ExtractEmbeddedFonts、ExtractImage、ImageToPdf、ImportEMF、MultiFunction (renderer 切り替え)、PageOperations、PdfDecrypt、PdfPermission、PrintPDF、TextMeasure、TextPaging。
Version 3.10.2
追加
- Tests\C++Builder の下に C++Builder GoogleTest ランナーを追加し、C++Builder デモが使用するのと同じ {$JPHNE} 生成 HPP ヘッダを通じて Lib\PDFlibrary.pas を駆動します。最初のフェーズで 7 つのコア Delphi シナリオ (HelloWorld、DrawShapes、CreateTable、PdfEncrypt、ExtractText、PdfSigning、PdfToImage レンダリング) を 17 GoogleTest ケースとしてミラーし、すべて Win64x でパスしました。
- Delphi DUnitX スイートを Tests.Print で拡張し、PrintPDF と ShowPrinterBins デモをカバー (デフォルト プリンタ列挙、カスタム プリンタ セットアップ、印刷オプション、ファイルへのリダイレクト印刷ジョブ)、Tests.Render に MultiFunction デモの同じソース PDF 上の GDI+ / PDFium / Cairo エンジン選択を行う renderer 切り替えテストを追加しました。
Version 3.10.1
追加
- SetPageSize に 57 個の名前付きページサイズを追加し、同じ正規ページサイズ名をここでも使用できるようにしました: SIZE8X11, QUADA0, DOUBA0, B0PLUS, ENVB4/B5/C6/DL/MONARCH, ENV9/10/11, ANSIA/B/C/D/E, ARCHA/B/C/D/E1/E, SHIROKU, G1K, USBC/EUBC/ASBC, ID1/ID2/ID3, ONEINCH/TWOINCH/L2INCH/USVISA, P2R..P24R / S8R / P4D photo prints, plus the Chinese / Taiwanese octavo and sextodecimo sheet formats LARGE/STANDARD/CROWN/ROC 8K and the matching 16K halves.
Version 3.10.0
追加
- Demo 配下のすべての Delphi サンプル用にネイティブ C++Builder バージョンを追加しました。PDF 作成、ページ操作、フォント、画像、セキュリティ、署名、レンダリング、印刷のデモが、Delphi 側のラッパーなしで C++Builder からビルドして実行できるようになりました。
- 各 Delphi デモ フォルダに簡潔な英語の Readme.txt を追加し、デモが何を示すか、フォーカスする API、実行方法を記述しました。Demo\Delphi\index.html の HTML 概要がトピックでグループ化してすべてのデモにリンクします。
変更
- 各新規デモは Demo\C++Builder\<Name>\ にあり、Lib\PDFlibrary.pas を直接消費するコンソール プロジェクトで、実行に必要な入力ファイルを同梱しています。
- 各 C++Builder デモに同じ Readme.txt をミラーし、Run セクションをコンソール ワークフロー用に書き直しました (Open/SaveDialogs の代わりに argv 引数)。対応する Demo\C++Builder\index.html が同じトピック グループですべての C++Builder デモを列挙します。
修正
- ImportEMF デモのメモリ リークを修正しました (TPDFlib インスタンスが作成されたものの解放されていませんでした)。
Version 3.9.14
変更
- ラップ テキストと HTML ページネーション デモを整理し、各デモが自身の API にフォーカスして単一ボタンから実行されるようにしました。
- 2 つのデモ プロジェクト (EmbeddedFonts と PdfPermission) をリネームし、コンパイルされた実行可能ファイルが古いプロトタイプ名ではなくフォルダ名と一致するようにしました。
修正
- ページ範囲コピー デモを修正し、常に失敗を報告するのではなく実際にページをコピーするようにしました。
Version 3.9.13
追加
- ユーティリティ ユニット (buffer、AES、ZLib、Unicode、ダイジェスト ハッシュ) とドキュメント作成、ファイルへの保存とストリームへの保存、ロード ラウンドトリップ、AES-128/AES-256 暗号化を含むライブラリ レベル ワークフローをカバーする自動 DUnitX テスト スイート (コンソールと VCL GUI ランナー) を導入しました。
修正
- 内部バッファ リーダーのストリーム位置バグを修正しました:2 バイト ワード読み取りが読み取りカーソルを 2 バイトではなく 4 バイト進めていました。2 バイトより長いバッファでは、後続の読み取りが間違ったオフセットに着地し、silently に誤ったデータを返します。バイトとワード読み取りを混在させるバイナリ データ構造を解析するときに最も顕著でした。
Version 3.9.12
変更
- GDI+ 画像レンダリングが画面または出力解像度にラスタ画像をスケーリングするときに、デフォルトでスムースで高品質のバイキュービック補間を使うようになりました。以前はデフォルトが最近傍法で、画面プレビューや高 DPI 出力のために拡大された小さな画像 (ロゴ、サムネイル) で目に見える階段状のアーティファクトを生成していました。よりシャープな最近傍モードを好む呼び出し元は SetGDIPlusOptions で古い動作を復元できます。
Version 3.9.11
修正
- 色キー透明度 (画像辞書の /Mask 色範囲配列) を使う PDF 画像の Cairo レンダリングを修正しました。以前は、ページがこの形式の透明度を持つ画像を含むと、Cairo レンダラーは画像をページ背景に合成する代わりに完全に省略していました。修正により、宣言された色キー範囲からピクセルごとのアルファ チャネルが派生し、透明画像としてレンダリングされ、GDI+ レンダラーと視覚的に一貫した出力が生成されます。
Version 3.9.10
修正
- クリップされた画像シーケンスに続くすべてのページ コンテンツが画像のクリッピング矩形内に誤って制限されていた Cairo レンダリング回帰を修正しました。グラフィックス状態を保存し、クリップ パスを適用し、画像をペイントし、状態を復元する PDF ページ — 額入りや境界付き画像の一般的なレイアウト技法 — は、後続のすべてのテキスト、シェイプ、グラフィックスがクリップされた領域内のみにレンダリングされていました。Cairo の状態保存と復元が PDF q/Q 演算子に正しくマップされるようになり、画像が描かれた後にクリッピング領域が破棄されます。
Version 3.9.9
追加
- GDI+ と PDFium に加えて Cairo ベースの PDF レンダリング エンジンを 3 つ目のレンダリング オプションとして追加しました。レンダリングする前に SelectRenderer(2) を呼び出して有効化します。エンジンはバンドルされた DLL\Cairo フォルダの cairo.dll が必要です。Cairo レンダリングは GDI+ と同じ出力モードをサポートします:ビットマップ ファイルとストリーム エクスポート (BMP、JPEG、PNG、GIF、TIFF、G4 TIFF)、デバイス コンテキスト レンダリング、直接プリンタ出力。
変更
- MultiFunction View/Print デモは 3 方向 renderer セレクタを公開するようになり、ユーザーは同じ文書上で GDI+、PDFium、Cairo の出力をコード変更なしで並べて比較できます。
Version 3.9.8
修正
- RAD Studio 13.1 以降で現れた Win32 C ランタイム シムの 2 つの偽コンパイラ診断を抑制しました。コンパイラ バージョン能力ガードが Delphi 2009 以降のコンパイラに伝播しなかったため、廃止予定メモリ マネージャ API に対してコンパイルされる廃止予定警告 (W1000) が発生しました。Delphi 7 ビルドのためにのみ必要な内部互換変数の未使用変数ヒント (H2164) が発生しました。それはそのバージョンの条件ブロックにスコープされるようになりました。両方の問題は診断のみでランタイムへの影響はありません。
Version 3.9.7
追加
- Windows でオプションの PDFium ベースのページ レンダリングを追加し、BMP ストリーム レンダリング、デバイス コンテキスト レンダリング、メモリ レンダリング、プリンタ出力を含みます。
変更
- Delphi MultiFunction View/Print デモを renderer セレクタで更新し、ユーザーが既存の GDI+ レンダラーと PDFium の間で切り替えられるようにしました。
Version 3.9.6
追加
- 完全な PDFlibPas パッケージとトライアル パッケージ用に別々の Inno Setup スクリプトを提供し、バージョン管理メタデータ、ビルド出力、IDE キャッシュ、ローカル エージェント ファイル、出荷パッケージに含まれないバンドル サードパーティ ソース ツリーをリリース重視で除外します。
変更
- トライアル インストーラがセットアップ実行可能ファイルを生成する前に、RAD Studio 11.3、12.3、13.1 用のトライアル バイナリ ライブラリとトライアル Delphi デモをビルドしてパッケージするようになりました。
Version 3.9.5
修正
- RAD Studio 9.0 / Delphi XE2 での Win32 ライブラリ ビルドを修正しました。ビルド スクリプトが渡していた DCU 出力ディレクトリ フラグは Delphi 2010 以降にのみ存在しました。XE2 のコンパイラはそのフラグを違う方法で解釈し、ソース ファイル処理前に文字化けした出力パスと致命的エラーを生成していました。スクリプトはターゲット コンパイラ バージョンに基づいて適切なフラグを自動的に選択するようになりました。
- ライブラリ ソース内の関連するコンパイラ バージョン ガードを修正しました。XE2+ 条件下で XE4 で導入された名前修飾ランタイム関数を呼び出していました。XE2 と XE3 ターゲット ビルドは正しい互換インポートを解決するようになりました。
Version 3.9.4
修正
- ネットワーク プリンタとサーバー共有プリンタのプリンタ セットアップを修正しました。プリンタ デバイス コンテキスト ハンドルではなく、プリンタ DEVMODE ハンドルを通じて用紙トレイ、メディア、両面、品質、その他の印刷設定を適用するようになりました。
Version 3.9.3
変更
- バンドルされた AES バックエンドを Win32 と Win64 の両方で Brian Gladman の 2018 AES ソースにリフレッシュしました。再現可能なビルド スクリプトにより、静的 AES オブジェクトをいつでもソースからリビルドできるようになりました。プロセスで Pascal バインディングの ABI 欠陥が発見され修正されました:AES-CBC 暗号化と復号化関数の C 呼び出し規約宣言が欠けていたため、Win32 ビルドは silently に引数を間違ったレジスタ順で渡し、誤った暗号化出力を生成する可能性がありました。Win64 ビルドはプラットフォームが統一された呼び出し規約を強制するため影響を受けませんでした。
セキュリティ
- サードパーティ リビルド スクリプトを強化し、MSVC ベースの zlib、JPEG、CRT スタブ スクリプトがリポジトリ ルートと thirdparty ディレクトリの両方から起動できるようになりました。以前は作業ディレクトリを thirdparty フォルダに設定することが必要でした。
Version 3.9.2
修正
- JPEG 2000 バックエンドを Win32 と Win64 の両方で旧来の OpenJPEG 1.5 から OpenJPEG 2.5.4 にアップグレードしました。両プラットフォームが静的オブジェクト リンクを使うようになり、JPEG 2000 のエンコードとデコードが追加のランタイム DLL なしで動作します。現代の codec は最新の JP2/J2K ヘッダー処理、コールバック駆動のストリーム API、上流プロジェクトから蓄積されたバグと安全性の修正をもたらします。公開 TJpeg2000Bitmap API は変更されていません。
Version 3.9.1
修正
- libjpeg-turbo アップグレード後の JPEG ページ レンダリングと画像エクスポートを修正し、Win32 と Win64 での PdfToImage JPG 変換と TPDFJPEGImage.SaveToStream 出力を復元しました。
- Win32 libjpeg-turbo ABI バインディングを修正し、コールバック、構造アラインメント、ブール フィールド、メモリ ベースの JPEG 出力先が libjpeg-turbo 3.1.90 と一致するようにしました。
- バンドル zlib 1.3.2 バックエンドの Win32 FlateDecode ストリーム解凍を修正し、PdfToImage サンプル文書などのファイルの PDF xref ストリーム ロードを復元しました。
Version 3.9.0
変更
- バンドルされた JPEG 2000 バックエンドを旧来の OpenJPEG 1.5 から OpenJPEG 2.5.4 にアップグレードしました。JPEG 2000 のロードと保存が現代の codec、コールバック駆動のストリーム API、現在の JP2/J2K ヘッダー処理を使うようになり、公開 TJpeg2000Bitmap API は保持されます。
修正
- JPEG 2000 出力が小さい画像に有効な OpenJPEG 解像度カウントを自動的に選択するようになり、Win32 静的バックエンドが欠けている MSVCRT ヘルパー エクスポートに依存しなくなりました。
Version 3.8.1
修正
- Win32 と Win64 上のすべての 16 の装飾的リンカ W1028 "Bad global symbol definition" 警告を排除しました。ソース レベルのリネームで余分な Pascal 側重複が削除されます (jpeg_std_error と jmemnobs アロケータ スタブが obj レイヤーからのみ解決されるようになりました)。残りの 3 つの bcc32 / vc64 obj シンボル (jpeg_natural_order、jpeg_aritab、jpeg_nbits_table) は Pascal 側データに対してリンク解決を維持する必要があり、それらは thirdparty\build-jpeg-vc64.bat の ObjConv 後処理パスで COFF シンボル名が剥がされます。公開 API 変更なし。Delphi Win32 と Win64 ビルドのクリーンなリンカ出力。
Version 3.8.0
セキュリティ
- Win64 JPEG codec を IJG スタイル libjpeg から libjpeg-turbo 3.1.90 にアップグレードし、v3.7.0 (Win32) で開始された JPEG 移行を完了しました。Win32 と Win64 のパスは現在、同じ現代の JPEG codec を共有し、同じ SIMD 最適化された内部ループと上流から累積された 30 以上の CVE / fuzz 修正を持ちます。公開 PDFlibPas API は変更されていません。
Version 3.7.0
セキュリティ
- Win32 JPEG codec を IJG libjpeg-6b から libjpeg-turbo 3.1.90 にアップグレードしました。SIMD 最適化された内部ループによる大幅に高速な JPEG エンコード/デコード、libjpeg-turbo 上流で累積された 30 以上の CVE / fuzz 修正。公開 PDFlibPas API (TPDFJPEGImage クラス、DumpJPEG 関数) は変更されていません。既存の PDF/JPEG コード パスはソース変更なしで高速に動作します。
Version 3.6.0
変更
- 本リリースでは Win64 zlib パスは変更されていません — 引き続き Delphi バンドルの System.ZLib ユニットを使用します。
- Win32 zlib パスに Win64 リンク時 CRT シム PDFlibCLibs.pas (v3.5.0 で導入) を有効化し、新しい zlib 1.3.2 obj ファイルが参照する memcpy / memset / malloc / free シンボルを提供します。
セキュリティ
- Win32 zlib を 1.2.x から 1.3.2 にアップグレードしました。1.2.8 以降上流で累積された標準の 25 以上の CVE / fuzz 修正、加えて 64 ビット ウィンドウ ストリームで使用される新しい inflateBack9 / inflateTree9 エントリ ポイントを含みます。公開 PDFlibPas API (DeflateStr / InflateStr / InflateStrParms) は変更されていません。
Version 3.5.0
追加
- OpenJPEG 2.5.4 用のビルド インフラストラクチャを追加しました。OpenJPEG ソース ツリー自体はユーザーが独立に取得します (git clone uclouvain/openjpeg を Lib/thirdparty/OpenJPEG/ に)。これにより PDFlibPas のビルド設定に触らずアップグレードできます。
- Lib/PDFlibCLibs.pas を追加しました。これは Win64 バックエンドで使用する Win64 リンク時 CRT shim です。MSVC でコンパイルされた C obj ファイルと、msvcrt.dll を自動的に取り込まない Delphi の Win64 リンカー (dcc64 / Win64x ld.lld / BCB ilink64) との間を橋渡しします。
変更
- バンドル C 画像 / 圧縮ライブラリ用にフレッシュなビルド インフラストラクチャをベンダリングしました:zlib 1.3.2、libjpeg-turbo 3.1.90、libtiff 4.7.1。Embarcadero bcc32 (Win32) と MSVC cl.exe (Win64) の両方のビルド スクリプトがソース ツリーと並んで Lib/thirdparty/ にあり、RAD Studio + VS2022 を持つ誰でもクリーン ソースから静的 obj ファイルをリビルドできます。
Version 3.4.0
セキュリティ
- 暗号化キー、AES 初期化ベクトル、Perms 権限ブロック生成を予測可能な乱数源に対して強化しました。壁時計時刻が近いシステムで生成された暗号化 PDF はもはや簡単に関連付けできず、AES-256 文書は完全なキー強度を維持します。
- 不合理な Width、Height、BitsPerComponent、DeviceN コンポーネント数を宣言する不正または敵対的な PDF に対して画像辞書解析を強化しました。範囲外の値はピクセル バッファ演算の前にクランプされ、そのようなファイルを開いたときのクラッシュを防ぎます。
- /Prev xref チェーンまたは /Parent ページ リンクがサイクルを形成するか過度に深い文書に対してクロス リファレンスとページ ツリー トラバーサルを強化しました。リーダーは現在、スタックを使い切るまで再帰する代わりに不正な構造をクリーンに拒否します。
Version 3.3.1
追加
- PDFlibRenderer.pas の初期 Git ベースラインにすでに存在していたレンダー修正の周りにインライン根拠コメントを追加しました。コメントは SetPen がストローク幅をアクティブ canvas 変換でスケーリングする理由、Type 3 フォント CharProc d0/d1 演算子がそれらのオペランドを消費しなければならない理由を文書化します。ランタイム動作の変更はありません。
修正
- コンポーネントごとの Windows ビルド スクリプトを合理化しました。DLL/、OCX/、Dylib/ フォルダはもはや別の build12-* / build13-* バリアントを持ちません:各プラットフォームは今や単一の build-Win32 / build-Win64 スクリプトを持ち、最新の RAD Studio にピン留めし、オプションの "debug" 引数を受け付けます。
Version 3.3.0
修正
- PDFlibRenderer.pas での変換されたストローク レンダリングを修正しました。SetPen は Picasso を呼ぶ前に PDF 線幅に現在の canvas 変換スケールを適用し、すでに座標が変換されているパスでストロークが過大または過小サイズになるのを防ぎます。これは Type 3 グリフ アウトラインが太く不規則なブロックとしてレンダリングされる可能性のある問題を修正します。
- コンテンツ ストリーム パーサでの Type 3 フォント CharProc d0/d1 処理を修正しました。d0 は 2 つの幅オペランドを消費し、d1 は 6 つの幅/バウンディング ボックス オペランドを後続の描画コマンドが実行される前に消費し、古いオペランドがグリフまたはパス ジオメトリを破損するのを防ぎます。