EmbedFileA
文書プロパティ
説明
末尾の A は ANSI(char)DLL エントリポイントを示し、ActiveX/COM の表面では Unicode 形式のみ公開される。動作は EmbedFile と同一で、文字列引数は現在の SetAnsiMode コードページを使って解釈される
外部ファイルを PDF 内に埋め込み、文書レベルの添付ファイルとして登録します。Acrobat などのリーダーは文書レベルの添付ファイルを Attachments サイドパネルに表示します。この呼び出しは AddEmbeddedFile に続けて AddToFileList を呼び出す短縮形です。ファイルは埋め込みファイルストリームとして格納され、指定タイトルで参照するエントリが Catalog の /Names /EmbeddedFiles 名前ツリーに追加されます
PDF バージョンの動作: 埋め込みファイルストリームとファイル仕様辞書には PDF 1.3 が必要ですが、この簡易呼び出しが使用する文書レベルの /Names /EmbeddedFiles 名前ツリーには PDF 1.4 が必要です。現在の文書バージョンがそれより低く、保存バージョンがロックされていない場合、EmbedFile は文書を自動的に PDF 1.4 へ引き上げ、/EmbeddedFiles name tree を AutoBumpedFeatures に記録します。呼び出し元が低い保存バージョンをロックしている場合、互換性ゲートは LastErrorCode 602 で保存を拒否します
構文
Delphi
Function DLEmbedFileA(InstanceID: Integer; Title, FileName, MIMEType: PAnsiChar): Integer;
DLL
int DLEmbedFileA(int InstanceID, const char * Title, const char * FileName, const char * MIMEType);
パラメータ
| Title | 閲覧ソフトの添付ファイルパネルに表示され、/EmbeddedFiles 名前ツリーのキーとして使用される表示名です。文書内で一意でなければなりません。このタイトルのファイルがすでに存在する場合、呼び出しは失敗します |
|---|---|
| FileName | ディスク上のソースファイルのフルパス。このファイルのバイトが PDF にコピーされる |
| MIMEType | ファイルの内容を識別する MIME タイプ(例: image/jpeg、text/csv、application/xml)。MIME タイプが不明な場合は空文字列を渡します。ビューアーはファイル拡張子を代替として使用します |
戻り値
| 0 | ファイルを埋め込めませんでした — ソースファイルが存在しない、タイトルがすでに使用されている、または文書が開かれていません |
|---|---|
| 1 | ファイルが埋め込まれ、文書添付の名前ツリーに登録されました |
備考
この呼び出しは文書レベルの添付ファイルのみを作成します。埋め込みファイルを指すクリック可能なクリップ注釈を特定ページに描画するには、代わりに AddEmbeddedFile を呼び出してから AddFileAttachment(または AddLinkToEmbeddedFile)を呼び出します
PDF/A 互換性:
- PDF/A-1、PDF/A-2(SetPDFAMode のモード 1~4)では任意のファイルの埋め込みが禁止されています。これらのモードでは PDF/A ガードが
EmbedFileをブロックします - PDF/A-3(モード 5、6、7)では、任意の MIME タイプのファイルを埋め込めます。ISO 19005-3 では、すべての埋め込みファイルが
AFRelationshipキーを通じてドキュメントとの関係を宣言することも求められます。SetEmbeddedFileAFRelationship で明示的に設定してください
SetPDFUAMode が有効な場合、明示的な関連付けがない埋め込みファイルにはライブラリが AFRelationship=Unspecified を自動的に書き込む。ISO 14289-1 §7.11 を満たすには SetEmbeddedFileAFRelationship で上書きする
例
// Embed a CSV of the source data as a document attachment
PDF.NewDocument;
PDF.AddStandardFont('Helvetica');
PDF.AddPage;
PDF.PrintText(50, 750, 'Sales summary, Q1 2026');
if PDF.EmbedFile('Source data — sales-Q1.csv', 'C:\reports\sales-Q1.csv', 'text/csv') = 1 then
WriteLn('Attachment added')
else
WriteLn('Failed to embed file');
PDF.SaveToFile('Q1-Summary.pdf');関連項目
AddEmbeddedFile、AddFileAttachment、AddLinkToEmbeddedFile、SetEmbeddedFileAFRelationship、EmbeddedFileCount、SetPDFAMode