2009-02-01 88 views
40

Tengo dos archivos pdf o postscript (puedo trabajar con cualquiera de ellos). Lo que quiero hacer es fusionar cada página una encima de la otra para que la página1 del documento A se combine con la página 1 del documento B para producir la página 1 del documento de salida. Esto no es algo que necesariamente quiero hacer programáticamente, aunque sería útil.superponer un archivo pdf o ps encima de otro

¿Alguna idea?

+0

Consulte una [pregunta similar] (http://stackoverflow.com/questions/310441/create-two-pdfs-from-one-ps-file) aquí en Stackoverflow y por qué esto es difícil. –

+1

que no está realmente relacionado con este problema. OP dice que pueden trabajar directamente con archivos PDF. No es realmente difícil de todos modos. – danio

Respuesta

60

Puede hacer esto con archivos pdf usando la herramienta de línea de comandos pdftk usando la opción stamp o background.

p. Ej.

$ pdftk file1.pdf background file2.pdf output combinedfile.pdf 

Esto solo funcionará con un archivo de fondo de una página. Si tiene varias páginas, puede usar el comando multibackground en su lugar.

+5

Gracias, la opción de fondo funcionó para mí :) Solo para aclarar, file1.pdf se coloca encima de file2.pdf. ¡Gracias! – AkiRoss

+0

Funcionó perfectamente. ¡¡¡¡Gracias un montón!!!! –

+0

pdftk en HP-UX Itanium 11.31 ia64 no se puede ejecutar. $ (nombre de host):> pdftk sello PclConvertedToPDF.PDF FinalPackList.pdf salida sourcePDFShifted.PDF [ARIES32 HP]: archivo Core para la aplicación PA-RISC de 32 bits [ARIES32 HP]:/usr/local/bin/pdftk guardado en /core.pdftk Fallo de memoria (coredump) ¿Alguna idea de arreglar esto? – MoG

18

Tuve éxito resolviendo este problema (solo PDF y Python) usando pyPdf, específicamente el mergePage operación.

A partir de los documentos:

# add page 4 from input1, but first add a watermark from another pdf: 
page4 = input1.getPage(3) 
watermark = PdfFileReader(file("watermark.pdf", "rb")) 
page4.mergePage(watermark.getPage(0)) 

debería ser suficiente para hacerse una idea.

+0

marca de agua.mergePágina (página 4) si desea la marca de agua detrás del texto. – Ale

+0

Así fue como comencé - No me divirtieron las longitudes a las que PyPDF2 fue para fusionar páginas. El contenido de la página PDF puede ser una matriz: asegúrese de que sea para la página que quiere que se represente en primer lugar, añada todas las secuencias de contenido de la página que desea representar después/encima de esa. Manejar "las cajas" es otra lata de gusanos interesante ... – greybeard

1

Puede convertir ambos pdfs en imágenes y superponer uno en la parte superior de la otra capa.

Una biblioteca de gráficos adecuada que podría utilizar esto funcionaría.

La sugerencia de marca de agua de arriba también tiene un gran potencial, siempre y cuando no se encuentre con problemas en su idioma o la biblioteca de gráficos/pdf de su elección.

+2

Definitivamente es una solución posible, pero perdería la calidad escalable de cualquier gráfico vectorial en los archivos. Generalmente, se prefiere un proceso que mantenga los contenidos de nivel superior del modelo de imagen. –

+0

Definitivamente es posible. Si desea renderizar para imprimir de todos modos, la primera vez que realice la fusión, puede hacerlo con la calidad suficiente como último recurso. También debería haber una manera de tomar los elementos vector en cada página y combinarlos en una página. –

2

Si solo se trata de postscript, es probable que los únicos 'pagebreaks' sean el operador 'showpage'.
En este caso, simplemente puede tomar los datos postscript desde el principio del archivo uno a la primera instancia de 'showpage', haga lo mismo con el otro archivo, luego concatenar estos 2 fragmentos de postscript para crear su nueva página.

Si los 2 archivos son solo una página, entonces puede simplemente unir los 2 archivos.

+0

Es posible que desee incluir un ('g')' save'/'restore'-pair alrededor del" fragmento "incluido primero. – greybeard

0

Utilicé la herramienta Mac OS PDFClerk Pro. Importé las páginas PDF y luego las combiné con la opción "Combinar páginas (apiladas)". Realmente me impresionó.

1

PDFBox para Java soporta una clase de superposición que permite combinar archivos PDF de esta manera. Ver esta respuesta: Watermarking with PDFBox

Sin embargo, tanto PyPDF2 como PDFbox no han sido confiables en mi experiencia, pero quizás esto sea útil para alguien.

Cuestiones relacionadas