2017-09-18 7 views
1

私はhtmlファイルをpythonでpdfに変換しようとしています。 htmlファイルにはJavaScriptチャートがあります。
最初はweasyprintとpdfkitモジュールを使用しましたが、モジュールがjavascriptをサポートしていないことがわかりました。
今私はwkhtmltopdfモジュールを使用しています。それは、javascriptを除いて、ほとんどのhtmlコードをpdfに変換します。 PythonでJavaScriptチャートを含むhtmlファイルをPDFに変換することは可能ですか?
または別のモジュールを使用する必要がありますか?
以下は、pdfファイルには表示されないJavaScriptコードです。JavaScriptチャートを含むhtmlファイルをPythonでPDFに変換することはできますか?

<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> 

wkhtmltopdfバージョンは0.12.4であり、コマンドはここ

$ wkhtmltopdf --javascript-delay 5000 test.html test.pdf 

答えて

1

ある以前のStackOverflowの質問の例です。 How to convert webpage into PDF by using Python

それはあなたが望ましい結果を得るためにpdfkitでiFrameを使用してみてください可能性がチャートを描画しない場合は、この例では、ライブラリpfdkit

import pdfkit 
pdfkit.from_url('http://google.com', 'out.pdf') 

を使用しています!

ここでは、使用例を示しますWeasyPrint まずweasyprintをインストールします。私は楽しいだから

pip install weasyprint 

そして、ここで

python 
>>> pdf = weasyprint.HTML('http://www.google.com').write_pdf() 
>>> len(pdf) 
92059 
>>> file('google.pdf', 'w').write(pdf) 

例を実行するには、第三の例です。 :)

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_()) 
+0

ありがとうSteven。実際にはウェブサイトはうまくレンダリングされますが、HTMLファイルのJavaScriptチャートがレンダリングされない理由はわかりません。 – BingbongKim

+1

$(function(){})を使ってみてください。ページが読み込まれるとレンダリングされますか?たぶん、それをロードする前にスクリプトを実行しているのでしょうか? –

+1

それはうまくいってうれしい! –

関連する問題