J'essaye d'écrire quelques scripts python en utilisant pyPDF pour diviser des pages PDF en six pages séparées, les classer correctement (habituellement imprimées recto et verso, donc toutes les autres pages doivent avoir leur sous-pages commandées différemment) et supprimez les pages vierges résultantes à la fin du document de sortie.Script Python pour supprimer des pages vierges à l'aide de pyPDF
J'ai écrit le script suivant pour couper les pages PDF et les réorganiser. Coupe chaque page en deux colonnes et chaque colonne en trois pages. Je ne suis pas très expérimenté avec Python, alors s'il vous plaît excuser tout ce que je ne fais pas correctement.
#!/usr/bin/env python
import copy, sys
from pyPdf import PdfFileWriter, PdfFileReader
input = PdfFileReader(sys.stdin)
output = PdfFileWriter()
for i in range(0,input.getNumPages(),2):
p = input.getPage(i)
q = copy.copy(p)
r = copy.copy(p)
s = copy.copy(p)
t = copy.copy(p)
u = copy.copy(p)
(x, y) = p.mediaBox.lowerLeft
(w, h) = p.mediaBox.upperRight
p.mediaBox.lowerLeft = (x, 2 * h/3)
p.mediaBox.upperRight = (w/2, h)
q.mediaBox.lowerLeft = (w/2, 2 * h/3)
q.mediaBox.upperRight = (w, h)
r.mediaBox.lowerLeft = (x, h/3)
r.mediaBox.upperRight = (w/2, 2 * h/3)
s.mediaBox.lowerLeft = (w/2, h/3)
s.mediaBox.upperRight = (w, 2 * h/3)
t.mediaBox.lowerLeft = (x, y)
t.mediaBox.upperRight = (w/2, h/3)
u.mediaBox.lowerLeft = (w/2, y)
u.mediaBox.upperRight = (w, h/3)
a = input.getPage(i+1)
b = copy.copy(a)
c = copy.copy(a)
d = copy.copy(a)
e = copy.copy(a)
f = copy.copy(a)
(x, y) = a.mediaBox.lowerLeft
(w, h) = a.mediaBox.upperRight
a.mediaBox.lowerLeft = (x, 2 * h/3)
a.mediaBox.upperRight = (w/2, h)
b.mediaBox.lowerLeft = (w/2, 2 * h/3)
b.mediaBox.upperRight = (w, h)
c.mediaBox.lowerLeft = (x, h/3)
c.mediaBox.upperRight = (w/2, 2 * h/3)
d.mediaBox.lowerLeft = (w/2, h/3)
d.mediaBox.upperRight = (w, 2 * h/3)
e.mediaBox.lowerLeft = (x, y)
e.mediaBox.upperRight = (w/2, h/3)
f.mediaBox.lowerLeft = (w/2, y)
f.mediaBox.upperRight = (w, h/3)
output.addPage(p)
output.addPage(b)
output.addPage(q)
output.addPage(a)
output.addPage(r)
output.addPage(d)
output.addPage(s)
output.addPage(c)
output.addPage(t)
output.addPage(f)
output.addPage(u)
output.addPage(e)
output.write(sys.stdout)
Puis-je utiliser le script suivant pour supprimer les pages blanches. Le problème semble être que tandis que les pages sont visiblement recadrées, les commandes de dessin de texte sont toujours là. Aucune de ces pages n'est scannée, donc si elles sont vides, elles sont vraiment vides. Quelqu'un at-il des idées sur quelque chose que je pourrais faire différemment ou peut-être une approche entièrement différente à prendre pour supprimer les pages blanches? J'apprécierais vraiment toute aide.
Mise à jour: Si j'ouvre le résultat du premier script dans Acrobat, puis que j'utilise 'Enregistrer sous ...', il reconstruit le fichier à partir de zéro. Ensuite, lorsque je lance le deuxième script, il fonctionne comme je le souhaite. J'ai besoin d'un moyen de script le processus que fait acrobat dans 'Enregistrer sous ...' pour être utilisé dans un script qui ne nécessite pas Acrobat lui-même. – rpeck1682
Ce n'est pas vraiment une réponse, je vais donc le poster comme un commentaire. Le tout devait être mis dans une application iOS une fois cela fait. Je me suis contenté de dessiner les zones appropriées du PDF original avec un paramètre pour identifier le nombre de pages vierges à la fin. Ce n'est pas idéal, mais ça fonctionne. – rpeck1682