Necesito encontrar la diferencia entre dos archivos pdf. ¿Alguna herramienta relacionada con Python tiene una característica que da directamente la diferencia de los 2 archivos PDF?¿Cómo obtener la diferencia de dos archivos PDF en python?
Respuesta
¿Qué quiere decir con "diferencia"? Una diferencia en el texto del PDF o algún cambio en el diseño (por ejemplo, se redimensionó un gráfico incrustado). El primero es fácil de detectar, el segundo es casi imposible de obtener (PDF es un formato de archivo MUY complicado, que ofrece capacidades interminables de formateo de archivos).
Si desea obtener el diff texto, sólo ejecute un pdf a la utilidad de texto en los dos archivos PDF y luego usar Python biblioteca incorporada de diferencias para obtener la diferencia de los textos convertidos.
Esta pregunta se refiere a la conversión de PDF a texto en python: Python module for converting PDF to text.
La fiabilidad de este método depende de los generadores de PDF que esté utilizando. Si usa, p. Adobe Acrobat y algunos PDF-Creator basados en Ghostscript para crear dos archivos PDF a partir del MISMO documento Word, es posible que aún obtenga una diferencia, aunque el documento original sea idéntico.
Esto se debe a que hay docenas de maneras de codificar la información del documento fuente en un PDF y cada convertidor utiliza un enfoque diferente. A menudo, el convertidor de PDF a texto no puede determinar el flujo de texto correcto, especialmente con diseños o tablas complejas.
Solo el texto servirá. El generador de pdf no debería ser un problema. – Goutham
Si necesita admitir imágenes, puede extraer archivos JPG de un pdf: http://nedbatchelder.com/blog/200712/extracting_jpgs_from_pdfs.html o convertir el pdf a una imagen y comparar eso. –
mira esto, puede ser útil: http://pybrary.net/pyPdf/
pyPdf no fue muy robusto en mis pruebas.se colgó en pdfs creados por Illustrator/InDesign y otros programas de dibujo vectorial. Sin embargo, podría estar bien para archivos PDF simples de aplicaciones de Office. Una alternativa mucho más sólida es pftftotext del kit de herramientas xpdf. – fbuchinger
no sé su caso de uso, pero para pruebas de regresión de script que genera pdf usando reportlab, debo hacer pdfs diff por
- la conversión cada página a una imagen utilizando ghostsript
- Diferenciando cada página de imagen de la página PDF estándar frente, usando PIL
por ejemplo
im1 = Image.open(imagePath1)
im2 = Image.open(imagePath2)
imDiff = ImageChops.difference(im1, im2)
Esto funciona en mi caso para marcar cualquier cambio introducido debido a cambios en el código.
¿Hay alguna referencia para su paso # 1? – yucer
Me encontré con la misma pregunta en mi pdftest unit, ni pdfminer ni pyPdf funciona bien para mí.
Aquí hay dos comandos (pdftocairo, pdftotext) que funcionan perfectamente en mi prueba. (Instalación de Ubuntu: apt-get install poppler-utils)
Usted puede obtener el contenido del PDF por:
from subprocess import Popen, PIPE
def get_formatted_content(pdf_content):
cmd = 'pdftocairo -pdf - -' # you can replace "pdftocairo -pdf" with "pdftotext" if you want to get diff info
ps = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE)
stdout, stderr = ps.communicate(input=pdf_content)
if ps.returncode != 0:
raise OSError(ps.returncode, cmd, stderr)
return stdout
Parece pdftocairo puede volver a dibujar los archivos pdf, pdftotext puede extraer todo el texto.
Y entonces se puede comparar dos archivos PDF:
c1 = get_formatted_content(open('f1.pdf').read())
c2 = get_formatted_content(open('f2.pdf').read())
print(cmp(c1, c2)) # for binary compare
# import difflib
# print(list(difflib.unified_diff(c1, c2))) # for text compare
- 1. ¿Cómo combinar dos archivos PDF en uno en Java?
- 2. Comparar dos cadenas y obtener la diferencia
- 3. ¿Cómo obtener la diferencia entre dos QDateTimes en milisegundos?
- 4. ¿Cómo encontrar la diferencia establecida de dos archivos?
- 5. Comparación de dos archivos de texto en python
- 6. diferencia entre el contenido de dos archivos
- 7. Cómo obtener la diferencia horaria entre dos valores
- 8. ¿Cómo puedo obtener la diferencia entre dos fechas bajo bash
- 9. Rieles 3. ¿Cómo obtener la diferencia entre dos matrices?
- 10. cómo restar dos fechas y horas para obtener la diferencia
- 11. ¿Cómo obtener la diferencia entre dos fechas redondeadas a horas
- 12. ¿Cómo obtener la línea actual de archivos abiertos en python?
- 13. Diferencia entre dos fechas en Python
- 14. Shell script para obtener la diferencia en dos fechas
- 15. Generar una diferencia "difusa" de dos archivos en Python, con una comparación aproximada de flotantes
- 16. ¿Cómo unir dos archivos wav usando python?
- 17. diferencia porcentual entre dos archivos de texto
- 18. bash, Linux: establecer la diferencia entre dos archivos de texto
- 19. mediante comunicación a la diferencia de dos archivos
- 20. ¿Cómo crear archivos pdf en drupal?
- 21. diff dos archivos grandes en Python
- 22. Fusionar archivos PDF
- 23. la creación de dos páginas en PDF con Imagick
- 24. Generando archivos PDF desde la entrada SVG
- 25. Una herramienta de diferencia de datos para encontrar la diferencia entre dos archivos MDB de acceso
- 26. función Javascript para obtener la diferencia entre dos números
- 27. Cómo obtener la diferencia de dos conjuntos de consulta en Django
- 28. Django obtener la URL de archivos estáticos en la vista
- 29. archivos PDF de minería de textos con Python?
- 30. Ruby: Lectura de archivos PDF
Diff el texto o el contenido completo o el tamaño? – Steen
El texto funcionará. – Goutham