Come posizionare un'immagine su un file PDF esistente in una posizione di coordinate specifica. Il pdf rappresenta un foglio di disegno con una pagina. L'immagine sarà ridimensionata. Sto controllando ReportLab ma non riesco a trovare la risposta. Grazie.Posiziona immagine su PDF
risposta
from pyPdf import PdfFileWriter, PdfFileReader
output = PdfFileWriter()
input1 = PdfFileReader(file("document1.pdf", "rb"))
watermark = PdfFileReader(file("watermark.pdf", "rb"))
page4.mergePage(watermark.getPage(0))
# finally, write "output" to document-output.pdf
outputStream = file("document-output.pdf", "wb")
output.write(outputStream)
outputStream.close()
Penso che sia come watermark
, consultare il manuale per la migliore idea
Grazie, ha funzionato bene, ha solo accontentato i metodi PdfFileReader.getPage() e PdfFileWriter.addPage() dai documenti. –
si prega di vedere il mio commento sopra. – Auston
Sembra che PyPdf non sia più mantenuto, né il sito continuatore annunciato. Quale altra soluzione esiste nel lungo periodo? – lalebarde
Dal momento che, la sua pdf esistente, il modo più semplice per farlo è:
- Converti pdf in .doc o .odt (Controlla http://www.zamzar.com/)
- Aggiungi le immagini nel file convertito come vuoi .
- riconvertire PDF (OpenOffice e LibreOffice rende facile per salvare i file PDF)
PS: Se il file PDF ha bisogno di cura inoltre sempre tenere una copia di backup di file doc di origine, in modo che i cambiamenti possono essere fatto facilmente, troppa conversione ha effetti negativi sulla qualità del file.
Ho combinato ReportLab (http://www.reportlab.com/software/opensource/rl-toolkit/download/) e pyPDF (http://pybrary.net/pyPdf/) per inserire un'immagine direttamente senza avere Per generare il PDF in primo piano:
from pyPdf import PdfFileWriter, PdfFileReader
from reportlab.pdfgen import canvas
from StringIO import StringIO
# Using ReportLab to insert image into PDF
imgTemp = StringIO()
imgDoc = canvas.Canvas(imgTemp)
# Draw image on Canvas and save PDF in buffer
imgPath = "path/to/img.png"
imgDoc.drawImage(imgPath, 399, 760, 160, 160) ## at (399,760) with size 160x160
imgDoc.save()
# Use PyPDF to merge the image-PDF into the template
page = PdfFileReader(file("document.pdf","rb")).getPage(0)
overlay = PdfFileReader(StringIO(imgTemp.getvalue())).getPage(0)
page.mergePage(overlay)
#Save the result
output = PdfFileWriter()
output.addPage(page)
output.write(file("output.pdf","w"))
Sono passati 5 anni, penso che queste risposte necessitino di qualche TLC. Ecco una soluzione completa.
effettuano i seguenti controlli con Python 2.7
installare le dipendenze
pip install reportlab
pip install pypdf2
fare la magia
from reportlab.pdfgen import canvas
from PyPDF2 import PdfFileWriter, PdfFileReader
# Create the watermark from an image
c = canvas.Canvas('watermark.pdf')
# Draw the image at x, y. I positioned the x,y to be where i like here
c.drawImage('test.png', 15, 720)
# Add some custom text for good measure
c.drawString(15, 720,"Hello World")
c.save()
# Get the watermark file you just created
watermark = PdfFileReader(open("watermark.pdf", "rb"))
# Get our files ready
output_file = PdfFileWriter()
input_file = PdfFileReader(open("test2.pdf", "rb"))
# Number of pages in input document
page_count = input_file.getNumPages()
# Go through all the input file pages to add a watermark to them
for page_number in range(page_count):
print "Watermarking page {} of {}".format(page_number, page_count)
# merge the watermark with the page
input_page = input_file.getPage(page_number)
input_page.mergePage(watermark.getPage(0))
# add page from input file to output document
output_file.addPage(input_page)
# finally, write "output" to document-output.pdf
with open("document-output.pdf", "wb") as outputStream:
output_file.write(outputStream)
Riferimenti:
nuova casa di pypdf: http://mstamy2.github.io/PyPDF2/
docs ReportLab: http://www.reportlab.com/apis/reportlab/2.4/pdfgen.html
Reportlab guida per l'uso completa: https://www.reportlab.com/docs/reportlab-userguide.pdf
Mentre si aggiorna la risposta, la libreria [pdfrw] (https://github.com/pmaupin/pdfrw/) può anche [filigrana] (https://github.com/pmaupin/pdfrw/blob /master/examples/watermark.py) in un modo molto simile, e può anche andare nell'altro senso - permettendo di usare PDF preesistenti come se fossero immagini (senza rasterizzarli) in PDF che tu [costruisci con reportlab ] (https://github.com/pmaupin/pdfrw/blob/master/examples/rl1/platypus_pdf_template.py). Disclaimer: I am the pdfrw author ... –
Ah, carino, lo terrò a mente –
Questo è ciò che ha funzionato per me
from PyPDF2 import PdfFileWriter, PdfFileReader
def watermarks(temp, watermar,new_file):
template = PdfFileReader(open(temp, 'rb'))
wpdf = PdfFileReader(open(watermar, 'rb'))
watermark = wpdf.getPage(0)
for i in xrange(template.getNumPages()):
page = template.getPage(i)
page.mergePage(watermark)
output.addPage(page)
with open(new_file, 'wb') as f:
output.write(f)
Thx per le risposte precedenti. A mio modo con python3.4
# -*- coding: utf-8 -*-
from io import BytesIO
from PyPDF2 import PdfFileWriter, PdfFileReader
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4
def gen_pdf():
# there are 66 slides (1.jpg, 2.jpg, 3.jpg...)
path = 'slades/{0}.jpg'
pdf = PdfFileWriter()
for num in range(1, 67): # for each slide
# Using ReportLab Canvas to insert image into PDF
imgTemp = BytesIO()
imgDoc = canvas.Canvas(imgTemp, pagesize=A4)
# Draw image on Canvas and save PDF in buffer
imgDoc.drawImage(path.format(num), -25, -45)
# x, y - start position
# in my case -25, -45 needed
imgDoc.save()
# Use PyPDF to merge the image-PDF into the template
pdf.addPage(PdfFileReader(BytesIO(imgTemp.getvalue())).getPage(0))
pdf.write(open("output.pdf","wb"))
if __name__ == '__main__':
gen_pdf()
- 1. gtk treeview: posiziona i pulsanti immagine su righe
- 2. Sostituisci immagine in PDF con un'altra immagine box in pdf
- 3. Posiziona componenti su coordinate arbitrarie (x, y)
- 4. Immagine PDF in documento PDF utilizzando ReportLab (Python)
- 5. File di immagine in PDF Stream Conversion
- 6. Immagine gambero su immagine amazzonica non trovata
- 7. iphone certi PDF rendering come immagine nera
- 8. Html Immagine su immagine
- 9. Android: Immagine su immagine
- 10. Createjs importa file da indesign e li posiziona su tela
- 11. Immagine integrata RDLC distorta in PDF
- 12. Estrai immagine da PDF usando .Net C#
- 13. iTextSharp HTML a PDF immagine src
- 14. Immagine della prima pagina pdf ios sdk
- 15. montaggio immagine in PDF usando iText
- 16. PDF Anteprima anteprima immagine in laravel 5.1?
- 17. Sovrapposizione immagine su tela HTML5 su immagine
- 18. Posiziona testo nell'immagine sui bordi
- 19. Dove si posiziona 'git fetch'?
- 20. Ricerca PDF su iPhone
- 21. scrivere righe su PDF
- 22. Posiziona facilmente un elemento su un altro elemento in jQuery?
- 23. Posiziona rettangoli casuali non sovrapposti su un pannello
- 24. È possibile convertire la pagina PDF in Immagine usando itextSharp?
- 25. Imposta immagine src su un'altra immagine jquery
- 26. opencv trovare immagine cordinates su un'altra immagine
- 27. Come visualizzare l'array btye PDF memorizzato in SQL Server su asp.net WebForm in una casella immagine?
- 28. Immagine deblurring su Matlab
- 29. Caricamento immagine su binari
- 30. Immagine disegnabile su tela
L'immagine si verifica sempre nella stessa posizione? –
Sì, è fondamentalmente un francobollo vicino all'angolo in basso a sinistra. –
La risposta è sufficiente? Se no allora cosa c'è di sbagliato in questo? – theheadofabroom