una script pasar llamar integrar implementar funcion desde datos conectar con como python pdf webpage qprinter

script - Cómo convertir una página web en PDF usando Python



python y html5 (5)

Estaba encontrando una solución para imprimir una página web en un archivo PDF local, usando Python. una de las buenas soluciones es usar Qt, que se encuentra aquí, https://bharatikunal.wordpress.com/2010/01/ .

No funcionó al principio porque tuve un problema con la instalación de PyQt4 porque me dio mensajes de error como ''ImportError: Ningún módulo llamado PyQt4.QtCore'', y ''ImportError: Ningún módulo llamado PyQt4.QtCore''.

Fue porque PyQt4 no está instalado correctamente. Solía ​​tener las bibliotecas ubicadas en C: / Python27 / Lib, pero no es para PyQt4.

De hecho, simplemente necesita descargar desde http://www.riverbankcomputing.com/software/pyqt/download (tenga en cuenta la versión de Python correcta que está utilizando) e instálelo en C: / Python27 (mi caso). Eso es.

Ahora los scripts funcionan bien, así que quiero compartirlos. para obtener más opciones sobre el uso de Qprinter, consulte http://qt-project.org/doc/qt-4.8/qprinter.html#Orientation-enum .


Aquí hay una solución simple usando QT. Encontré esto como parte de una respuesta a una pregunta diferente en . Lo probé en Windows.

from PyQt4.QtGui import QTextDocument, QPrinter, QApplication import sys app = QApplication(sys.argv) doc = QTextDocument() location = "c://apython//Jim//html//notes.html" html = open(location).read() doc.setHtml(html) printer = QPrinter() printer.setOutputFileName("foo.pdf") printer.setOutputFormat(QPrinter.PdfFormat) printer.setPageSize(QPrinter.A4); printer.setPageMargins (15,15,15,15,QPrinter.Millimeter); doc.print_(printer) print "done!"


Gracias a las publicaciones a continuación, y puedo agregar la dirección del enlace de la página web que se imprimirá y la hora actual en el PDF generado, sin importar cuántas páginas tenga.

Agregar texto a PDF existente usando Python

https://github.com/disflux/django-mtr/blob/master/pdfgen/doc_overlay.py

Para compartir el script de la siguiente manera:

import time from pyPdf import PdfFileWriter, PdfFileReader import StringIO from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import letter from xhtml2pdf import pisa import sys from PyQt4.QtCore import * from PyQt4.QtGui import * from PyQt4.QtWebKit import * url = ''http://www.yahoo.com'' tem_pdf = "c://tem_pdf.pdf" final_file = "c://younameit.pdf" app = QApplication(sys.argv) web = QWebView() #Read the URL given web.load(QUrl(url)) printer = QPrinter() #setting format printer.setPageSize(QPrinter.A4) printer.setOrientation(QPrinter.Landscape) printer.setOutputFormat(QPrinter.PdfFormat) #export file as c:/tem_pdf.pdf printer.setOutputFileName(tem_pdf) def convertIt(): web.print_(printer) QApplication.exit() QObject.connect(web, SIGNAL("loadFinished(bool)"), convertIt) app.exec_() sys.exit # Below is to add on the weblink as text and present date&time on PDF generated outputPDF = PdfFileWriter() packet = StringIO.StringIO() # create a new PDF with Reportlab can = canvas.Canvas(packet, pagesize=letter) can.setFont("Helvetica", 9) # Writting the new line oknow = time.strftime("%a, %d %b %Y %H:%M") can.drawString(5, 2, url) can.drawString(605, 2, oknow) can.save() #move to the beginning of the StringIO buffer packet.seek(0) new_pdf = PdfFileReader(packet) # read your existing PDF existing_pdf = PdfFileReader(file(tem_pdf, "rb")) pages = existing_pdf.getNumPages() output = PdfFileWriter() # add the "watermark" (which is the new pdf) on the existing page for x in range(0,pages): page = existing_pdf.getPage(x) page.mergePage(new_pdf.getPage(0)) output.addPage(page) # finally, write "output" to a real file outputStream = file(final_file, "wb") output.write(outputStream) outputStream.close() print final_file, ''is ready.''


También puedes usar pdfkit :

import pdfkit pdfkit.from_url(''http://google.com'', ''out.pdf'')


aquí está el que funciona bien:

import sys from PyQt4.QtCore import * from PyQt4.QtGui import * from PyQt4.QtWebKit import * app = QApplication(sys.argv) web = QWebView() web.load(QUrl("http://www.yahoo.com")) printer = QPrinter() printer.setPageSize(QPrinter.A4) printer.setOutputFormat(QPrinter.PdfFormat) printer.setOutputFileName("fileOK.pdf") def convertIt(): web.print_(printer) print "Pdf generated" QApplication.exit() QObject.connect(web, SIGNAL("loadFinished(bool)"), convertIt) sys.exit(app.exec_())


WeasyPrint

pip install weasyprint python >>> pdf = weasyprint.HTML(''http://www.google.com'').write_pdf() >>> len(pdf) 92059 >>> file(''google.pdf'', ''w'').write(pdf)