Python с использованием xhtml2pdf для печати веб-страницы в PDF

Я пытаюсь использовать xhtml2pdf для печати веб-страницы в PDF-файлы локального диска. Ниже приведен пример.

Он работает и не возвращает ошибку. Однако он не конвертирует веб-страницу, а только предложение. в этом случае в файл PDF записывается только «http://www.yahoo.com/. .

Как я могу преобразовать веб-страницу в PDF?

from xhtml2pdf import pisa

sourceHtml = 'http://www.yahoo.com/'
outputFilename = "test.pdf"

def convertHtmlToPdf(sourceHtml, outputFilename):
    resultFile = open(outputFilename, "w+b")
    pisaStatus = pisa.CreatePDF(sourceHtml,resultFile)
    resultFile.close()
    return pisaStatus.err

if __name__=="__main__":
    pisa.showLogging()
    convertHtmlToPdf(sourceHtml, outputFilename)

person Mark K    schedule 29.04.2014    source источник


Ответы (2)


xhmlt2pdf не будет работать со всеми веб-сайтами, например, не будет работать с yahoo.com. Но причина, по которой он здесь не работает, заключается в том, что вы не предоставляете фактический файл HTML для pisa, а предоставляете URL-адрес, который вы хотите сначала получить HTML, например, используя urllib2:

url=urllib2.urlopen('http://sheldonbrown.com/web_sample1.html')
srchtml=url.read()
pisa.showLogging()
convertHtmlToPdf(srchtml, outputFilename)

И это сработает. Это очень простой образец HTML.

person CT Zhu    schedule 29.04.2014
comment
спасибо CT за отличный ответ. Я выберу твой. :) - person Mark K; 29.04.2014

благодаря помощи CT Zhu. просто откладываю работоспособный, для справки:

from xhtml2pdf import pisa
import urllib2

url=urllib2.urlopen('http://sheldonbrown.com/web_sample1.html')
sourceHtml=url.read()
pisa.showLogging()

outputFilename = "test555.pdf"

def convertHtmlToPdf(sourceHtml, outputFilename):
    resultFile = open(outputFilename, "w+b")
    pisaStatus = pisa.CreatePDF(sourceHtml,resultFile)
    resultFile.close()
    return pisaStatus.err

if __name__=="__main__":
    pisa.showLogging()
    convertHtmlToPdf(sourceHtml, outputFilename)
person Mark K    schedule 29.04.2014