簡體   English   中英

使用Python將HTML轉換為PDF

[英]Convert HTML into PDF using Python

我試圖將HTML轉換為Django中的PDF文檔並且沒有成功。

我嘗試過使用wkhtmltopdf 0.9.9,但是Apache拋出了wkhtmltopdf無法連接到服務器的錯誤。 當我直接使用wkhtmltopdf時,它運行得很好並將HTML轉換為PDF文檔。

我也嘗試使用unoconv,但渲染的PDF文件沒有應用任何CSS。 我也嘗試過使用xhtml2pdf。 我再次面臨同樣的問題; 渲染的PDF文件沒有應用任何CSS樣式。 我已經花了今天和昨晚的大部分時間試圖解決這個問題,我仍然沒有更接近解決問題。

如果您需要更多信息,請與我們聯系

為Django配置Pisa應該不會太難

網上有幾個例子向您展示如何操作並解釋如何鏈接到模板中的外部資源:

在你的情況下,你應該嘗試在第一篇博文中提到的鏈接回調函數:

def fetch_resources(uri, rel):
    """
    Callback to allow pisa/reportlab to retrieve Images,Stylesheets, etc.
    `uri` is the href attribute from the html link element.
    `rel` gives a relative path, but it's not used here.

    """
    path = os.path.join(settings.MEDIA_ROOT, uri.replace(settings.MEDIA_URL, ""))
    return path

對於較新的Django-Version,您可能應該使用STATIC_ROOT而不是MEDIA_ROOT

然后在render-method中相應地使用fetch resources

pdf = pisa.pisaDocument(StringIO.StringIO(
        html.encode("UTF-8")), 
        result, 
        link_callback=fetch_resources,
        encoding="utf-8")

我建議你使用pisa,pypdf和html5lib組合,它對我有用。

一個可能但不那么優雅的解決方案是運行一個小腳本,通過無頭瀏覽器組件(Linux上的webkit / xvfb)呈現html,然后將其保存為pdf。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM