【问题标题】:Try to writting and open PDF in Python without sucess尝试在 Python 中编写和打开 PDF,但没有成功
【发布时间】:2020-10-22 12:18:48
【问题描述】:

这是我在 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

【问题讨论】:

    标签: python-3.x windows helper pypdf write


    【解决方案1】:

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

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

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

    【讨论】:

    • 它不起作用...使用代码 ( pdf = pydf.generate_pdf('

      Empresa Jucla

      ') 和 open('test_doc.pdf', "wb") as f: pdf.write(f) )
    • C:\Users\Administrator\Envs\juppe\Scripts\python.exe C:/Users/Administrator/PycharmProjects/juppe/modulos_externos.py Traceback(最近一次调用最后):文件“C: /Users/Administrator/PycharmProjects/juppe/modulos_externos.py”,第 32 行,在 pdf = pydf.generate_pdf('

      Empresa Jucla

      ') 文件“C:\Users\Administrator\Envs\ juppe\lib\site-packages\pydf\wkhtmltopdf.py",第 145 行,在 generate_pdf p = _execute_wk(*cmd_args, input=html.encode()) ......同样的错误......
    • 另外,尝试使用 pypdf2
    【解决方案2】:

    刚刚遇到这个问题,我一天中的大部分时间都在四处寻找解决方案,其实它很简单......

    因此,当您访问pypi.org's python-pdf page 时,您会立即从包开发者那里获得以下信息:

    “如果您使用其他操作系统或架构,您的里程可能会有所不同,您可能需要提供自己的 wkhtmltopdf 二进制文件并通过设置 @ 指向 pydf 987654324@环境变量。”

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      • 2017-12-13
      • 1970-01-01
      • 1970-01-01
      • 2013-04-25
      相关资源
      最近更新 更多