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

PDFium Component

Software Development Blog

PDFium Component

PDFium Componentを使用してDelphiでPDFビューアを構築する

PDFium Componentを使用してDelphiで機能するPDFビューアを組み立てます。TPdfをTPdfViewに接続し、ドキュメントをロードしてレンダリングしてから、ページング、ズーム、およびフィットモードのナビゲーションを追加します。 DelphiにおけるPDFビューアは、2つのコンポーネントとそれらの間の

PDFium Component

PDFium Componentを使用してDelphiでPDFページをJPEG画像にレンダリングする

PDFium Componentを使用してDelphiでPDFページをJPEGにラスタライズします。DPIをピクセルサイズに変換し、各ページをビットマップにレンダリングしてから、選択した品質でTJPEGImageを使用してエンコードします。 PDFページをJPEGにレンダリングすることは、人々が一緒に実行し、その後別々

PDFium Component

DelphiでのPDFium QuadPointsによるテキストマークアップ注釈

DelphiでPDFiumを使用してハイライトおよび下線注釈を作成:QuadPointsの順序、FPDFAnnot_SetAttachmentPointsがFalseを返す理由、およびAppendによる解決策について解説します PDFium Componentは、 を介して、テキストマークアップ注釈(ハイライト、下線、

PDFium Component

DelphiでのPDFium DLLの配置:ロード失敗の修正

Delphiにおけるpdfium.dllのロード失敗の診断:32/64ビットのERROR_BAD_EXE_FORMAT 193の修正、古いDLLの特定、およびスレッドをまたぐ安全なPDFiumコンポーネントのロード

PDFium Component

DelphiでのPDF署名とPAdESレベルの検査

DelphiおよびLazarus用のPDFiumコンポーネントを使用してPDF署名を読み取ります:SubFilter、ByteRange、CMSを検査し、PAdES B-BからB-LTAの基準レベルを検出します

PDFium Component

Delphiでの長期PDF署名:PAdES B-LTおよびB-LTA

DelphiでPDFiumコンポーネントを使用して長期PAdES署名を追加します:B-T、B-LT、およびB-LTAの基準レベルのためのRFC 3161タイムスタンプ、DSS検証ストア、およびDocTimeStamps

PDFium Component

DelphiでPDF辞書を安全に解析する:名前トークン

Delphiでのサブ文字列キー検索がPDF辞書解析を破損させる理由:ISO 32000-1に基づく名前トークン全体の完全一致と、悪意のあるPDFに対するリソース制限 のような部分文字列検索は、PDFの辞書を読み取るための正しいツールではありません。なぜなら、PDFの名前キーはプレフィックス(接頭辞)を共有することがある

PDFium Component

PDFium Component: Delphi での accessible PDF reader design

DelphiのPDFビューアをスクリーンリーダーに対応させる方法をPDFium Componentで解説する:タグ付き読み上げ順序の抽出、単語単位のTTSハイライト、未タグPDFへの現実的な代替処理を扱う

PDFium Component

DelphiのPDFiumPasでPDF間へAcroFormフィールドを移植

PDFiumPasがDelphiでPDF文書間へAcroFormフィールドを移植する方法を解説。GraftPdfAcroForm、ウィジェットのページ再マップ、グラフトマップのトランザクション、フェイルクローズの上限を扱います

PDFium Component

DelphiのPDFiumPasでPDF画像を適応型リサンプリング

PDFiumPasがDelphiでPDF画像のダウンサンプルにBox、バイリニア、バイキュービック、Lanczosカーネルを選ぶ方法を解説。アルファ対応の演算と厳格な作業メモリ予算も紹介します

PDFium Component

PDFium Component: Delphi での annotation review UI

DelphiでPDF注釈レビューパネルを構築する方法をPDFium Componentで解説する:ページ単位でマークアップを索引化し、外観ストリームによる拒否に耐え、注釈を痕跡なく再着色・削除する

PDFium Component

Delphiのbanded PDF rendering:negative Y

PDFium Delphi componentが巨大pageをhorizontal bandでrenderする仕組みを説明します。negative Y offsetがgeometryを保ち、PNGとTIFFをstream出力します

PDFium Component

DelphiからPDFにCID Type 2フォントを埋め込む

PDFium ComponentはDelphiでCID Type 2フォントを用いてグリフレベルのテキストを書き込み、CID-to-GIDマップとToUnicodeマップを生成することで、シェイピング済みテキストが抽出可能なまま保たれる

PDFium Component

PDFium ComponentのsignedAttrs:DER SET OFソート

PDFium ComponentはX.690 11.6の要求によりsignedAttrsをDER SET OFとしてソートします。自己検証では、第三者バリデータが拒否する欠陥を決して捕捉できません

PDFium Component

DelphiでのPDFのUndo、Redo、クラッシュリカバリ

PDFium ComponentはDelphiにおけるPDF編集に、検証済みスナップショットとコンパクトな双方向デルタを用いて、ドキュメントレベルのUndo・Redoとクラッシュリカバリを追加する

PDFium Component

Delphiで埋め込みPDF用PDFiumバイト範囲読み込み

PDFium ComponentがDelphiでTBytesのバイト範囲から埋め込みPDFを直接読み込む方法を解説する:オーバーフロー安全な境界チェックと借用バッファのライフタイムルールを扱う

PDFium Component

PDFiumの絵文字とCJK文字がDelphiのWideCharを壊す

FPDFText_GetUnicodeは完全な32ビットのコードポイントを返すが、WideCharは16ビットしか保持できない。そのためDelphiのPDFiumコンポーネントは絵文字と稀なCJK表意文字を破損させうる

PDFium Component

eIDAS 信頼リストと合格 PDF 署名

PDFium コンポーネントが欧州の信頼リストを解析の前に認証する方法と、合格ステータスを通常のチェーン信頼とは別の値として記録する設計を、認証前解析と更新不変量を中心に解説します

PDFium Component

PDFium VCLのlibcurl TSAトランスポート(非Windows)

PDFium VCLは非WindowsターゲットでRFC 3161のタイムスタンプ要求をlibcurlに8シンボルの動的バインドで送ります。空のExpectヘッダーとCURLOPT_NOSIGNALの2設定がロード下の信頼性を決め、3828行の非Windowsパスもコンパイルで検証しました

PDFium Component

PDFium VCLでmacOSキーチェーンの鍵によるPAdES署名

PDFium VCLのmacOSバックエンドはSecurityとCoreFoundationのシンボルをdlopenとdlsymで実行時に解決し、リンク時バインドは一切なし。変数型と構造体型のシンボルの違い、RSA-PSSの二重フォールバック、ECDSAのDER符号化まで扱います

PDFium Component

DelphiでPDF名前ツリーと番号ツリーを編集する

PDFium ComponentがDelphiでISO 32000の名前ツリーと番号ツリーを再構築する方法:バランスの取れたノード、正しい/Limits、安定したルートID、検証付きセーブを解説します

PDFium Component

PDFium VCLのOpenSSL CMS検証バックエンドと3つの落とし穴

IPdfCmsVerifierの背後でCMS検証を差し替え可能にし、OpenSSL実装が素朴に書くと自信満々の誤答を生む3つの挙動、共有BIOの巻き戻し、CMS_NO_SIGNER_CERT_VERIFYの効果範囲、空ストアでのCRL検証を解説します

PDFium Component

DelphiのPDFiumPasでオペレータ単位のPDF墨消し

PDFiumPasのSaveAsRedactedが部分的に覆われたテキスト、矩形パス、軸整列画像をオペレータ単位で分割し、未参照リソースを刈り込む方法を解説。フェイルクローズ動作と共有スコープ間のリソース刈り込みも扱います

PDFium Component

DelphiのPDFパーサリソース予算:PDFium Component

1つのスナップショットポリシーでDelphiのすべてのPDFパーサを制限します:PDFium Componentが再帰、トークン、オブジェクト、バイト、比率、期限の制限を一元管理します

PDFium Component

Delphi で PDFium VCL を使った PDF/A アーカイブ準拠

Delphi で PDFium Component を使い、SaveAsPdfA、XMP、ICC OutputIntent の挿入、a/b/u 準拠、そして落とし穴まで含めて、veraPDF に通る PDF/A アーカイブを作成します。 PDF/A-1b とマークする変換器を出荷し、顧客の記録システムがそれらを 1

PDFium Component

PDF/Aの実装上限とフォントエンコーディング検査

PDF/AファイルがAnnex Cのコンテナ上限やシンボリックTrueTypeのEncodingエントリで落ちる理由と、PDFium ComponentがDLLなしでDelphiから両方を報告する仕組みを解説 PDFium Componentは、ISO 19005-1 Annex

PDFium Component

Delphi で PDFium VCL を使う PDF/A プレフライト検証

Delphi と PDFium Component で、PDF/A のプレフライト検証器をバイトレベルで実装する方法を解説。29 の検証項目、part 別の判定、object stream 展開、完全なコンテンツ解析なしでの確認を扱う

PDFium Component

Delphi の PDFium で行う PDF/UA 構造ツリー検証

PDFium VCL で実際の PDF タグツリーを走査し、Figure の Alt、Formula の代替テキスト、Note ID の一意性など、バイトレベル走査では見落とす PDF/UA の内容エラーを検出します。 プリフライトではそのファイルは PDF/UA 適合と出ます プリフライトではそのファイルは

PDFium Component

Delphi の PDFium VCL で行う PDF/VT 可変データ印刷

Delphi の PDFium VCL で PDF/VT-1 の可変データ印刷ファイルを生成し、検証する方法を解説します。DPart ツリー、必須の PDF/X-4 組み合わせ、ISO 16612-2 の落とし穴を扱います

PDFium Component

DelphiのPKCS#11:CK_ULONGとpacking trap

PDFiumPasがDelphiでPKCS#11 tokenを使ってPAdES署名する際のCK_ULONGとstruct packingを説明します。Windowsは4 byte、LP64は8 byteです

PDFium Component

Delphi のテキストシェーピング:Uniscribe と HarfBuzz

PDFium コンポーネントがすべてのシェーピング呼び出しを 1 つの組み込み可能バックエンドへ振り分ける方法を、Windows の Uniscribe と FPC 向けの実行時バインド HarfBuzz とともに解説します

PDFium Component

PDFium VCLでDelphiから構造化PDFテキスト抽出

PDFiumPasのGetStructuredTextでDelphiからPDFテキストをブロック・行・スタイル付きスパンとして抽出し、読み取り順序の選択、タグによる意味付与、フェイルクローズな予算も扱う

PDFium Component

PDFiumでDelphiのPDFフォント置換を制御する

PDFium Componentは、Delphiアプリケーションが埋め込まれていないPDFフォントに対して独自のフォントバイト列を供給できるようにし、ホストのフォントマッピングを決定論的なプロバイダーで置き換えます

PDFium Component

DelphiでレイアウトとワードラップのためにPDFテキストを測定する

PDFテキストのレイアウトには、描画する前に文字列の幅が必要です。Delphiでのワードラップのために、PDFiumバインディングがページに触れることなくテキストを測定する方法をご覧ください。 PDFページにテキストを配置する呼び出しは簡単です。 に文字列、フォント、サイズ、位置を指定すると、グリフが表示されます

PDFium Component

編集後の古いテキスト:PDFiumのFPDF_TEXTPAGEキャッシュ

PDFiumはDelphiでキャッシュされたFPDF_TEXTPAGEハンドルを保持する;AddText、SetText、AddPathの編集後、次のテキストクエリの前に再読み込みしない限りそれは古くなる PDFiumPasでPDFページに1行を刻印するために を呼び、そのスタンプが着地したことを確認するためすぐに

PDFium Component

DelphiのPDFium二重回転とフィットズームのバグ

PDFiumでDelphiの二重回転してしまうPDFサムネイルを修正する:レンダーの回転パラメータが加算式である理由、そして90/270度ページで幅と高さがフィットズームでどう入れ替わるか PDFiumコンポーネントの 関数は回転引数を受け取るが、PDFiumはページがすでに自身の

PDFium Component

DelphiのPDFiumでXFAフィールドの編集が保存時に消える理由

PDFiumコンポーネントはXFAフィールドの編集をメモリ上のバッファにしか書き込まないため、Delphiアプリは保存時にその値を失う:AcroFormはそれを永続化するがXFAはしない PDFiumコンポーネントの は、現在フォーカスされているフォームフィールドのライブな編集バッファに書き込むが、XFAフォームの場合

PDFium Component

DelphiのPDFium Componentを使用してPDFドキュメントを印刷する

PDFium Componentを使用してDelphiからPDFを印刷します。RenderPageとrePrintingでページをレンダリングし、StretchDIBitsを介してビットマップをTPrinterに送信し、用紙に合わせ、回転を処理します。 PDFの座標はポイント単位であり、プリンターの座標はデバイス単位で

PDFium Component

DelphiでPDFiumを使いPAdES B-B署名を付与する

PDFium Componentを使いDelphiでPDFにPAdES B-Bの電子署名を付けます。自前のSHA-256とCMS、そしてバイト単位の署名を担うWindows CNGバックエンドを解説します

PDFium Component

DelphiのPDFiumコンポーネントを使用してPDFドキュメントを分割する

DelphiのPDFiumコンポーネントを使用して、ページ、範囲、またはブックマークによってPDFを分割する方法:TPdf.ImportPages、CreateDocument、SaveAsの結果チェック、およびActiveフラグのリセット。 PDFiumコンポーネントには、PDF分割のための1つのメソッド、

PDFium Component

DelphiにおいてPDFiumで巨大なPDFをオンデマンドでストリーミングする

数ギガバイトのPDFを丸ごとロードする必要はありません。TStreamアダプターがPDFiumのオンデマンドFPDF_FILEACCESSコールバックにどのようにフィードするか、およびDelphiで4 GiBの制限にガードが必要な理由をご覧ください。 スキャンされたアーカイブは、単一のPDFで数ギガバイトに及ぶことがあ

PDFium Component

圧縮されたPDFの検証:オブジェクトおよびXRefストリーム

現代のPDFは、圧縮されたオブジェクトおよびxrefストリーム内に構造を隠します。DelphiバリデーターがどのようにObjStmを展開し、PDFiumでxrefストリームのトレーラーを読み取るかをご覧ください。 あなたは小さなバリデーターを作成します。それはPDFを開き、最後までシークし、

PDFium Component

PDFium Componentを使用したDelphiでのPDF/X検証

Delphiで印刷対応のPDF/Xファイルを検証:PDFium ComponentのValidatePdfXが、TrimBox、Trapped、OPI、LZW、およびフォントの埋め込みに関するISO 15930チェックを実行します Delphi向けのPDFium Componentは、