1

这是我在 python 中的代码

import pydf

pdf = pydf.generate_pdf('<h1>Empresa Jucla</h1>')

with open('test_doc.pdf', 'wb') as f:
    f.write(pdf)

并产生此错误:

C:\Users\Administrator\Envs\juppe\Scripts\python.exe C:/Users/Administrator/PycharmProjects/juppe/modulos_externos.py
Traceback (most recent call last):
  File "C:/Users/Administrator/PycharmProjects/juppe/modulos_externos.py", line 32, in <module>
    pdf = pydf.generate_pdf('<h1>Empresa Jucla</h1>')
  File "C:\Users\Administrator\Envs\juppe\lib\site-packages\pydf\wkhtmltopdf.py", line 145, in generate_pdf
    p = _execute_wk(*cmd_args, input=html.encode())
  File "C:\Users\Administrator\Envs\juppe\lib\site-packages\pydf\wkhtmltopdf.py", line 30, in _execute_wk
    return subprocess.run(wk_args, input=input, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  File "c:\users\administrator\appdata\local\programs\python\python38-32\lib\subprocess.py", line 489, in run
    with Popen(*popenargs, **kwargs) as process:
  File "c:\users\administrator\appdata\local\programs\python\python38-32\lib\subprocess.py", line 854, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "c:\users\administrator\appdata\local\programs\python\python38-32\lib\subprocess.py", line 1307, in _execute_child
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
OSError: [WinError 193] %1 is not a valid Win32 application

请帮助我使用 Windows 10 x64

4

2 回答 2

0

这里的问题是with open('test_doc.pdf', 'wb') as f: f.write(pdf) 在您的代码中, f 应该是参数。根据文档:

with open('test_doc.pdf', "wb") as f:
            pdf.write(f)

请注意这与写入 csv 有何不同,例如,您的语法是正确的。

于 2020-07-02T00:46:36.987 回答
0

刚刚遇到这个问题,我花了大部分时间在寻找解决方案,而实际上它很简单......

因此,当您访问pypi.org 的 python-pdf 页面时,您会立即从包开发人员那里获得以下信息:

“如果您在另一个操作系统或架构上,您的里程可能会有所不同,您可能需要提供自己的wkhtmltopdf二进制文件并通过设置环境变量将pydf指向它。”WKHTMLTOPDF_PATH

所以基本上,python-pdf 是为 Linux 准备的。

你需要做的是:安装 python-pdf 包后,你只需要访问它的目录,去 bin 并删除那里的文件(我的在这里:)C:\Users\Diogo Almeida\anaconda3\Lib\site-packages\pydf\bin

删除该文件后,只需转到wkhtmltopdf 下载页面并下载最适合您的操作系统的文件。

在任何你想要的地方安装exe,一旦完成,你只需要访问安装程序创建的目录并将文件剪切到名为“wkhtmltopdf”的bin文件夹中(这也是一个exe)并将其粘贴回C:\Users\Diogo Almeida\anaconda3\Lib\site-packages\pydf\bin.

转到您的 py 文件并再次运行代码:)

希望这也能解决您的问题!

于 2021-03-20T18:43:49.677 回答