Soubor Html do formátu PDF v Pythonu bez wkhtmltopdf

0

Otázka

Mám Plotly Vícestránkové(tabs), Dash Aplikace. Chtěl bych je převést na PDF soubor. Vím, že tam je dash_snapshot_engine modul, který není zdarma. Proto hledám free alternativu. Jako můj Dash aplikace bude spustitelná, nemůžu použít externí software, jako je wkhtmltopdfMohu jen používat pouze Python knihoven.

Má někdo nějaké návrhy na to, jak převést html soubor pdf s Python knihovny?

Díky předem!

html pdf plotly-dash python
2021-11-22 09:53:01
1

Nejlepší odpověď

0

Můžete přidat wkhtmltopdf na váš exe pomocí PyInstaller:

import subprocess
import sys

htmlPath = 'C:/temp/test.html'
pdfPath = 'C:/temp/test_through_exe.pdf'

if getattr(sys, 'frozen', False):
    # Change wkhtmltopdf path for exe!
    wkPath = os.path.join(sys._MEIPASS, "wkhtmltopdf.exe")
else:
    wkPath = 'C:/.../Downloads/wkhtmltopdf.exe'

with open(htmlPath, 'w') as f:
    f.write('<html><body><h1>%s</h1></body></html>' % sys.version)

cmd = '%s %s %s' % (wkPath, htmlPath, pdfPath)
print(cmd)

proc = subprocess.Popen(cmd, stderr=subprocess.PIPE, stdout=subprocess.PIPE, shell=True)
stdout, stderr = proc.communicate()

print(proc.returncode, stdout)
print(proc.returncode, stderr)

Budování exe (wkhtmltopdf a skriptu ve stejném adresáři):

PyInstaller --onefile --add-data ./wkhtmltopdf.exe;. test.py

Z:

C:\Users\xxx\AppData\Local\Temp\_MEI33842\wkhtmltopdf.exe C:/temp/test.html C:/temp/test_through_exe.pdf
0 b''
0 b'Loading pages (1/6)\r\n[>                                                           ] 0%\r[======>
     ] 10%\r[==============================>                             ] 50%\r[============================================================] 100%\rCounting pages (2/6)                                               \r\n[============================================================] Object 1 of 1\rResolving links (4/6)                                                       \r\n[============================================================] Object 1 of 1\rLoading headers and footers (5/6)                                           \r\nPrinting pages (6/6)\r\n[>
                     ] Preparing\r[============================================================] Page 1 of 1\rDone
                                  \r\n'

enter image description here

2021-11-22 11:18:13

Děkuji za tento nápad. Je to také práce s cx_freeze? Mohu přidat .exe soubory stejným způsobem?
abc

@abc: nikdy jsem nepoužil cx_freezejen PyInstaller, nuitka nebo py2exe (pro Python 2.x). By mohlo být užitečné: stackoverflow.com/questions/2553886/...
Maurice Meyer

Je možné, že wkhtmltopdf používá webovou službu pro převod html do pdf? - V tomto případě není možnost, jak converter měli použít "offline" metody...
abc

ne wkhtmltpdf dělá veškeré zpracování lokálně sám.
Ryan

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................