Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法写入目标pdfkit python 总结_Python_Wkhtmltopdf_Cx Freeze_Pdfkit - Fatal编程技术网

无法写入目标pdfkit python 总结

无法写入目标pdfkit python 总结,python,wkhtmltopdf,cx-freeze,pdfkit,Python,Wkhtmltopdf,Cx Freeze,Pdfkit,我正在尝试使用包(版本0.6.1)和(版本0.12.6.0)将HTML转换为PDF 我可以使用该脚本,直到我尝试使用将其转换为.exe文件。然后它失败了。使用可执行文件,我得到以下错误: 错误 相关代码段 pdfConf=pdfkit.configuration(wkhtmltopdf=os.path.join( self._principalPath,“docs/web/PDF/wkhtmltopdf.exe”)) pdfOpti={ “窗口状态”:“打印”, “新闻部”:“90”, #“安静

我正在尝试使用包(版本
0.6.1
)和(版本
0.12.6.0
)将HTML转换为PDF

我可以使用该脚本,直到我尝试使用将其转换为
.exe
文件。然后它失败了。使用可执行文件,我得到以下错误:

错误 相关代码段
pdfConf=pdfkit.configuration(wkhtmltopdf=os.path.join(
self._principalPath,“docs/web/PDF/wkhtmltopdf.exe”))
pdfOpti={
“窗口状态”:“打印”,
“新闻部”:“90”,
#“安静”:“,
“页面大小”:“A4”,
“页脚html”:f“{url}/footer.html”
}
尝试:
如果pdfkit.from_url,则返回“E”(
url=f“{url}/document.html”,
输出路径=输出路径,
配置=pdfConf,
选项=pdfOpti)否则为“F”
除:
返回“F”
其他 我在互联网上搜索,发现问题可能是目标路径。但我使用的是完整路径:C:\Users\Diego\Desktop\JAA.pdf

设置文件
您所做的诊断是正确的(毕竟,
错误:无法写入目标
非常简单)

如果您可以创建输出文件,但创建的EXE文件不能-我们知道它不能-那么这意味着

  • 当EXE运行时,实际的目标路径实际上并不存在。您认为您正在向给定路径写入,但不知何故EXE试图在其他地方写入
  • EXE没有创建文件的权限
这可能是由几个原因造成的。出于安全原因,EXE文件可能会输出到给定的目录中,因此当您请求“C:\somefile”时,它实际上会尝试写入“%TEMP%/C:/somefile”。或者可能拒绝使用完整路径

或者您可能需要使用Unix语法(“C:/Users/…”而不是“C:\Users…”来编写文件,因为例如“\Diego”被翻译为“0x0Diego”(“带回车前缀的iego”)


因此,您应该在EXE文件中插入一些代码,以浏览EXE看到的文件系统(可能与您看到的文件系统不同!),和/或尝试写入不同的路径,可能确实是%TEMP%(权限应该足够)。

如果您需要一些帮助,请至少添加导致错误的代码的相关部分(例如,方法
exportarHTMLaPDF
)对你的问题。是的,这是我的错,我已经补充了,抱歉地看着
pdfkit
Python包装器的源代码,它使用
子进程
,当使用
子进程
cx\u Freeze
时,有一些已知的问题,请参见例如。你能分享你的安装脚本吗?你是否尝试过设置
base=Nonede>在
Executable
call?@jpeg中,我尝试使用
base=None
执行此操作,但不起作用谢谢您的回答,正如我在问题中提到的,问题是,当我运行代码而不在.EXE中转换时,wkhtmltopdf工作正常,但当我将其转换为.EXE时,wkhtmltopdf不起作用,即使我尝试打印l定位输出和程序以确定路径是否是问题所在,但我得到了指定的确切路径*C:\Users\Diego\Desktop\JAA.pdf*(输出)*C:\Users\Diego\program\*(程序路径)。好的。下一步是尝试在那里创建一个文件,使用该名称,而不使用wkhtmltopdf-只需打开文件,编写“hello world”然后关闭。之后,我会尝试使用PROCMON检查到底发生了什么,以及实际的错误原因(权限等)。其他可能性:写入文件“ciccio.pdf”(没有任何路径)。如果确实有效,请尝试在ciccio.pdf文件所在的位置创建一个目录,称之为“hello”,然后尝试创建“hello\world1.pdf”并“hello/world2.pdf”。如果其中一个有效,则支持目录;然后一次修改一个组件的路径,直到您发现哪个组件造成了问题。我刚刚尝试了您所说的内容,但仍然不起作用,当时我试图创建“hello world”和“ciccio.pdf”"文件我得到了完全相同的错误好的,所以问题是程序无法创建文件。问题是:为什么?现在尝试执行一个程序,告诉你程序认为它是哪个有效用户。一个快速测试也是以管理员身份运行程序。如果它是这样工作的,那么你需要告诉
cx\u freeze
请求许可证或者一开始就不要放弃它们。
Exception in thread Thread-109:
Traceback (most recent call last):
  File "C:\Users\Diego\AppData\Local\Programs\Python\Python38-32\lib\threading.py", line 932, in _bootstrap_inner
    self.run()
  File "C:\Users\Diego\AppData\Local\Programs\Python\Python38-32\lib\threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\Diego\Pictures\Zona Python\GuideMath\src\interfaz\VentanaExportar.py", line 132, in __exportarHTMLaPDF
    self.__resultado = self.__ctrl.exportarHTMLaPDF(
  File "C:\Users\Diego\Pictures\Zona Python\GuideMath\src\controlador\Controlador.py", line 142, in exportarHTMLaPDF
    return "E" if pdfkit.from_url(
  File "C:\Users\Diego\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pdfkit\api.py", line 26, in from_url
    return r.to_pdf(output_path)
  File "C:\Users\Diego\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pdfkit\pdfkit.py", line 156, in to_pdf
    raise IOError('wkhtmltopdf reported an error:\n' + stderr)
OSError: wkhtmltopdf reported an error:
Loading pages (1/6)
Warning: Javascript alert: Hola
QPainter::begin(): Returned false============================] 100%
Error: Unable to write to destination
Exit with code 1, due to unknown error.
import sys
from cx_Freeze import setup, Executable

build_exe_options = {"packages": ["ctypes", "os", "wx", "json", "threading", "pdfkit"],
    "excludes": ["tkinter"]}

base = None
if sys.platform == "win32":
    base = "Win32GUI"

setup(name="App",
      version="0.1",
      description="",
      options={"build_exe": build_exe_options},
      executables=[Executable("main.py", base=base, icon="app.ico")])