Ich versuche ein Python-Skript für Blender zu entwickeln, um eine gerenderte Bildsequenz in eine PDF auszugeben. Ich benutze Imagemagick, um in PDF zu konvertieren, dieser Teil funktioniert gut, aber ich möchte die Miniaturvorschau auch in der PDF enthalten.Bearbeiten von PDF-Attributen mit sed
Das PDF-Format ist ein bisschen verwirrend für mich, aber ich habe die /PageMode
und /UseThumbs
Tags und wie Sie sie richtig in die Datei einfügen. Ich kann das manuell machen und es funktioniert ziemlich gut. Aber ich habe versucht, ein ähnliches Ergebnis zu erhalten, ohne es manuell machen zu müssen, ich schreibe doch ein Skript. Hier ist ein Beispiel Ausschnitt aus den Kopfdaten im PDF, mit den zusätzlichen tags:
%PDF-1.3
1 0 obj
<<
/Pages 2 0 R
/PageMode
/UseThumbs
/Type /Catalog
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [ 3 0 R 17 0 R 31 0 R ]
/Count 3
>>
Ich versuche, sed zu verwenden, um die Tags einfügen, wie auf der 4. und 5. Leitungen benötigt, die auch arbeiten, aber Wenn ich das PDF öffne, sind die Bilder beschädigt. Wenn ich die manuell bearbeitete PDF-Datei (die nicht beschädigt ist) mit der sed-bearbeiteten PDF-Datei (die beschädigt ist) in Notepad ++ vergesse, gibt es keinen Unterschied in den Dateien, die ich finden kann. Es gibt eine andere Anzahl von Zeichen, aber ich kann die Position des Unterschieds nicht finden
Ich verstehe, dass PDFs eine Offset-Querverweistabelle haben, aber es scheint mir seltsam, dass es nichts korrumpiert, aber tun, indem es es tut es mit sed schafft Korruption
Was mache ich falsch?
Können Sie die beiden Dateien irgendwo posten, damit wir uns beide ansehen können? – janos
Es deutet darauf hin, dass es ein CR/LF-Problem gibt, wenn die Anzahl der Bytes aus ist, aber Sie können einen Unterschied nicht visuell bestätigen. Ein Beispiel-PDF würde in der Tat helfen. – usr2564301
* tut es von Hand nichts korrumpiert * - einige PDF-Viewer, nämlich der Adobe Reader, neigen dazu, bestimmte Arten von Schäden zu ignorieren, die sie zu handhaben wissen, und sich nur beschweren, wenn die PDF-Datei in einer Weise beschädigt ist kann nicht umgehen. Höchstwahrscheinlich hat Ihre manuelle Änderung die Datei lediglich * anders * beschädigt. Wenn @ Jongwares Annahme, dass der Unterschied in Zeilentrennzeichen besteht, wahr ist (vielleicht liest sed die Datei * Zeile für Zeile * und schreibt beim Schreiben immer die bevorzugte Zeilenendung), beachten Sie, dass das Ändern von Zeilentrennzeichen in einem komprimierten Stream tatsächlich erfolgt breche es. – mkl