Frage zum Wesen von PDFs

  • Themenstarter Themenstarter Shlyakh
  • Beginndatum Beginndatum
S

Shlyakh

Guest
Ich habe einige PDFs unter Visual Studio mit C# erstellt und mir danach mit einem Hexeditor den Quellcode angeschaut. Daraufhin habe ich ein neues, leeres Dokument mit der Dateiendung .pdf erstellt und quasi das, was ich als "Quellcode" meines ursprünglichen pdf-Dokumentes sah, in mein leeres Dokument hineingepastet und dann abgespeichert.


Als ich letzteres Dokument dann als pdf-Dokument öffnen wollte, hat er mir eine leere Seite dargestellt, der Text, den ich in meinem ursprünglichen pdf-Dokument (also von dem ich den Quellcode genommen hatte) hatte, sah ich nicht. Was ich nun fragen wollte:


a) Woran liegt das und


b) Wenn ich nun in einen Editor ein pdf-Dokument von Hand schreibe, also den pdf-Standards folgend - was muss ich tun, dass es zu einem pdf-Dokument gemacht und als solches dargestellt wird? Brauche ich dazu Adobe Acrobat Pro 11? Oder was andres?
 
Ich würde jetzt einfach mal drauf tippen, daß deine beiden Dateien unterschiedliche Encodings haben. Mit dem Linux-Tool "file" kann man das in der Regel rausfinden. Für Windows gibt's da sicherlich auch was.

Um Dateien mit verschiedenen Encodings abzuspeichern würde sich Notepad++ anbieten. Das Ding kann das meines Wissens nach.
 
a)
Nur nochmal damit ich das nicht falsch verstehe: Du hast eine PDF mit einem Texteditor geöffnet, ein neues Dokument erstellt und den "Text" aus dem PDF-Dokument in das neue kopiert ?
Hast du nur die Bytes aus dem Texeditor oder den Text kopiert ?
Falls nur nur die Bytes kopiert ist, kann es eigentlich unmöglich Probleme geben, vorausgesetzt du hast wirklich alles kopiert. Genau deshalb verwendet man ja Hex-Editoren.:confused:

Wenn du den Text kopiert hast:
Dann ist zuerst die Frage was es für ein Dokument ist. Ein ganz normales Plain-Text Dokument oder doch was formatiertes wie .doc/.rtf/.odt/... ?
Das nächste Problem ist (wie schon gesagt wurde) das Encoding.
Das letzte und vermutlich wichtigste Problem ist, dass Texteditoren mit nicht-druckbaren Zeichen nicht gut klarkommen, weder simple Editoren wie Notepad noch bessere wie Notepad++.

b)
Naja, wenn du das Dokument dem PDF-Standard folgend anlegst kannst du es auch als PDF öffnen.
 
Klar, ich habe schon einen HexEditor eingesetzt. Ich habe immer mehr das Gefühl, dass es gar nicht möglich ist, einfach den pdf-Code in ein durch einen Editor geöffnetes Textdokument zu schreiben. Man braucht dazu irgendeine Applikation, die dann entweder das pdf-Dokument erstellt (und die sich mit C# oder JAVA programmieren lässt) oder die zumindest ein eine .dvi erstellt, die man dann in eine pdf verwandeln kann.


Was ich auch noch nicht ganz verstehe, sind in diesem Zusammenhang auch diese Stream-Objekte siehe hier: PDF Stream Objects | Didier Stevens


Die erste Abbildung enthält einen Stream vor dem (Hello World), und wenn ich das richtig verstanden habe, ist dieser eine Art Anweisung zur Darstellung von Hello World - aber wie lässt sich denn so ein Stream programmieren? Und was enthält dieser Stream denn für Daten?
 
Wenn die beiden Dateien nicht die exakt gleiche Größe haben und identische Hashes (z.b. md5) ergeben, hast du beim kopieren etwas verbaut. Nen Hex-Editor kann man auch falsch bedienen :)
 
Ein Stream (von C++ ausgehend, sollte hier aber auch grob zutreffen), ist wie der Name sagt ein Datenstrom, oder auch eine Art Filter, der zwischen deinen dort eingespeisten Daten und deinem Output (der PDF) steht. Er bearbeitet den Input auf eine bestimmte Weise.

Beispiel:

aaa -> [Stream für PDFs] -> PDF konformes aaa
 
Zurück
Oben