2016-03-30 63 views
1

外部ファイルへのリンクを含むPDFファイルを作成しようとしています。XObjectを使用して外部画像を使用したPDF

Iは、代替画像をリモートロードした画像の例が存在するページ348でスペックhttps://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/pdf_reference_1-7.pdf

を使用しています。ドキュメントのサンプルを使用してドキュメントを作成すると、リーダー(Acrobat Reader XIを使用)はイメージを取得しません。エラーメッセージは表示されませんが、リクエストは行われません(wiresharkを使用してチェックされます)。

  1. 私は、リモートの画像(すなわちなし「通常」の画像と代替画像)を持つことができます。
  2. その/ FS/URL構文(オブジェクトだけではない)を使用した完全なドキュメントのどこかの例がありますか?私は実際にそのリクエストを見つけることができませんでした。

おかげ

編集: 私は、単一の1x1ピクセルと基本文書を作成するためのLibreOfficeを使用。 http://pastebin.com/5GqCYgMp

最初に私のテストドキュメントをAcrobatで作成しましたが、出力が本当に乱雑でした。

次にストリームをpdf仕様の例に置き換え、startxrefオフセットを修正しようとしましたが、正しいかどうかはわかりません。 http://pastebin.com/BT42g02P

このドキュメントは現在正しく開かれていませんが、最小のテストケースを取得しようとしました。私の以前の試みは、運が悪いだけでエラーなしで表示されました(しかし、遠隔画像はとにかく動作しませんでした)。

実際に/ URLでXObjectを作成できるツールはありますか?手で確実にファイルを作成するのに十分なファイル形式はわかりません。すべての

+0

正確な文書をお送りください。 – mkl

+0

私は例を追加しました。それが役に立ったら教えてください、ありがとう –

答えて

2

まず、

私は、PDFの参照ではなく、ISO標準を使用していない推薦する仕様にhttps://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/pdf_reference_1-7.pdf

を使用しています。 Adobe PDFの参考文献は、ISO標準の間に本質的に規範的ではありません。 (実際のコンテンツの違いは分かりますが、標準仕様がある場合はそれを使用する必要があります)。copy of the ISO standard with merely the header exchangedも公開しています。

次に、PDFをテキストドキュメントとして扱わないでください。例えば。ペーストビンでそれらを共有することによって、コンテンツを本質的に破壊するテキストとして扱うことができます。

4 0 obj 
<</Type/XObject/Subtype/Image/Width 1/Height 1/BitsPerComponent 8/Length 0/F << /FS /URL 
/F (https://upload.wikimedia.org/wikipedia/commons/c/ca/1x1.png) 
>>/Filter/FlateDecode/ColorSpace/DeviceRGB 
>> 
stream 
endstream 
endobj 

これは、PDFビューアは、URL https://upload.wikimedia.org/wikipedia/commons/c/ca/1x1.png含むファイルで見つけるものとことを示している:あなたが持っているあなたのサンプルPDFで

:すべてが言われてこと

、のは、あなたの実際の問題を見てみましょう1(/Width 1/Height 1)RGB(/ColorSpace/DeviceRGB)のサンプルと1バイトの色(/BitsPerComponent 8)のサンプル。セクション8.9.5画像辞書ISO 32000-1

私はあなたのファイルがそれを満たすのではないかと疑いますが、私はそれが実際にPNG構造で、特に上で説明した構造ではなくPNGファイルだと思います。

PDFはPNG形式をそのままサポートしていないため、データを変換する必要があります。これは仕様

16 0 obj 
    << /Type /XObject 
    /Subtype /Image 
    /Width 1000 
    /Height 2000 
    /ColorSpace /DeviceRGB 
    /BitsPerComponent 8 
    /Length 0 % This is an external stream 
    /F << /FS /URL 
      /F (http://www.myserver.mycorp.com/images/exttest.jpg) 
     >> 
    /FFilter /DCTDecode 
    >> 
stream 
endstream 
endobj 

からのサンプルが、それはそう簡単に見える理由である/FFilter /DCTDecodeを使用して、しかし、JPEG形式をサポートしています。

関連する問題