|
PDF フィルター サポート
概要
PDFストリームと埋め込み画像は、フィルター名を通じてそのエンコーディングを識別します。HotPDFは、ドキュメントの生成や外部コンテンツのデコード時に、主に以下のフィルターファミリーと連携します。
一般的なフィルター
- FlateDecode: 生成されたストリームのメインの圧縮フィルターであり、主要なzlibベースの解凍パス
- LZWDecode: レガシーおよび互換性のシナリオのためにHPDFLZW.pasを通じてサポートされています
- DCTDecode: HotPDFの画像読み込みパスによって処理される標準的なJPEG画像データに使用されます
- CCITTFaxDecode: モノクロTIFFやファックススタイルの画像データで一般的です
- ASCIIHexDecode / ASCII85Decode / RunLengthDecode: HotPDF v2.4.0 以降、HPDFタイプ.pas (
_ASCIIHexEncode, _ASCII85Encode, _RunLengthEncode) で公開されているエンコーダーヘルパー。7ビットチャネル用に任意のバイナリコンテンツをラップする場合、または明示的な PDF 1.7 7.4 ラウンドトリップサポートに役立ちます
- JBIG2Decode / JPXDecode: Filter names defined by PDF 1.7 7.4.7 / 7.4.9. HotPDF's bundled JBIG2 and JPEG 2000 helpers are stubs that report unsupported (return
False) until a real OpenJPEG / JBIG2 backend is linked. Earlier builds returned a fake 100×100 success which produced unreadable images; this is now corrected
実用的な注意事項
- すべてのフィルターが単一の汎用APIを通じて公開されているわけではありません。一部のフィルターは、専用の画像またはストリームヘルパーユニットを通じて到達します
- 生成される PDF content では、
THotPDF.Compression が引き続き中心的な user-facing setting です
- 外部データを読み込む際、適用されるフィルターは、ソースファイル形式と使用されているヘルパークラスによって異なります
- Encrypted PDFs combine these filters with the security handler; see CryptKeyLength for the supported AES‑128 (V=4 R=4 / CFM=AESV2) and RC4 (V=1/V=2) options
- Interactive form fields are emitted as Widget annotations that the viewer paints; see AcroForm サポート
- HotPDF v2.6.0 以降、テキストマークアップ注釈 (強調表示、下線、波線、取り消し線) とドキュメント内ジャンプリンク (
GoTo, GoToR, Launch) は、新しい THPDFPage.Add*Annotation / AddGoToLink / AddGoToRLink / AddLaunchLink メソッドとして公開されています
- DeviceCMYK出力は
THPDFPage.SetCMYKColor / SetCMYKFillColor / SetCMYKStrokeColor を通じて利用可能です。HotPDF v2.7.0 以降、ICC管理のカラースペースは THotPDF.RegisterICCProfile で登録され、SetFillColorSpace / SetStrokeColorSpace + SetFillColor / SetStrokeColor を介して適用されます
- テキストの
xref / trailer / startxref シーケンスではなく、単一の /型 /XRef FlateDecode 圧縮の相互参照ストリームを出力するには、保存する前に THotPDF.UseXRefStream を true に設定します (PDF 1.7 7.5.8)。HotPDF v2.8.0 以降で利用可能です
- XMP
/型 /Metadata /Subtype /XML ストリームをカタログに添付するには、THotPDF.EnableXMPMetadata を true に設定します (PDF 1.7 14.3.2)。Info ディクショナリフィールドから自動ビルドされるか、または CustomXMP を介して手作りのパケットを提供します。HotPDF v2.9.0 以降で利用可能です
- メソッドごとのPDFバージョンのゲート (HotPDF v2.24.0 以降)。v2.4.0 以降で導入されたすべての機能メソッドは、出力する前に
RequirePDFVersion を参照します。StrictVersionLock=false (デフォルト) の場合、ドキュメントの Version は、機能が必要とする最小バージョンに暗黙的に自動バンプされます。StrictVersionLock=true の場合、呼び出しは拒否されるため、保存されたファイルは選択された 1.3 / 1.4 / 1.5 / 1.6 / 1.7 の参照仕様に厳密に準拠します。
- FlateDecode 圧縮画像データ用のPNGおよびTIFFプレディクターエンコーダー (PDF 1.7 7.4.4.4):
_PNGPredictorEncode は libpng の最小絶対差分フィルターヒューリスティック (Predictor=15) を適用し、_TIFFPredictor2Encode は水平方向の差分 (Predictor=2) を適用します。HotPDF v2.10.0 以降で利用可能です
- Tagged PDF エントリポイント (PDF 1.7 14.7-14.8):
THotPDF.Lang はカタログの /Lang に入力し、EnableTaggedPDF は /MarkInfo <</Marked true>> とスタブの /StructTreeRoot を出力し、新しい THPDFPage.BeginMarkedContent / BeginMarkedContentMCID / EndMarkedContent メソッドは BMC / BDC / EMC コンテンツストリームオペレーターを書き込みます。HotPDF v2.11.0 以降で利用可能です
- Axial and radial gradients (PDF 1.7 7.10 / 8.7):
THotPDF.RegisterAxialGradient / RegisterRadialGradient build the full Function 型 2 / Shading 型 2-3 / Pattern 型 2 stack and return a stable pattern name; THPDFPage.SetFillPattern / SetStrokePattern install it onto the page. Component count of the start / end color selects DeviceGray (1) / DeviceRGB (3) / DeviceCMYK (4). Available since HotPDF v2.13.0; multi-stop axial gradients via Function 型 3 are exposed through RegisterMultiStopAxialGradient since v2.18.0
THPDFPage.DrawInlineImage を介したインライン画像 (PDF 1.7 8.9.7)。フィルターが指定されていない場合、コンテンツストリームが7ビットクリーンに保たれるように、生バイトはASCIIHexで自動ラップされます。HotPDF v2.18.0 以降で利用可能です
THotPDF.AddOutputIntent を介した OutputIntents (PDF 1.7 14.11)。各呼び出しにより、オプションで登録済みの ICC プロファイルを参照する /DestOutputProfile を持つ /型 /OutputIntent ディクショナリがカタログに追加されます。HotPDF v2.18.0 以降で利用可能です
- AcroForm appearance-stream の自動生成 (PDF 1.7 12.5.5 / 12.7.3.3 / 8.10): interactive form fields を追加する前に
THotPDF.AutoFormAppearances を true に設定すると、HotPDF は各 widget の /AP /N entry 用に /Subtype /Form Form XObject を事前生成し (buttons では Yes / Off sub-dicts)、AcroForm /DR default resources に Helvetica / ZapfDingbats indirect font dicts を設定し、/NeedAppearances を false に切り替えて renderers が embedded streams を尊重するようにします。HotPDF v2.28.0 以降で利用可能です
- PDF 1.4 の
/ViewArea と /ViewClip ViewerPreferences (12.2 Table 152) は、対応する vpViewArea / vpViewClip set members とともに THotPDF.ViewArea / THotPDF.ViewClip properties として公開されています。どちらも THPDFPageBoundary values (MediaBox / CropBox / BleedBox / TrimBox / ArtBox) を受け付け、4 つの PDF 1.4 page-boundary ViewerPreferences に対する HotPDF coverage を完成させます。HotPDF v2.29.0 以降で利用可能です
- ページトランジション (PDF 1.1 / 1.5 12.4.4):
THPDFPage.SetPageTransition はページに /Trans ディクショナリを書き込むため、/PageMode /FullScreen の PDF リーダーはナビゲーションをアニメーション化します。PDF 1.1 スタイル (Split、Blinds、Box、Wipe、Dissolve、Glitter、R) および PDF 1.5 スタイル (Fly、Push、Cover、Uncover、Fade) は、THPDFTransitionStyle 列挙型を通じて公開されています。付随する /Dm、/M、および /Di サブオプションも公開されています。THPDFPage.SetPageDuration は、自動進行の遅延 (秒単位) である /Dur を書き込みます。HotPDF v2.30.0 以降で利用可能です
- ページレベルの透過グループ (PDF 1.4 11.6.6 / 7.5.5):
THPDFPage.SetTransparencyグループ は /グループ ディクショナリ (/型 /グループ /S /Transparency) を添付するため、レンダラーはアルファを持つコンテンツを予測通りに合成します。THPDFグループColorSpace 列挙型 (DeviceGray / DeviceRGB / DeviceCMYK または省略) を使用してデバイスカラースペースを選択するか、THotPDF.RegisterICCProfile を通じて以前に登録された ICC プロファイルの名前を使用して THPDFPage.SetTransparencyグループICC を呼び出します。オプションの /I (Isolated) および /K (Knockout) フラグはコンポジターを操作します。THPDFPage.ClearTransparencyグループ は、以前に添付されたエントリを削除します。HotPDF v2.32.0 以降で利用可能です
- 増分更新 (PDF 1.7 ISO 32000-1 7.5.6):
THotPDF.BeginIncrementalUpdate(SourceFile) は、既存の PDF を追加専用モードで読み込みます。後続の CreateIndirect* の呼び出しは新しいオブジェクトを自動的にダーティとしてマークし、THotPDF.MarkDirty(Obj) は再出力のために既存の読み込み済みオブジェクトにタグを付けます。THotPDF.SaveIncrementalUpdate(TargetFile) は、元のソースバイトをそのまま書き込み、オブジェクト番号を保持したダーティオブジェクトのみを追加し、新しい xref サブセクションを出力し、前の xref を指す /Prev を持つトレイラーで終了します。既存の AddSignedSignatureField + PreparePDFForSigning + InsertSignatureHex パイプラインと組み合わせることで、以前の署名を無効にすることなく、すでに署名されたドキュメントに後続の署名フィールドを追加できます (元のバイトが変更されないため、その /ByteRange ダイジェストは有効なままです)。HotPDF v2.35.0 以降で利用可能です
- 埋め込まれた True型 フォント名の正規化: HotPDF は、埋め込まれた True型 の name テーブルを読み取り、
/BaseFont、/FontDescriptor /Font名前、/FontFamily、および子孫の CID フォント名を、フォントプログラムの PostScript 名に合わせます。これにより、PDF フォントディクショナリと埋め込まれた TTF ペイロードの不一致に起因する Adobe Acrobat Font Capture の失敗を回避できます。HotPDF v2.35.1 以降で利用可能です
- True型 font subsetting (PDF 1.7 ISO 32000-1 9.6.4 / 9.8.2): set
THotPDF.EnableFontSubsetting to true before BeginDoc and HotPDF rebuilds the embedded True型 payload to contain only the glyphs actually used by the document. Typical Latin documents see ~90% reduction in embedded font weight (1 MB Arial -> ~70 KB on a one-line "Hello, world."). Composite-glyph dependencies are tracked recursively, GID numbering is preserved (so existing 型0 / Identity-H content streams keep working), and the new /BaseFont automatically gains the spec-mandated six-letter "+"-suffixed prefix (e.g. /BaseFont /AAAAAA+ArialMT). Off by default; enable opt-in to keep full-font embedding for editing workflows. Available since HotPDF v2.36.0
- コンパクトフォントフォーマット (CFF) サブセッター (PDF 1.7 ISO 32000-1 9.7.4 / 9.9): Open型-CFF (.otf, sfntVersion
OTTO) および 型 1 / 型 1C フォント用の True型 サブセッターの仲間です。ユニットでエクスポートされた HPDFSubsetCFF(CFFBytes, KeepGlyph) 関数は、保持されないグリフを最小の1バイトの endchar スタブに置き換えて、GID 番号をバイト単位で保持しながら、CharStrings INDEX を再構築します。HotPDF v2.37.0 以降で利用可能です。
StoreFont に配線された Open型-CFF (.otf) 埋め込みパス (PDF 1.6+ 9.7.4 Table 117)。GDI で読み込まれたフォントバイナリが sfnt の OTTO コンテナである場合、HotPDF は HPDFSubsetOTFContainer を通じて埋め込まれた 'CFF ' サブテーブルをサブセット化し、/FontFile3 /Subtype /Open型 を介してフォントプログラムを出力し、子孫フォントディクショナリを /CIDFont型2 ではなく /Subtype /CIDFont型0 で書き込みます。True型 フォントは、動作の変更なしに、既存の /FontFile2 + /CIDFont型2 パスを通じて引き続き処理されます。HotPDF v2.38.0 以降で利用可能です。
- エンドツーエンドの CFF サブルーチンのサブセット化 (PDF 1.7 9.7.4 §6 / Adobe Tech Note #5177 §3.1): CFF サブセッターは、Global Subr INDEX (CFF バイナリの String INDEX の直後に配置) と Local Subr INDEX (Private DICT の下にネストされ、トップへ DICT オペレーター 18 + Private DICT オペレーター 19 経由で到達) の両方から、使用されていないエントリを取り除くようになりました。1回の不動点クロージャにより、
callsubr (op 0x0A) および callgsubr (op 0x1D) チェーンが推移的に追跡されるため、Local Subr を呼び出し、それが Global Subr を呼び出し、それが別の Local Subr を呼び出す CharString が、1回の反復で拾い上げられます。使用されていない各エントリは1バイトの return スタブに置き換えられ、INDEX は末尾の余白がゼロ埋めされてその場で書き換えられます。この動作は、パブリックの HPDFSubsetCFF および HPDFSubsetOTFContainer ヘルパーを通じて公開されています。より低レベルの CFF スキャナーは内部のままです。HotPDF v2.39.0 以降で利用可能です。
- CID キー付き CFF のサブセット化 (PDF 1.7 ISO 32000-1 9.7.4 / Adobe Tech Note #5176 §18-19): CFF サブセッターは、CID キー付きの Open型-CFF フォントをマークする トップへ DICT の
ROS オペレーター (12-30) を認識し、Font DICT の FDArray (12-36) INDEX をたどるようになりました。各 Font DICT は独自の Private DICT + Local Subr INDEX を保持しています。FDSelect (12-37) のグリフから FD へのマップは、バイト単位で保持されます。サブルーチンクロージャスキャンは、保持されている各 CharString の FD コンテキストを追跡するため、FD #5 のグリフは FD #5 の Local Subrs のみをマークします。グローバル subr は FD 全体で共有されたままです。各 FD の Local Subr INDEX は、使用されていないエントリが1バイトの return スタブに折りたたまれて、その場で書き換えられます。CJK / インド系 / アラビア語の OTF フォント (Adobe Fan/Gothic/Heiti/Ming/Myungjo/Song Std、Kozuka Pr6N、Source Han Sans など) は、そのまま埋め込まれるのではなく、完全なサブセット化パイプラインを通過するようになりました。HotPDF v2.40.0 以降で利用可能です。
- オブジェクトストリーム (PDF 1.5 ISO 32000-1 7.5.7):
UseXRefStream に加えて THotPDF.UseObjectStreams を true に設定すると、SaveToStream は対象となる間接オブジェクト (ストリーム、暗号化ディクショナリ、トレイラーが指すカタログと Info ディクショナリを除くすべて) を 1 つ以上の /型 /ObjStm コンテナストリームにパックします。次に、相互参照ストリームは、タイプ2のエントリ (フィールド2 = ホスト ObjStm のオブジェクト番号。フィールド3 = ストリーム内のエントリインデックス) を通じて、パックされたオブジェクトを参照します。小さなディクショナリ (マルチページドキュメント、注釈、AcroForm ウィジェット、構造ツリー要素、オプションコンテンツレイヤー) が多数含まれる PDF のファイルサイズを大幅に削減します - グラフィックのみの30ページのスモークテストでは、14502 バイトから 8488 バイト (41.5% 縮小) に縮小されます。UseXRefStream がオフの場合 (仕様により、タイプ2エントリはテキストの xref テーブルで表現できません)、または Version が PDF 1.5 未満の場合は、暗黙的に false にダウングレードされます。HotPDF v2.41.0 以降で利用可能です。
- ソフトマスク画像 / SMask (PDF 1.4 ISO 32000-1 8.9.5.4):
THotPDF.AddImageWithSMask(Width, Height, RGB, Alpha) は、カラー画像 XObject と 8 ビットの DeviceGray ソフトマスク画像 XObject を出力し、/SMask 相互参照を自動的に配線します。そのため、従来の /ImageMask パスのオン/オフのバイナリ制限の代わりに、各ピクセルがチャネルごとの完全な透過を保持できます。便利なオーバーロード THotPDF.AddImageWithSMask32(Bitmap32) は、1回の呼び出しでアルファ付きPNGを埋め込むために、32ビットBGRAの TBitmap からRGBプレーンとアルファプレーンを引き出します。どちらの呼び出しサイトも RequirePDFVersion(pdf14) を通過するため、厳密モードの1.3出力は準拠したままになります。HotPDF v2.42.0 以降で利用可能です。
- 色なしのタイリングパターンのペイント (PDF 1.7 ISO 32000-1 8.6.6.1):
THotPDF.RegisterTilingPattern は v2.19.0 以降、/Paint型 1 (色付き) と /Paint型 2 (色なし) の両方を出力してきましたが、一致するページ側のオペレーターシーケンスは色付きのバリアントに対してのみ正しく機能していました。6つの新しい THPDFPage メソッド (SetFillPatternRGB / SetStrokePatternRGB / SetFillPatternGray / SetStrokePatternGray / SetFillPatternCMYK / SetStrokePatternCMYK) は、ページ Resources/ColorSpace ディクショナリに一致する [/Pattern /BaseCS] ティントカラースペースを自動登録し、仕様で義務付けられている tint_components /Pn scn シーケンスを出力することで、色なしのパスを駆動するようになりました。タイル自体が色を持っている色付きのバリアントには、元の SetFillPattern / SetStrokePattern を使用してください。HotPDF v2.43.0 以降で利用可能です。
- CIELab カラースペース (PDF 1.3+ ISO 32000-1 8.6.5.3):
THotPDF.RegisterLabColorSpace(Xw, Yw, Zw, aMin, aMax, bMin, bMax) は、インラインの [/Lab << /WhitePoint /BlackPoint /Range >>] カラースペース配列を構築し、自動生成された名前 (Lab1、Lab2 など) の下に保存し、通常の THPDFPage.SetFillColorSpace / SetStrokeColorSpace + SetFillColor([L, a, b]) / SetStrokeColor([L, a, b]) パイプラインで使用するためにその名前を返します。ICCプリントワークフローにはD50光源 [0.9505, 1.0, 1.089] を、sRGB相当のディスプレイにはD65光源 [0.95047, 1.0, 1.08883] を挿入し、L* を [0..100]、a*、b* を選択した範囲 (通常は [-128..127]) でペイントします。HotPDF v2.44.0 以降で利用可能です。
- スポットカラーのセパレーションカラースペース (PDF 1.3+ ISO 32000-1 8.6.6.4):
THotPDF.RegisterSeparation(Colorant名前, AlternateCS, TintC1) は、[0..1] 内の単一のティントオペランドが、内部でビルドされたリニア Function 型 2 ティント変換を駆動する、1コンポーネントのスポットインクを宣言します。返された名前 (Sep1、Sep2 など) を通常の SetFillColorSpace / SetStrokeColorSpace + SetFillColor([tint]) / SetStrokeColor([tint]) パイプラインとともに使用します。AlternateCS は DeviceGray、DeviceRGB、または DeviceCMYK を受け入れます。TintC1 はティント = 1.0 の時の代替CSコンポーネントを提供します。Pantone やスペースを含むその他のインク名も直接受け入れられます。HotPDF は、カラースペース名を書き込む際に、PDF 1.7 7.3.5 に従って #20 にエスケープします。HotPDF v2.45.0 以降で利用可能です。
- AcroForm の複数行およびコームテキストのアピアランスストリーム (PDF 1.7 ISO 32000-1 12.7.4.3):
THotPDF.AutoFormAppearances がオンの場合、Flags に ffMultiline が含まれるテキストフィールドは、ワードラップされた /AP /N フォーム XObject (Td + T* + /TL の行送りレイアウト、CR / LF / CRLF の区切り文字を尊重し、表示される行数で切り捨て) を取得します。Flags に ffComb と正の MaxLen の両方が含まれるフィールドは、グリフごとの絶対 Tm マトリックスを使用して、各文字を独自の等幅セルにレンダリングします。v2.28.0 の単一行レイアウトは、このようなフラグのないフィールドではバイト単位で保持されます。初期値の国際文字は引き続きビューアーの /NeedAppearances の再計算パスにフォールスルーします。埋め込み CID フォントの完全なアピアランスの生成は、今後の課題です。HotPDF v2.46.0 以降で利用可能です。
- AcroForm の /AP Unicode フォント (PDF 1.7 ISO 32000-1 12.7.2 + 12.7.4.3):
THotPDF.SetFormUnicodeFontDict(Logical名前, FontDict) は、AcroForm の /DR/Font デフォルトリソースディクショナリに、呼び出し元が提供する 型 0 / CIDFont型2 + Identity-H 合成フォントを登録します。登録されると、AcroForm レベルの /DA、すべての Tx ウィジェットの /DA、および ASCII 以外の Tx 初期値に対して AutoFormAppearances によって生成される /AP /N ストリームはすべて論理名に切り替わります。フォーム XObject の /Resources/Font サブディクショナリも同じ間接フォントを参照するため、AP はレンダリング時の /DR の解決に依存することなく自己完結します。付随するヘルパー THotPDF.CreateIndirectFontDict は、間接 PDF オブジェクトとして登録された新しい空の THPDFDictionaryObject を返すため、呼び出し元は内部ヘルパーに触れることなく、カスタムのフォントディクショナリ (または "N G R" の間接シリアル化を必要とするその他のディクショナリ) を構築できます。空の Logical名前 と nil の FontDict を渡すと、v2.46.0 の ASCII 専用の /Helv の動作に戻ります。ASCII の Tx フィールドは、v2.46.0 / v2.55.0 とバイト単位で同一の出力で /Helv を引き続き使用します。複数行 + コームの非 ASCII の /AP および RTL Bidi シェーピング (UAX #9 + アラビア語のコンテキスト結合) は、今後の課題です。HotPDF v2.56.0 以降で利用可能です。ffMultiline の非 ASCII /AP サポート (1行あたりの UTF-16BE 16進数 Tj と Td / T* / /TL 行送りおよび CJK 対応のワードラップ) は v2.57.0 以降、ffComb の非 ASCII /AP サポート (CID ごとの等幅絶対 Tm セル + UTF-16 サロゲートペア処理を伴うコードポイントごとのシングルセル Tj) は v2.58.0 以降、右から左への方向のための THotPDF.FormUnicodeRTL プロパティ (/V を論理順序に保ちながら /AP Tj の16進数の UTF-16 の順序を逆にします。呼び出し元はアラビア語を Unicode 表示形 U+FB50..U+FDFF + U+FE70..U+FEFF に事前シェーピングします。完全な UAX #9 + 自動 GSUB シェーピングは保留中) は v2.59.0 以降で利用可能です。
- AcroForm のリッチテキスト Tx ウィジェット (PDF 1.5+ ISO 32000-1 12.7.4.3 + Annex L):
THPDFPage.AddRichTextField(Field名前, InitialValue, RichValue, DefaultStyle, Rectangle, [MaxLen], [Flags]) は、/RV (リッチテキスト XHTML ボディ)、/DS (CSS に似たデフォルトスタイル)、自動的に OR 演算された ffRichText /Ff のビット 26 フラグ、および /RV を解析しないリーダーで使用されるプレーンテキストの /V + /DV フォールバックを持つテキストウィジェットを出力します。Acrobat と Foxit は RichText ビットがオンの場合に /RV から直接レンダリングし、リーダーにインストールされている Unicode フォントからフォントのフォールバックを拾い上げます。そのため、HotPDF が /DR Resources に CID フォントを埋め込まなくても、マルチバイトコンテンツ (CJK / キリル文字 / アラビア語 / アクセント付きラテン文字) は正しく表示されます。/V と /RV の両方がマルチバイト入力を自動検出し、必要に応じて UTF-16BE の16進文字列エンコーディング (FE FF BOM + ビッグエンディアンのコードユニット) に切り替えます。HotPDF 独自の /AP パスに対する CID フォントのアピアランスストリームの生成は、今後の課題です。リッチテキスト対応のビューアーでは不要です。HotPDF v2.55.0 以降で利用可能です。
- DeviceN color space for multi-colorant spot-ink workflows (PDF 1.3+ ISO 32000-1 8.6.6.5):
THotPDF.RegisterDeviceN(Colorant名前s, AlternateCS, TintC1Matrix) generalises RegisterSeparation from a single spot ink to N. The tint transform is a PostScript-calculator Function 型 4 emitting a linear weighted-blend over the supplied N x M matrix (row n column m is colorant n's contribution to AlternateCS channel m when colorant n is 1.0 alone). Returns a color-space name (DevN1, DevN2, ...) that drives the regular SetFillColorSpace + SetFillColor([t0, t1, ..., t_{N-1}]) pipeline. AlternateCS accepts DeviceGray, DeviceRGB or DeviceCMYK; ink names with spaces are escaped to #20 per PDF 1.7 7.3.5; the special name None marks an unused colorant slot. Available since HotPDF v2.47.0.
- 自由形式のグーローシェーディング三角形メッシュ (PDF 1.3+ ISO 32000-1 8.7.4.5.4):
THotPDF.RegisterFreeFormGouraudShading(XMin, YMin, XMax, YMax, NumComponents, Vertices) は、/BitsPerCoordinate 16 + /BitsPerComponent 8 + /BitsPerFlag 8 を持つ /Shading型 4 ストリームを宣言し、それをページ Resources/Pattern ディクショナリのインライン Pattern 型 2 エントリにラップし、通常の SetFillPattern / SetStrokePattern パイプライン用の自動生成されたパターン名 (Sh1、Sh2 など) を返します。各頂点は、1つのフラグバイト (独立した三角形の場合は常に 0) + 2つのビッグエンディアン X バイト + 2つのビッグエンディアン Y バイト + NumComponents の 8 ビットカラーコンポーネントとしてパックされます。NumComponents 引数は、1 (DeviceGray)、3 (DeviceRGB)、または 4 (DeviceCMYK) を受け入れます。各頂点は、(X, Y, c1...cN) の順序で、2 + NumComponents の Extended 値を Vertices に提供します。頂点数は 3 の倍数でなければなりません。/Decode は、16 ビットの座標を [XMin, XMax] x [YMin, YMax] に、カラーコンポーネントを [0, 1] にマッピングして戻します。型 5 (格子)、型 6 (クーンズパッチ)、および 型 7 (テンソル積) のメッシュシェーディングは、今後の課題です。HotPDF v2.48.0 以降で利用可能です。
- 格子形式の Gouraud-shaded triangle mesh (PDF 1.3+ ISO 32000-1 8.7.4.5.5):
THotPDF.RegisterLatticeFormGouraudShading(XMin, YMin, XMax, YMax, NumComponents, VerticesPerRow, Vertices) は、vertices を M-row x N-column lattice に配置し、renderer が adjacent rows の各 pair を triangle strip に自動 triangulate できる /Shading Type 5 stream を宣言します。RegisterFreeFormGouraudShading (Type 4) と異なり per-vertex flag byte はなく、/BitsPerFlag は shading dictionary に存在しません。各 vertex は 4 + NumComponents bytes (2 big-endian X + 2 big-endian Y + N color components) だけを占めます。shading dictionary は代わりに必須の /VerticesPerRow N entry を持ちます。source data が regular sample grid (terrain、FEA results、scientific heatmaps) にすでにある場合に使用してください。application は vertices を row-major に渡し、rendering pipeline が triangle strip topology を自動構築します。VerticesPerRow は少なくとも 2 で、total vertex count は VerticesPerRow の倍数かつ少なくとも 2 rows でなければなりません。HotPDF v2.49.0 以降で利用可能です
- 曲線境界向けの Coons patch mesh shading (PDF 1.3+ ISO 32000-1 8.7.4.5.6):
THotPDF.RegisterCoonsPatchMesh(XMin, YMin, XMax, YMax, NumComponents, Patches) は、4 本の cubic Bezier curves で囲まれ corner ごとに 1 つの color を持つ Coons patches の /Shading Type 6 stream を宣言します。renderer は 4 辺の間に Coons surface を fit し、任意に curved な color-bearing quad を生成します。bent paths 上の foil / metallic gradients、SVG-derived gradient meshes、近似に多数の small triangles が必要になる curved edges を持つ quad に有用です。各 patch は 12 control points (24 X+Y Extended values、boundary 周りに clockwise order の c1..c12、4 corners は c1 / c4 / c7 / c10、残り 8 は inner Bezier handles) に続き、4 corner colors (4 * NumComponents Extended values) を提供するため、Patches stride は 24 + 4 * NumComponents です。shading dictionary は Type 4 と同じ /BitsPerCoordinate 16 + /BitsPerComponent 8 + /BitsPerFlag 8 を持ちます (Type 5 と異なり /VerticesPerRow はありません)。出力されるすべての patch は flag = 0 (independent patch) を持ちます。continuation flags 1 / 2 / 3 (edge sharing) はこの convenience overload では公開されません。HotPDF v2.50.0 以降で利用可能です
- Separation color space with sampled LUT tint transform (PDF 1.3+ ISO 32000-1 8.6.6.4 + 7.10.2):
THotPDF.RegisterSeparationLUT(Colorant名前, AlternateCS, Samples) wraps RegisterSampledFunction so callers can express a full non-linear tint -> alt-CS curve as a flat byte stream of 8-bit (M-tuple) samples without manually constructing a Function 型 0 dictionary. Use the LUT variant when the color transition is non-linear - PANTONE Hexachrome-style tint ramps, gamma-corrected density curves, hand-drawn tone curves matching a press characterisation, sRGB-to-spot conversion ICC LUTs without the full ICC profile machinery; the v2.45.0 RegisterSeparation entry point still covers the linear single-endpoint case. AlternateCS accepts DeviceGray, DeviceRGB or DeviceCMYK; Samples length must be a positive multiple of M with at least 2 * M bytes so the function has interpolable range, and the grid-point count S is inferred from Length(Samples) / M. Linear interpolation is the default per PDF 1.7 /Order 1. Returns the registered color-space name (Sep1, Sep2, ...) for use with the regular SetFillColorSpace + SetFillColor([tint]) pipeline. Available since HotPDF v2.53.0.
- Function 型 0 (サンプル) の登録 (PDF 1.3+ ISO 32000-1 7.10.2):
THotPDF.RegisterSampledFunction(Domain, Range, Size, BitsPerSample, Samples, [Order]) は、任意の入力から出力へのマッピングを、グリッドポイント間で補間された M 次元の出力サンプルの規則的な N 次元グリッドとして表現する、間接 /Function型 0 ストリームを宣言します。ICC プロファイル機構はやりすぎだが、手動で調整されたカラー LUT が必要な場合 (/TransferFunction (ExtGState の /TR) のトーンカーブ、リニア 型 2 / 算術 型 4 パスを超える /Separation / /DeviceN のサンプルされたティント変換、ハーフトーンのしきい値カーブ、または Function ディクショナリを受け取るその他の PDF 構成要素) に使用します。Domain は 2N 個のエントリ (入力次元ごとに1つの [min, max] ペア)、Range は 2M 個のエントリ (出力次元ごとに1つのペア)、Size は N 個のグリッドポイント数です。BitsPerSample は PDF 1.7 Table 38 に従って 1、2、4、8、12、16、24、または 32 を受け入れます。Samples は、生のビットパックされたサンプルストリームです (各サンプル内で MSB から順に、最後のバイトのゼロ埋め以外にサンプル間のパディングなし。仕様のサンプル順序ルールに従って入力 0 が最も速く変化します)。Order のデフォルトは 1 (リニア) であり、PDF 1.7 Table 38 に従って 3 (3次スプライン補間、v2.54.0 以降) を受け入れます。HotPDF はサンプルバイト数を ceil(GridPoints * M * BitsPerSample / 8) に対して検証します。間接の THPDFStreamObject を返すため、呼び出し元は Function ディクショナリが期待される場所であればどこにでもそれを添付できます。HotPDF v2.52.0 以降で利用可能です。3次の /Order 3 + エンドツーエンドのマルチ入力/マルチ出力のカバレッジは v2.54.0 以降です。
- Type 7 の tensor product patch mesh shading (PDF 1.3+ ISO 32000-1 8.7.4.5.7):
THotPDF.RegisterTensorProductPatchMesh(XMin, YMin, XMax, YMax, NumComponents, Patches) は tensor-product patches の /Shading Type 7 stream を宣言します。各 patch は bicubic Bezier control points p[i][j] の完全な 4 x 4 grid と corner ごとに 1 つの color で定義されます。12 boundary points に加えて 4 つの explicit interior control points (p[1][1]、p[1][2]、p[2][2]、p[2][1]) を追加することで RegisterCoonsPatchMesh (Type 6) を拡張し、Coons-blended fit より細かく patch interior を制御できます。SVG mesh-gradient round-trips と tensor-product Bezier surface が必要な artwork に有用です。各 patch は 16 control points (32 X+Y Extended values、spec Table 88 stream order: p[0][0..3]、p[1][3]、p[2][3]、p[3][3]、p[3][2..0]、p[2][0]、p[1][0]、その後 4 interior points p[1][1]、p[1][2]、p[2][2]、p[2][1]) に続き、4 corner colors (p[0][0] / p[0][3] / p[3][3] / p[3][0] の 4 * NumComponents Extended values) を提供するため、Patches stride は 32 + 4 * NumComponents です。出力されるすべての patch は flag = 0 (independent patch) を持ちます。この release により、ISO 32000-1 8.7.4.5 の mesh shading family 全体 (Type 4 / 5 / 6 / 7) が cover されました。HotPDF v2.51.0 以降で利用可能です
- Annotation border style and Popup linkage (PDF 1.7 12.5.4 / 12.5.6.14):
THPDFPage.SetAnnotationBorderStyle(Annot, Width, Style, DashPattern) attaches a /BS dictionary with the chosen THPDFAnnotBorderStyle (absSolid / absDashed / absBeveled / absInset / absUnderline). THPDFPage.AddPopupAnnotationFor(ParentAnnot, Rect, Open) emits a /Popup annotation that is wired in both directions (parent /Popup -> popup, popup /Parent -> parent) so the viewer can render the speech-balloon connector. The new THPDFPage.LastAnnotation property feeds either helper without changing the signature of the existing Add*Annotation procedures. Available since HotPDF v2.34.0
- 公開鍵セキュリティハンドラー (PDF 1.7 7.6.5):
THotPDF.EnablePubKeyEncryption(seed, Key型, EncryptMetadata) + THotPDF.AddPubKeyRecipient(envelope) は、/Filter /Adobe.PubSec 暗号化ディクショナリ (V=1 RC4-40 の場合は /SubFilter /adbe.pkcs7.s4 / V=2 RC4-128 / V=4 AESV2 の場合は /adbe.pkcs7.s5) を出力します。呼び出し元は、20バイトのランダムシードと、受信者ごとに1つの PKCS#7 envelopedData バイナリ BLOB (Windows CryptoAPI、OpenSSL、または pycryptodome で外部的にビルド) を提供します。HotPDF はアルゴリズム 9 (シードと各エンベロープを連結したものの SHA-1) を通じてファイル暗号化キーを導出し、AES-128 / RC4 ストリーム用の標準的なオブジェクトごとのキー導出を再利用します。HotPDF v2.33.0 以降で利用可能です
関連項目
|