我有无数可编辑的 PDF 文件。我想通过打印使它们不可编辑到PDF。如何在 Windows 命令行上执行此操作?
我的最终目标是使 PDF 不可编辑,并大规模地做到这一点。我发现打印为 PDF 确实会使其不可编辑,但我愿意接受其他选择。
答案1
由于我支持 SumatraPDF,因此使用 SumatraPDF 便携式文件通过 Microsoft PDF 重新生成非常容易,并且必须解释为什么它可能不是您所期望的或真正需要的。
将 PDF 打印为基于图像的 PDF 会使它们变得非常臃肿,因此需要进行压缩。这种压缩会导致质量下降,渲染速度变慢。
PDF 的设计目标是以更细的线矢量的形式快速绘制,而不是逐点绘制。
一旦转换为图像,您就无法恢复,除非通过自动 OCR 运行。实际上,现在这非常适用于替换那些臃肿的图像,因此可以删除它们以获得更快的读取/可编辑文件。
第二个问题是,只要格式固定为横向或纵向,Microsoft Print to PDF 就可以无人值守运行。因此,对于包含横向或纵向两种页面大小的文件来说,这通常不太适用。
其他人建议你使用设置来保护文件使用,那就算了吧。大多数 PDF 查看器都是表单和注释的编辑器,因此要添加到 PDF 中,需要取消保护,Adobe 会管理这方面,但大多数其他查看器只是忽略了这种管理需求。
答案2
您可以使用 Adobe Acrobat Pro 打印为 PDF。Adobe Acrobat Pro 还允许您执行批处理,因此您可以批量打印为 PDF。
看https://forums.adobe.com/thread/2540164(镜子) 更多细节。
免责声明:在我撰写这篇文章时(2019-06-01),我在 Adobe 工作。
答案3
为了使 PDF 不可编辑,必须使用 PDF 编辑器对其进行加密;即使这样,如果将 PDF 打印为 PDF,加密和/或其数字签名也不会随之而来(在保护时可以限制打印,但这通常会产生比解决的问题更多的问题)
- 这在商业交易中很常见,为了防止这种情况发生,PDF(无论是否安全)都会附加数字签名,以验证它是未经修改的原件
如果问题是想要使本地存储的 PDF 不可编辑,则可以使用 ACL 来限制用户修改文件本身的能力:
- 图形用户界面(GUI):
- 特性→安全→先进的
- 删除用户调整权限
- 添加→选择校长→输入要选择的对象名称[用户/组]
- 选择读取并执行→ 确定 → 确定
Cmd
:::# Set PDF file or directory variable: Set PDF="%UserProfile%\Path\to\PDF" ::# Remove inheritance: Icacls %PDF% /c /t /Inheritance:d ::# Remove all users, including Owner: ::# If file/directory is outside of %UserProfile%: TakeOwn /F %PDF% Icacls %PDF% /c /t /Remove:g "Authenticated Users" BUILTIN\Administrators BUILTIN Everyone System %UserName% Users ::# Set Read & execute permissions for User: Icacls %PDF% /c /t /Grant:r %UserName%:RX ::# Verify: Icacls %PDF% ::# Remove Variable: set "PDF="
PowerShell
:# Set PDF file or directory variable: New-Variable -Name Key -Value "$env:UserProfile\path\to\PDF" # Remove Inheritance: Icacls $PDF /c /t /Inheritance:d # Remove all users, including Owner: # If file/directory is outside of $env:UserProfile: TakeOwn /F $PDF Icacls $PDF /c /t /Remove:g "Authenticated Users" BUILTIN\Administrators BUILTIN Everyone System $env:UserName Users # Set Read & execute permissions for User: Icacls $PDF /c /t /Grant:r $env:UserName:RX # Verify: Icacls $PDF # Remove Variable: Remove-Variable -Name PDF