Python使用xhtml2pdf将网页打印为PDF

2 投票
2 回答
7799 浏览
提问于 2025-04-18 04:41

我正在尝试使用xhtml2pdf将网页打印成本地的PDF文件。下面有一个例子。

这个例子可以运行,并且没有报错。但是它并没有把整个网页转换成PDF,而只是写了一句话。在这个例子中,只有'http://www.yahoo.com/'被写入了PDF文件。

我该如何才能把整个网页转换成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)

2 个回答

3

感谢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)
3

xhmlt2pdf并不是所有网站都能用,比如它在yahoo.com上就不行。这里面的问题是,你没有把实际的HTML文件给pisa,而是给了一个网址。你需要先获取HTML内容,比如可以用urllib2来做到这一点:

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

这样就可以正常工作了。这是一个非常简单的HTML示例。

撰写回答