Warum teilt mein Code nicht jede Seite in einer gescannten PDF-Datei korrekt auf?

8

Update: Danke an stardt, dessen Skript funktioniert! Das PDF ist eine Seite eines anderen. Ich habe das Skript auf dem anderen versucht, und es spuckt auch jede PDF-Seite korrekt aus, aber die Reihenfolge der Seitenzahlen ist manchmal richtig und manchmal falsch. Auf Seite 25-28 der PDF-Datei sind beispielsweise die Seitenzahlen 14, 15, 17 und 16. Ich habe mich gefragt, warum? Das gesamte PDF kann von Ссылка

heruntergeladen werden

Original: Ich habe eine gescannte PDF-Datei, in der zwei Papierseiten in einer PDF-Seite nebeneinander liegen. Ich möchte die PDF-Seite in zwei teilen, wobei die ursprüngliche linke Hälfte die frühere der beiden neuen PDF-Seiten wird. Die PDF sieht wie aus.

Hier ist mein Python-Skript namens un2up inspiriert von Gilles :

%Vor%

Ich habe das Skript in einem PDF-Terminal mit dem Befehl un2up < page.pdf > out.pdf ausprobiert, aber die Ausgabe out.pdf wurde nicht richtig aufgeteilt.

Ich habe auch die Werte der Variablen w und h , die Ausgabe von p.mediaBox.upperRight überprüft, und sie sind 514 und 1224 , die auf der Grundlage ihres tatsächlichen Verhältnisses nicht richtig aussehen.

Die Datei kann von Ссылка heruntergeladen werden.

    
Tim 13.08.2011, 00:20
quelle

3 Antworten

7

Ihr Code geht davon aus, dass p.mediaBox.lowerLeft (0,0) ist, aber tatsächlich (0, 497)

Dies funktioniert für die von Ihnen bereitgestellte Datei:

%Vor%     
stardt 13.08.2011, 00:43
quelle
1

@ stardts Code war ziemlich nützlich, aber ich hatte Probleme, einen Stapel von PDF-Dateien mit unterschiedlichen Ausrichtungen zu teilen. Hier ist eine allgemeinere Funktion, die unabhängig von der Seitenausrichtung funktioniert:

%Vor%     
moraes 01.04.2013 10:37
quelle
0

Ich möchte hinzufügen, dass Sie darauf achten müssen, dass Ihre mediaBox Variablen nicht über die Kopien p und q gemeinsam genutzt werden. Dies kann leicht passieren, wenn Sie vor dem Kopieren von p.mediaBox lesen.

In diesem Fall wird z.B. p.mediaBox.upperRight kann q.mediaBox ändern und umgekehrt.

Die Lösung von @moraes kümmert sich darum, indem sie die mediaBox explizit kopiert.

    
florian 14.08.2013 10:18
quelle

Tags und Links