Html súboru PDF v jazyku Python bez wkhtmltopdf

0

Otázka

Mám Plotly Kombinované(karty) Dash Aplikácie. Ja by som chcel previesť na PDF súbor. Ja viem, že nie je dash_snapshot_engine modul, ktorý nie je zadarmo. Preto som hľadal bezplatná alternatíva. Ako moje Dash žiadosť bude spustiteľný, nemôžem používať externé softvéru, ako sú napríklad wkhtmltopdfMôžem použiť len Python len knižnice.

Má niekto nejaké návrhy, ako previesť html súbor pdf s úložísk?

Vďaka vopred!

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

Najlepšiu odpoveď

0

Môžete pridať wkhtmltopdf na svoje exe pomocou 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)

Budovanie exe (wkhtmltopdf a váš skript v rovnakom adresári):

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

Ďakujem za túto myšlienku. Je to tiež práca s cx_freeze? Môžem pridať .exe súbory rovnakým spôsobom?
abc

@abc: nikdy som sa používa cx_freeze, len PyInstaller, nuitka alebo py2exe (pre Python 2.x). Mohlo by byť užitočné: stackoverflow.com/questions/2553886/...
Maurice Meyer

Je možné, že wkhtmltopdf používa webové služby previesť html do pdf? - V tomto prípade to nie je možnosť, ako prevodníka by mal používať "offline" metódy...
abc

žiadne wkhtmltpdf robí všetko spracovanie lokálne sám.
Ryan

V iných jazykoch

Táto stránka je v iných jazykoch

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