Python使用xhtml2pdf将网页打印成PDF

时间:2014-04-29 04:43:31

标签: python url pdf pisa xhtml2pdf

我正在尝试使用xhtml2pdf将网页打印到本地磁盘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 个答案:

答案 0 :(得分:3)

xhmlt2pdf无法与所有网站一起使用,因为它不适用于yahoo.com。但是它不能在这里工作的原因是你没有向pisa提供实际的HTML文件,而是提供URL,你想首先获取HTML,例如使用urllib2

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

它会起作用。这是一个非常简单的HTML示例。

答案 1 :(得分:3)

感谢CT朱的帮助。只是放下可行的,供参考:

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)