2016-03-30 11 views
1

Ich versuche, eine PDF-Datei mit einem Link zu einer externen Datei zu erstellen.PDF mit einem externen Bild mit XObject

Ich bin mit dem spec https://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/pdf_reference_1-7.pdf

Auf Seite 348 gibt es ein Beispiel für das Bild mit einem alternativen Bild der Ferne geladen. Wenn ich ein Dokument mit dem Beispiel aus dem Dokument erstelle, holt das Lesegerät (mit dem Acrobat Reader XI) das Bild nicht. Es gibt keine Fehlermeldung, aber es wird keine Anfrage gestellt (mit wireshark überprüft).

  1. Kann ich nur ein Remote-Bild haben (dh kein "normales" Bild und alternatives Bild).
  2. Gibt es ein Beispiel für ein vollständiges Dokument, das die/FS/URL-Syntax verwendet (dh nicht nur die Objekte)? Ich konnte keine finden, die die Anfrage tatsächlich erledigt.

Dank

Edit: verwendete ich Libreoffice das Basisdokument mit einem einzigen 1x1-Pixel zu erstellen. http://pastebin.com/5GqCYgMp

Ich erstellte ursprünglich mein Testdokument mit Acrobat, aber die Ausgabe war wirklich chaotisch.

Dann ersetzt den Stream mit dem Beispiel aus der PDF-Spezifikation, und versuchte, den Startxref-Offset zu beheben, aber nicht sicher, dass es korrekt ist. http://pastebin.com/BT42g02P

Dieses Dokument wird derzeit nicht korrekt geöffnet, aber ich habe versucht, einen minimalen Testfall zu erstellen. Meine vorherigen Versuche wurden nur durch Glück ohne Fehler angezeigt (aber das Remote-Bild funktionierte nicht).

Gibt es ein Tool, das tatsächlich die Erstellung von XObject mit/URL ermöglicht? Ich kenne das Dateiformat nicht genug, um sie zuverlässig von Hand zu erstellen.

+0

Bitte teilen Sie Ihr genaues Dokument. – mkl

+0

Ich habe ein Beispiel hinzugefügt, lassen Sie mich wissen, wenn das hilft, Danke –

Antwort

2

Zunächst einmal

ich die spec bin mit https://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/pdf_reference_1-7.pdf

würde ich empfehlen, keine PDF-Referenz verwendet, sondern die ISO-Norm. Die Adobe PDF-Referenzen sind nicht normativ, während der ISO-Standard ist. (Die tatsächlichen Inhaltsunterschiede sind sehr gering, aber wenn es eine normative Spezifikation gibt, sollte man sie verwenden.) Adobe veröffentlicht auch eine copy of the ISO standard with merely the header exchanged.

Dann behandeln Sie bitte PDFs nicht als Textdokumente. Z.B. Indem Sie sie auf Pastebin teilen, machen Sie sie als Text, der den Inhalt im Wesentlichen zerstört.

Das ist alles gesagt worden ist, lassen Sie sich in Ihrer aktuellen Ausgabe aussehen:

In Ihrer Probe PDF Sie haben:

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 

Dies zeigt, dass der PDF-Viewer in der URL https://upload.wikimedia.org/wikipedia/commons/c/ca/1x1.png eine Datei ein enthält, finden soll Array von 1 (/Width 1/Height 1) RGB (/ColorSpace/DeviceRGB) Beispiel mit 1 Byte pro Farbe (/BitsPerComponent 8), vgl. Abschnitt 8.9.5 Bildwörterbücher von ISO 32000-1.

Ich bezweifle, dass Ihre Datei das erfüllt, ich nehme an, es ist tatsächlich eine PNG-Datei, insbesondere mit einer PNG-Struktur, nicht die oben erläuterte Struktur.

PDF unterstützt das PNG-Format nicht, da Sie die Daten transformieren müssen. Es unterstützt, obwohl das JPEG-Format der /FFilter /DCTDecode mit, weshalb die Probe aus der Spezifikation

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 

es so einfach aussehen läßt.