PDF バージョン別保存互換性
Version 3.23.0 以降、選択した PDF 保存バージョンはフル保存の厳密な出力契約として扱われます;アプリケーションが SetInformation(0, "1.2")、"1.3"、"1.4"、"1.5"、"1.6"、または "1.7" を呼び出すと、SaveToFile、SaveToString、SaveToStream は選択されたターゲットに一致する出力を書き込むか、出力を書き込む前に失敗します
フル保存では Catalog /Version の上書きを削除するため、読み込んだ文書が選択されたヘッダーを超えて実効バージョンを暗黙に上げることはありません。低いバージョンのターゲットでは、未対応の Catalog /Extensions エントリも削除され、PDF 1.3 ターゲットでは文書情報辞書を保持したまま Catalog /Metadata と XMP Metadata ストリームが省略されます
保存前の preflight は、混在バージョンのファイルを生成する代わりに、既知の後続バージョン機能を拒否します。確認対象には、PDF 1.3 のページボックス、埋め込みファイルストリーム、JavaScript アクション、ICCBased および DeviceN 色空間、ToUnicode CMaps、PDF 1.4 の透明効果、Tagged PDF 構造、output intents、注釈キー、PDF 1.5 の object streams、任意コンテンツ、XFA、page tabs、署名フィールドの append-only フラグ、高度なフォームフィールドフラグ、PDF 1.6 の UserUnit、OpenType フォントプログラム、3D 辞書、NChannel 色空間、viewport データ、PDF 1.7 の RichMedia、Projection、Redaction、高度な注釈、ETSI 署名サブフィルターが含まれます; 同じルールセットは、annotation /CA の不透明度、JBIG2Decode、Metadata ストリーム、文書レベルの EmbeddedFiles name tree、JPXDecode、xref streams、Crypt filters、AESV2 crypt filters、PDF 1.7 Requirements も対象にします
PDF 1.7 の Adobe extension-level 要件は、PDF 1.7 ヘッダーとは別に検査されます。AESV3、AES-256、RichMedia、Projection、地理空間辞書、ETSI 署名サブフィルターは、選択された保存ターゲットが受け入れられる前に、十分な Catalog /Extensions /ADBE /ExtensionLevel 宣言を持っている必要があります。これらの extension-level 機能を出力する writer エントリポイントは、選択された保存ターゲットを PDF 1.7 に引き上げられる場合、一致する拡張宣言を自動的に追加します
v3.67.0 以降、ローダー側の内容機能検出は遅延実行されます。読み込んだ文書は直ちにスキャンされず、実効バージョンまたは読み込み時機能診断が GetInformation(0/101/103)、GetPDFUADiagnostics、SaveToFile、SaveToString、SaveToStream、または関連する append-save 経路で初めて消費された時点で検出が実行されます。これらの診断を照会せず保存もしない読み取り専用ワークフローでは、スキャン全体を省略できます
v3.67.1 以降、検出スキャンは stream オブジェクトを浅く解析します。大きな stream 本体を読み飛ばしながらオブジェクト辞書と stream 分類を検査するため、フィルター、サブタイプ、色空間、バージョン制約キーの検出は同等のままで、大きな画像ストリームがスキャン時間を支配しなくなります。通常のオブジェクト読み取りとすべての保存経路は、出力に必要な場合は引き続き完全な stream 本体を読み取ります
v3.67.2 以降、明示的な保存バージョン指定は遅延検出より優先されます。読み込んだ文書では、SetInformation(0, ...) と LockSaveVersion が要求されたバージョンを適用する前に保留中の検出スナップショットを実行するため、後続の保存や診断照会が呼び出し側の意図に反して選択済みターゲットを引き上げることはありません。新規作成文書はローダー側検出の対象として armed されず、以前の writer-only バージョン制御動作と一致します
選択されたターゲットバージョンが文書内に残っている機能より低い場合、TPDFlib 呼び出し側は LastErrorCode 602 を受け取ります。保存前に新しいターゲットバージョンを選択するか、互換性のない機能を削除してください