本文介绍了将Ghost脚本中的PDF与Python的UNC路径列表合并的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用Ghost脚本通过组合来自UNC文件路径的单页PDF列表来构建多页PDF(在Python3.7中工作)。 以下是函数:
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 + "
")
args = [r"\someDirsubDirTToolsGhostscript_ToolsGS_Installgs9.54.0ingswin64c",
'-sDEVICE=pdfwrite',
'-dNOPAUSE',
"-sOUTPUTFILE=" + out_PDF,
pdfPathsAsStr
]
p = subprocess.Popen(args, stdout=subprocess.PIPE)
print("
Completed:
" + str(p.communicate()))
pdf_dir = r"\someDirsubDirTToolsGhostscript_ToolsGS_TestingIndividualPages"
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:
\someDirsubDirTToolsGhostscript_ToolsGS_TestingIndividualPagesPDF_1.pdf \someDirsubDirTToolsGhostscript_ToolsGS_TestingIndividualPagesPDF_2.pdf
Completed:
(b'GPL Ghostscript 9.54.0 (2021-03-30)
Copyright (C) 2021 Artifex Software, Inc. All rights reserved.
This software is supplied under the GNU AGPLv3 and comes with NO WARRANTY:
see the file COPYING for details.
Error: /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)
Operand stack:
Execution stack:
%interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push
Dictionary stack:
--dict:732/1123(ro)(G)-- --dict:0/20(G)-- --dict:75/200(L)--
Current allocation mode is local
Last OS error: No such file or directory
', None)
GPL Ghostscript 9.54.0: Unrecoverable error, exit code 1
我在Ghost脚本中寻找了一些关于UNC路径的帮助,但找不到太多帮助。我已经在函数内部尝试了pdfPathsAsStr
的几个变体,但没有成功。
我做错了什么?
推荐答案
以下命令外部为我运行没有问题。
gswin64c -sDEVICE=pdfwrite -o"\adventshareMerged.pdf" "\adventsharecover.pdf" "\adventsharePDF files in a folder.pdf"
显示远程Windows文件夹对于Ghost脚本输入或输出不是问题。
您的问题在于Python处理Windows路径的方式,可以通过颠倒文件夹名称以使Windows中只有服务器名称需要\前缀来最小化该问题。
gswin64c -sDEVICE=pdfwrite -o"\advent/share/Merged.pdf" "\advent/share/cover.pdf" "\advent/share/PDF files in a folder.pdf"
因此,在python中,需要时使用\\
作为服务器前缀,但使用/in路径使工作更轻松(是的,我知道这不是最佳实践,但生命周期很短,而且使用键盘的RSI较少)。
要测试cmd从python获得的内容,只需将cmd /k echo "\\blah/blah"
作为可执行命令运行
这篇关于将Ghost脚本中的PDF与Python的UNC路径列表合并的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!