将受保护的(安全)pdf 保存为可编辑(普通)pdf?

将受保护的(安全)pdf 保存为可编辑(普通)pdf?

每天,我都会编写一个脚本,从网站上抓取数据,并将每日报表下载为受保护的 PDF。这意味着这些 PDF 可以查看,但没有密码则无法编辑。如果您愿意,它们是只读的。我收到过许多员工的请求,他们希望编辑这些 PDF,而无需打开它们、单击另存为,然后将 PDF 作为新的可编辑文件重新打印到 PDF 打印机。

有没有解决方案可以将这些受保护的 PDF 批量转换为可编辑的 PDF?我在考虑某种“热”文件夹,我可以将受保护的 PDF 放入其中,然后它们会自动转换并重新保存。

答案1

GhostScript 可以轻松实现这一点。你可以在这里下载:http://ghostscript.com/download/gsdnld.html 在这个例子中,我使用的是 32 位 Windows 版本。

以下是两个文件。一个是 powershell 脚本,一个是批处理文件。批处理文件将启动 powershell 脚本并绕过任何执行策略设置,以便它可以从任何没有 powershell 配置的机器上运行。powershell 脚本利用 ghostscript 重新打印安全 PDF 并将其保存为特定目录中的常规 PDF。

(位置:Q:\PDFStoPDF\convertPDF.bat)

cd "q:\PDFStoPDF\gs"
powershell.exe -noexit -ExecutionPolicy Bypass -File "q:\PDFStoPDF\gs\pdfconvert.ps1"

首先,批处理将目录更改为 GhostScript EXE 和下面的 powershell 脚本的位置。然后,它绕过执行策略并运行 powershell 脚本。

电源外壳(位置:Q:\PDFStoPDF\gs\pdfConvert.ps1)

$GhostScript = "q:\PDFStoPDF\gs\gs9.20\bin\gswin32c.exe"

Get-ChildItem "Q:\PDFStoPDF\*.pdf" | Where {
    $_.BaseName -NotMatch "Conv"
} |  ForEach-Object {
    $InputFile = $_.FullName
    $OutputFile = "Q:\PDFStoPDF\{0} (Conv).pdf" -F $_.BaseName

    & "$GhostScript" -dPDFA -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile="$OutputFile" "$InputFile"
}

powershell 脚本首先设置 GhostScript exe 的路径gswin32c.exe。接下来,我们告诉它从“Q:\PDFStiPDF\”文件夹中获取所有文件名不按顺序包含字母“conv”的 PDF。继续沿着管道,我们告诉 ghostscript 输入文件将是当前文件名,输出文件将位于同一目录中,但只需在文件名末尾添加 CONV 即可。

脚本之前: 问:\PDFStoPDF\myPDF01.pdf

脚本之后: 问:\PDFStoPDF\myPDF01Conv.pdf

-NotMatch 开关允许已经转换的文件保持不变。

接下来,脚本使用 PDF 打印机打印并保存 PDFpdfwrite

因此,要实现此功能,请将文件拖到 Q:\PDFStoPDF\ 目录中,然后单击其中的 .bat 文件。它将获取 PDF 并将其重新保存为同一目录中的可编辑 PDF。

相关内容