Estoy tratando de escribir un par de scripts de Python usando pyPDF para dividir páginas de PDF en seis páginas separadas, ordenarlas correctamente (por lo general, las páginas anteriores deben tener su subpáginas ordenadas de manera diferente) y elimine las páginas en blanco resultantes al final del documento de salida.Script de Python para eliminar páginas en blanco usando pyPDF
Escribí la siguiente secuencia de comandos para cortar las páginas de PDF y reordenarlas. Corta cada página en dos columnas y cada columna en tres páginas. No tengo mucha experiencia con Python, así que disculpa cualquier cosa que no esté haciendo correctamente.
#!/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)
Luego utilizo la siguiente secuencia de comandos para eliminar las páginas en blanco.
#!/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()):
p = input.getPage(i)
text = p.extractText()
if (len(text) > 10):
output.addPage(p)
output.write(sys.stdout)
El problema parece ser que, aunque las páginas están visiblemente recortadas, los comandos de extracción de texto siguen allí. Ninguna de estas páginas se escanea, por lo que si están en blanco, están realmente en blanco. ¿Alguien tiene alguna idea sobre algo que podría hacer de manera diferente o posiblemente un enfoque completamente diferente para eliminar las páginas en blanco? Realmente apreciaria cualquier ayuda.
Actualización: si abro el resultado del primer script en Acrobat y luego uso 'Guardar como ...', reconstruye el archivo desde cero. Luego, cuando ejecuto el segundo script, funciona de la manera que quiero. Necesito una forma de guionizar el proceso que acrobat hace en 'Guardar como ...' para ser utilizado en un guión que no requiere Acrobat. – rpeck1682
Esto no es realmente una respuesta, así que lo publicaré como un comentario. Todo el asunto debía incluirse en una aplicación de iOS una vez que estuviera hecho. Recurrí a dibujar las áreas apropiadas del PDF original con una configuración para identificar el número de páginas en blanco al final. No es ideal, pero funciona. – rpeck1682