todos programación practicar para más español ejercicios ejemplos avanzado python pdf

python - programación - Recorte de páginas de un archivo.pdf



python avanzado pdf (4)

La API JavaScript de Acrobat tiene un método setPageBoxes, pero Adobe no proporciona ejemplos de código Python. Solo C ++, C # y VB.

Me preguntaba si alguien tenía experiencia en trabajar programáticamente con archivos .pdf. Tengo un archivo .pdf y necesito recortar cada página hasta un cierto tamaño.

Después de una búsqueda rápida en Google encontré la biblioteca pyPdf para Python, pero mis experimentos con ella fallaron. Cuando cambié los atributos cropBox y trimBox en un objeto de página, los resultados no eran los que esperaba y parecían ser bastante aleatorios.

Alguien ha tenido alguna experiencia con esto? Los ejemplos de código serían muy apreciados, preferiblemente en python.


Probablemente esté buscando una solución gratuita, pero si tiene dinero para gastar, PDFlib es una biblioteca fabulosa. Nunca me ha decepcionado.


Puede convertir el PDF a Postscript (pstopdf o ps2pdf) y usar el procesamiento de texto en el archivo Postscript. Después de eso, puede convertir la salida de nuevo a PDF.

Esto funciona bien si los archivos PDF que desea procesar son todos generados por la misma aplicación y son algo similares. Si provienen de diferentes fuentes, suele ser difícil procesar los archivos Postscript; la estructura varía mucho. Pero incluso de lo que puede migrar, puede arreglar tamaños de página y cosas similares con algunas expresiones regulares.


pypdf hace lo que espero en esta área. Usando la siguiente secuencia de comandos:

#!/usr/bin/python # from pyPdf import PdfFileWriter, PdfFileReader with open("in.pdf", "rb") as in_f: input1 = PdfFileReader(in_f) output = PdfFileWriter() numPages = input1.getNumPages() print "document has %s pages." % numPages for i in range(numPages): page = input1.getPage(i) print page.mediaBox.getUpperRight_x(), page.mediaBox.getUpperRight_y() page.trimBox.lowerLeft = (25, 25) page.trimBox.upperRight = (225, 225) page.cropBox.lowerLeft = (50, 50) page.cropBox.upperRight = (200, 200) output.addPage(page) with open("out.pdf", "wb") as out_f: output.write(out_f)

El documento resultante tiene una caja de recorte de 200x200 puntos y comienza en 25,25 puntos dentro del cuadro de medios. El cuadro de recorte está a 25 puntos dentro de la casilla de recorte.

Así es como se ve mi documento de muestra en Acrobat Professional después del procesamiento con el código anterior:

Este documento aparecerá en blanco cuando se cargue en Acrobat Reader.