Bin*_*Kim 4 html javascript python pdf
我正在尝试在 python 中将 html 文件转换为 pdf 。html 文件有一个 javascript 图表。
起初,我使用了weasyprint和pdfkit模块,但我发现这些模块不支持javascript。
所以现在我使用 wkhtmltopdf 模块。它将大多数 html 代码转换为 pdf,除了 javascript。是否可以在 python 中将包含 JavaScript 图表的 html 文件转换为 PDF?
或者我应该使用另一个模块?
下面是 pdf 文件中未出现的 JavaScript 代码。
<script type="text/javascript">
FusionCharts.ready(function(){
var fusioncharts = new FusionCharts({
type: 'hlineargauge',
renderAt: 'chart_container',
width: '350px',
height: '170px',
dataFormat: 'json',
dataSource: {
"chart": {
"theme": "fint",
"caption": "Chart A",
"lowerLimit": "0",
"upperLimit": "20",
"chartBottomMargin": "40",
"valueFontSize": "11",
"valueFontBold": "z0"
},
"colorRange": {
"color": [{
"minValue": "0",
"maxValue": "11.5",
"label": "Low",
"code" : "#FDB881",
}, {
"minValue": "11.5",
"maxValue": "12.5",
"label": "Typical",
"code" : "#F18B36",
}, {
"minValue": "12.5",
"maxValue": "20",
"label": "High",
"code" : "#D2660D",
}]
},
"pointers": {
"pointer": [{
"value": "8",
'borderColor':'#333333',
'borderThickness':'3',
'borderAlpha':'100',
'bgColor':'#FF0000'
}]
},
}
}
);
fusioncharts.render();
});
</script>
Run Code Online (Sandbox Code Playgroud)
wkhtmltopdf 版本是 0.12.4,命令是
$ wkhtmltopdf --javascript-delay 5000 test.html test.pdf
Run Code Online (Sandbox Code Playgroud)
小智 5
以下是之前 StackOverflow 问题中的示例。 如何使用Python将网页转换为PDF
此示例使用库pfdkit
import pdfkit
pdfkit.from_url('http://google.com', 'out.pdf')
Run Code Online (Sandbox Code Playgroud)
如果它没有渲染图表,您可以尝试使用带有 pdfkit 的 iFrame 来获得所需的结果!
这是使用WeasyPrint 的示例 首先,安装 weasyprint。
pip install weasyprint
Run Code Online (Sandbox Code Playgroud)
然后运行示例
python
>>> pdf = weasyprint.HTML('http://www.google.com').write_pdf()
>>> len(pdf)
92059
>>> file('google.pdf', 'w').write(pdf)
Run Code Online (Sandbox Code Playgroud)
这是第三个例子,因为我很有趣。:)
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_())
Run Code Online (Sandbox Code Playgroud)