【发布时间】:2021-10-15 18:08:01
【问题描述】:
我正在尝试使用 Ghostscript 通过组合来自其 UNC 文件路径的单页 PDF 列表(在 Python 3.7 中工作)来构建多页 PDF。 这是函数:
import subprocess
import os
def ghostscript_merge_pdfs(in_PDF_list, out_PDF):
"""some doc string"""
# pdfPathsAsStr = '"' + ' "'.join(f'{pdf}"' for pdf in in_PDF_list)
pdfPathsAsStr = ' '.join(pdf for pdf in in_PDF_list)
print("The 'pdfPathsAsStr' variable is:")
print(pdfPathsAsStr + "\n")
args = [r"\\someDir\subDir\T\Tools\Ghostscript_Tools\GS_Install\gs9.54.0\bin\gswin64c",
'-sDEVICE=pdfwrite',
'-dNOPAUSE',
"-sOUTPUTFILE=" + out_PDF,
pdfPathsAsStr
]
p = subprocess.Popen(args, stdout=subprocess.PIPE)
print("\nCompleted: \n" + str(p.communicate()))
pdf_dir = r"\\someDir\subDir\T\Tools\Ghostscript_Tools\GS_Testing\IndividualPages"
out_pdf_path = os.path.join(pdf_dir, "Combo_PDF.pdf")
pdfs_list = [os.path.join(pdf_dir, "PDF_1.pdf"), os.path.join(pdf_dir, "PDF_2.pdf")]
ghostscript_merge_pdfs(pdfs_list, out_pdf_path)
脚本输出以下内容(请注意,pdfPathsAsStr 中的斜线不重复):
The 'pdfPathsAsStr' variable is:
\\someDir\subDir\T\Tools\Ghostscript_Tools\GS_Testing\IndividualPages\PDF_1.pdf \\someDir\subDir\T\Tools\Ghostscript_Tools\GS_Testing\IndividualPages\PDF_2.pdf
Completed:
(b'GPL Ghostscript 9.54.0 (2021-03-30)\nCopyright (C) 2021 Artifex Software, Inc. All rights reserved.\nThis software is supplied under the GNU AGPLv3 and comes with NO WARRANTY:\nsee the file COPYING for details.\nError: /undefinedfilename in (\\\\\\\\someDir\\\\subDir\\\\T\\\\Tools\\\\Ghostscript_Tools\\\\GS_Testing\\\\IndividualPages\\\\PDF_1.pdf \\\\\\\\someDir\\\\subDir\\\\T\\\\Tools\\\\Ghostscript_Tools\\\\GS_Testing\\\\IndividualPages\\\\PDF_2.pdf)\nOperand stack:\n\nExecution stack:\n %interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push\nDictionary stack:\n --dict:732/1123(ro)(G)-- --dict:0/20(G)-- --dict:75/200(L)--\nCurrent allocation mode is local\nLast OS error: No such file or directory\n', None)
GPL Ghostscript 9.54.0: Unrecoverable error, exit code 1
我在 Ghostscript 中寻找了一些关于 UNC 路径的帮助,但找不到太多帮助。我在函数内部尝试了pdfPathsAsStr 的几种变体,但没有成功。
我做错了什么?
【问题讨论】:
-
查看Ghostscript错误信息; (\\\\\\\\someDir\\\\subDir....) 中未定义的文件名。在那里的某个地方,你显然将反斜杠翻了两番,你需要找出发生在哪里。对我来说最可能的罪魁祸首是 os.path.join 但实际上,您应该在每一步打印出字符串以找出答案。这不是 PostScript 或 Ghostscript 问题。
-
感谢@KenS,可以肯定的是,是否应该传递网络文件路径,例如“\\someDir\subDir\T\Tools\Ghostscript_Tools\GS_Testing\IndividualPages\PDF_1.pdf”?
-
我添加了一些打印语句,并将它们的输出包含在上面。 @KenS,您确定这不是 Ghostscript 问题吗?提前致谢
-
是的,我敢肯定,Ghostscript 不会添加到它提供的路径中。如果它说你那里有多个反斜杠,那么我会相信它。正如 K J 下面所说,我总是在 Windows 上使用 Ghostscript 使用正斜杠;它对 '/' 作为路径分隔符非常满意,它适用于大多数平台并避免与转义混淆。至于网络路径,好吧 GS 只是使用 win32 API,所以如果你的网络路径适用于 Windows 应该没问题。
标签: python python-3.7