2009-02-01 12 views
40

Ho due file pdf o postscript (posso lavorare con uno dei due). Quello che voglio fare è unire ogni pagina sopra l'altra in modo che la pagina 1 del documento A sia combinata con la pagina 1 del documento B per produrre la pagina 1 del documento di output. Questo non è qualcosa che necessariamente voglio fare programmaticamente, anche se sarebbe utile.sovrapponi un file pdf o ps sopra a un altro

Qualche idea?

+0

Vedere una [domanda simile] (http://stackoverflow.com/questions/310441/create-two-pdfs-from-one-ps-file) qui su Stackoverflow e perché questo è difficile. –

+1

che non è realmente correlato a questo problema. OP dice che possono lavorare direttamente con i PDF. Comunque non è molto difficile. – danio

risposta

60

È possibile eseguire questa operazione con i file PDF utilizzando lo strumento da riga di comando pdftk utilizzando l'opzione stamp o background.

ad es.

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

Ciò funzionerà solo con un file di sfondo di una pagina. Se hai più pagine, puoi invece utilizzare il comando multibackground.

+5

Grazie, l'opzione per lo sfondo ha funzionato per me :) Giusto per chiarire, file1.pdf è collocato sopra file2.pdf. Grazie! – AkiRoss

+0

ha funzionato perfettamente. Grazie mille!!!! –

+0

pdftk su HP-UX Itanium 11.31 ia64 non riesce a funzionare. $ (hostname):> pdftk PclConvertedToPDF.PDF timbro di uscita sourcePDFShifted.PDF FinalPackList.pdf [HP ARIES32]: file di core per applicazioni PA-RISC a 32 bit [HP ARIES32]:/usr/local/bin/pdftk salvato in /core.pdftk Errore di memoria (coredump) Qualche idea di risolvere questo problema? – MoG

18

Ho avuto successo nella risoluzione di questo problema (solo PDF e Python) utilizzando pyPdf, in particolare l'operazione mergePage.

Dalla documentazione:

# 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)) 

dovrebbe essere sufficiente per ottenere l'idea.

+0

watermark.mergePage (pagina4) se si desidera la filigrana dietro il testo. – Ale

+0

Questo è stato il modo in cui ho iniziato: non ero divertito dalle lunghezze di PyPDF2 per unire le pagine. Il contenuto della pagina PDF può essere un array: assicurarsi che sia per la pagina che si desidera visualizzare per primo, aggiungere tutti i flussi di contenuto della pagina che si desidera renderizzare dopo/sopra. Gestire "le scatole" è un'altra interessante lattina di worm ... – greybeard

1

È possibile convertire entrambi i pdf in immagini e sovrapporre uno sopra l'altro come.

Una libreria di grafica adatta che è possibile utilizzare potrebbe funzionare.

La proposta di filigrana di cui sopra ha un grande potenziale, purché non si verifichino problemi nella propria lingua o nella libreria di grafica/pdf scelta.

+2

È sicuramente una soluzione possibile, ma si perderebbe la qualità scalabile di qualsiasi grafica vettoriale nei file. Un processo che mantiene i contenuti di livello superiore del modello di immagine è generalmente da preferire. –

+0

Definitivamente possibile. Se stai cercando di eseguire il rendering per la stampa in ogni caso, la prima volta che viene eseguita l'unione può essere eseguita in qualità sufficientemente alta come ultima risorsa. Ci dovrebbe anche essere un modo per prendere gli elementi vettoriali su ciascuna pagina e invece unirli su una pagina. –

2

Se si ha a che fare solo con postscript, è probabile che l'unico "pagebreak" sia l'operatore "showpage".
In tal caso, è sufficiente prendere i dati postscript dall'inizio del file uno alla prima istanza di "showpage", fare lo stesso con l'altro file, quindi concatenare questi 2 blocchi di postscript per creare la nuova pagina.

Se i 2 file sono solo una pagina, è possibile unire semplicemente i 2 file.

+0

Si potrebbe voler inserire una ('g')' save'/'restore'-pair attorno al" chunk "incluso per primo. – greybeard

0

Ho utilizzato lo strumento Mac OS PDFClerk Pro. Ho importato le pagine PDF, quindi le ho unite con l'opzione "Unisci pagine (impilate)". Mi ha davvero impressionato.

1

PDFBox per Java supporta una classe Overlay, che permette di unire file PDF in questo modo. Vedere questa risposta: Watermarking with PDFBox

Tuttavia, sia PyPDF2 che PDFbox sono stati inaffidabili nella mia esperienza, ma forse questo è utile per qualcuno.

Problemi correlati