[PYTHON] 파이썬을 사용하여 웹 페이지를 PDF로 변환하는 방법
PYTHON파이썬을 사용하여 웹 페이지를 PDF로 변환하는 방법
파이썬을 사용하여 웹 페이지를 로컬 파일 PDF로 인쇄하는 솔루션을 찾고있었습니다. 좋은 해결책 중 하나는 https://bharatikunal.wordpress.com/2010/01/에있는 Qt를 사용하는 것입니다.
그것은 'ImportError : No module PyQt4.QtCore'와 'ImportError : No module PyQt4.QtCore'와 같은 오류 메시지를 주었기 때문에 PyQt4 설치에 문제가있어서 처음에는 작동하지 않았습니다.
PyQt4가 제대로 설치되지 않았기 때문입니다. 필자는 C : \ Python27 \ Lib에 라이브러리를 가지고 있었지만 PyQt4에는 라이브러리가 없었습니다.
실제로 http://www.riverbankcomputing.com/software/pyqt/download (사용중인 올바른 Python 버전을 기억하십시오)에서 다운로드하고 C : \ Python27 (제 경우)에 설치하기 만하면됩니다. 그게 전부 야.
이제 스크립트가 잘 돌아가므로 공유하고 싶습니다. Qprinter 사용에 대한 추가 옵션은 http://qt-project.org/doc/qt-4.8/qprinter.html#Orientation-enum을 참조하십시오.
해결법
-
==============================
1.또한 pdfkit을 사용할 수 있습니다.
또한 pdfkit을 사용할 수 있습니다.
import pdfkit pdfkit.from_url('http://google.com', 'out.pdf')
-
==============================
2.WeasyPrint
WeasyPrint
pip install weasyprint python >>> pdf = weasyprint.HTML('http://www.google.com').write_pdf() >>> len(pdf) 92059 >>> file('google.pdf', 'w').write(pdf)
-
==============================
3.아래의 게시물 덕분에, 그리고 얼마나 많은 페이지를 가지고 있건 상관없이 생성 된 PDF에 인쇄 할 웹 페이지 링크 주소와 현재 시간을 추가 할 수있었습니다.
아래의 게시물 덕분에, 그리고 얼마나 많은 페이지를 가지고 있건 상관없이 생성 된 PDF에 인쇄 할 웹 페이지 링크 주소와 현재 시간을 추가 할 수있었습니다.
파이썬을 사용하여 기존 PDF에 텍스트 추가
https://github.com/disflux/django-mtr/blob/master/pdfgen/doc_overlay.py
아래의 스크립트를 공유하려면 :
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.'
-
==============================
4.다음은 잘 작동하는 것입니다.
다음은 잘 작동하는 것입니다.
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_())
-
==============================
5.다음은 QT를 사용하는 간단한 솔루션입니다. 나는 이것을 StackOverFlow에 대한 다른 질문에 대한 답의 일부로 발견했다. 나는 그것을 Windows에서 테스트했다.
다음은 QT를 사용하는 간단한 솔루션입니다. 나는 이것을 StackOverFlow에 대한 다른 질문에 대한 답의 일부로 발견했다. 나는 그것을 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!"
from https://stackoverflow.com/questions/23359083/how-to-convert-webpage-into-pdf-by-using-python by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 이전 csv 파일에 새 행 추가 python (0) | 2018.10.06 |
---|---|
[PYTHON] 사전보기 객체 란 무엇입니까? (0) | 2018.10.06 |
[PYTHON] 파이썬 MySQLDB IN 절에서 사용할리스트를 imploding하기 (0) | 2018.10.06 |
[PYTHON] 다른 문자열의 단어 목록 확인 [duplicate] (0) | 2018.10.06 |
[PYTHON] 파일이 비어 있는지 확인하는 방법? (0) | 2018.10.06 |