PythonPDF: FileNotFoundError: [WinError 2] 系统找不到指定的文件
Posted
技术标签:
【中文标题】PythonPDF: FileNotFoundError: [WinError 2] 系统找不到指定的文件【英文标题】:PythonPDF: FileNotFoundError: [WinError 2] The system cannot find the file specified 【发布时间】:2021-09-03 03:37:37 【问题描述】:当我使用 PDFJinja 的示例填充现有 PDF 文件中的表单字段时,我收到以下错误跟踪。
代码片段:
dir_name = os.path.dirname("P:\\Project\\pdfjinja_services\\resources\\sample.pdf")
template_pdf_file = os.path.join(dir_name, 'sample.pdf')
template_pdf = PdfJinja(template_pdf_file, current_app.jinja_env)
print(type(template_pdf))
rendered_pdf = template_pdf(
'firstName': 'Faye',
'lastName': 'Valentine'
)
output_file = os.path.join(dir_name, 'output.pdf')
rendered_pdf.write(open(output_file, 'wb'))
错误:
Traceback (most recent call last):
File "P:\Professional\Python\CR\workspace\workspace-local\myplaybook\pdf_pdfjinja.py", line 10, in
rendered_pdf = template_pdf(
File "P:\Professional\Python\Softwares\python-3.9.6\lib\site-packages\pdfjinja.py", line 240, in call
filled = PdfFileReader(self.exec_pdftk(self.rendered))
File "P:\Professional\Python\Softwares\python-3.9.6\lib\site-packages\pdfjinja.py", line 212, in exec_pdftk
p = Popen(args, stdin=PIPE, stdout=PIPE, stderr=PIPE)
File "P:\Professional\Python\Softwares\python-3.9.6\lib\subprocess.py", line 951, in init
self._execute_child(args, executable, preexec_fn, close_fds,
File "P:\Professional\Python\Softwares\python-3.9.6\lib\subprocess.py", line 1420, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] The system cannot find the file specified
我正在使用 python-3.9.6 和 PDFJinja-1.1.0。 如果我缺少任何其他依赖项,请告诉我。
【问题讨论】:
请提供一个最小的独立示例来演示该问题。关键问题可能是调用p = Popen(args, stdin=PIPE, stdout=PIPE, stderr=PIPE)
中的args 是什么。我的猜测是您缺少二进制文件,或者它不在您的搜索路径中。
感谢您回复@AllanWind。当我调试时,我可以看到为属性 args 传递了以下值- ['pdftk', 'P:/Project/pdfjinja_services/resources\\sample.pdf', 'fill_form', '-', 'output', '-'、'dont_ask'、'扁平化']。上面的代码示例是我的 POC 取自 https://github.com/rammie/pdfjinja/blob/master/examples/example.py。
进一步分析,我好像没有pdftk工具。这是 pdfjinja 的一种依赖。我会尝试安装并验证。
我已经尝试安装pdftk 并进行了测试。但仍然出现同样的错误。
请修剪您的代码,以便更容易找到您的问题。请按照以下指南创建minimal reproducible example。
【参考方案1】:
您缺少一个二进制文件(每次更新 pdftk),或者该二进制文件不在您的搜索路径中。
【讨论】:
是的@Allan Wind。在环境路径中添加 pdftk 后,我可以毫无问题地执行上述代码。谢谢。以上是关于PythonPDF: FileNotFoundError: [WinError 2] 系统找不到指定的文件的主要内容,如果未能解决你的问题,请参考以下文章