PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mit Perl PDF im Klartext bearbeiten



Floyd
06-02-2007, 21:33
Hallo,

ich möchte verschiedene PDF-Dateien bearbeiten und Kommentare entfernen. Da ich schon vorher einmal mit der Verarbeitung Probleme gehabt habe, sollte das Skript erstmal nur die Datei einlesen und nachher wieder ausschreiben, ganz simpel. Hier tritt nun schon das erste Problem auf: Ist die Dateigröße vorher 2.405 kB groß, ist Sie nach dem Ausschreiben 2.417 kB groß. :confused: Das ganze ist unter Windows, warum das so ist, keine Ahnung. Vielleicht könnt ihr ja helfen ? Adobe kann das Ganze dann auch nicht mehr darstellen und sagt, dass nicht genug Daten für ein Bild da sind.

tschö, Floyd

Molaf
06-02-2007, 21:50
Welches Modul nutzt Du dafür?

rais
06-02-2007, 23:44
Moin moin,

Ist die Dateigröße vorher 2.405 kB groß, ist Sie nach dem Ausschreiben 2.417 kB groß. :confused:

selbst dann, wenn Du keine vermeintlichen Kommentare rausnehmen lässt?

Das ganze ist unter Windows, warum das so ist, keine Ahnung.

Also das muß ich mir erstmal auf der Zunge zergehen lassen :D
MfG,

Floyd
07-02-2007, 12:58
Hallo,

Molaf: Wie gesagt, ich benutze kein Modul, sondern lese die Datei zeilenweise in einen Array ein, möchte dann per Regex bestimmte Eigenschaften /Producer() etc. ändern und später wieder ausgeben.

Da es in der fertigen Version zu Problemen geführt hat, habe ich erstmal alle Veränderungen des Stringes entfernt und nur in den Array eingelesen und in die Datei wieder eingeschrieben.

Unter Linux funktioniert das alles übrigens einwandfrei und die Dateigröße bleibt so wie sie sein sollte.

tschö, Peter

Molaf
07-02-2007, 15:38
Wenn Du Dir die Mühe machst, das ganze selber zu parsen - tja, warum eigentlich - dann kommt ja der ganze PDF-interne Konventionskrams auf Dich zu. Da kann ich natürlich nciht weiterhelfen.

Wenn aber ohne wirkliche Änderungen die Dateigrösse später nicht stimmt, könnte das mit der Zeichenkodierung (UTF/ISO 8859-1) zu tun haben, oder minimal mit den anderen Zeilenumbrüchen (\x0d\x0a statt bloss \n). Dass aber eine so grosse Änderung eintritt kan ich mir kaum erklären.

Kannst Du mal den betreffenden Code posten?

Floyd
09-02-2007, 14:58
Klar, hier kommt der Code:



[...]

if(-e $ARGV[0]) {
open(PDF, $ARGV[0]) or die $!;
binmode PDF, ":utf-8";
@zeilen = <PDF>;
close(PDF);

open (PDF, ">Test.pdf") or die $!;
binmode PDF, ":utf-8";

foreach (@zeilen) {
// REGEX
print PDF $_;
}
close (PDF);
}
[...]


Wie ihr seht nichts mystisches ... Wie gesagt, unter Linux keine Probleme unter Windows ja ....

Thomas Engelke
12-02-2007, 11:05
Da du nix interpolierst, kann's eigentlich auch nix mit verschiedenen <cr>s sein. Meine wahrscheinlichste Vermutung zu diesem Zeitpunkt ist, daß deine RegEx etwas einfügt.

TME

Floyd
17-02-2007, 20:29
Hallo,

das Problem besteht auch, wenn kein Regex da ist, die Datei nur eingelesen wird und ausgegeben wird. Das ist ja auch gerade das komische.

tschö, Peter

rais
18-02-2007, 11:15
Moin moin,


das Problem besteht auch, wenn kein Regex da ist, die Datei nur eingelesen wird und ausgegeben wird.
und wenn Du die Ausgabedatei nochmal durchlaufen lässt? Wächst sie dann weiter an?

BTW vllt solltest Du es erst einmal mit einer etwas kleineren (sprich: überschaubarer) Datei
versuchen... und wenn Du Eingangs- und Ausgangsdatei byteweise vergleichst, solltest Du zumindest ansatzweise erkennen können, wo's nicht mehr passt.
MfG,