将Ghost脚本中的PDF与Python的UNC路径列表合并

Merge PDFs in Ghostscript with Python list of UNC Paths(将Ghost脚本中的PDF与Python的UNC路径列表合并)
本文介绍了将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路径列表合并的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Leetcode 234: Palindrome LinkedList(Leetcode 234:回文链接列表)
How do I read an Excel file directly from Dropbox#39;s API using pandas.read_excel()?(如何使用PANDAS.READ_EXCEL()直接从Dropbox的API读取Excel文件?)
subprocess.Popen tries to write to nonexistent pipe(子进程。打开尝试写入不存在的管道)
I want to realize Popen-code from Windows to Linux:(我想实现从Windows到Linux的POpen-code:)
Reading stdout from a subprocess in real time(实时读取子进程中的标准输出)
How to call type safely on a random file in Python?(如何在Python中安全地调用随机文件上的类型?)