如何从 Windows 命令行打印为 PDF?

如何从 Windows 命令行打印为 PDF?

我有无数可编辑的 PDF 文件。我想通过打印使它们不可编辑PDF。如何在 Windows 命令行上执行此操作?

我的最终目标是使 PDF 不可编辑,并大规模地做到这一点。我发现打印为 PDF 确实会使其不可编辑,但我愿意接受其他选择。

答案1

由于我支持 SumatraPDF,因此使用 SumatraPDF 便携式文件通过 Microsoft PDF 重新生成非常容易,并且必须解释为什么它可能不是您所期望的或真正需要的。

将 PDF 打印为基于图像的 PDF 会使它们变得非常臃肿,因此需要进行压缩。这种压缩会导致质量下降,渲染速度变慢。

PDF 的设计目标是以更细的线矢量的形式快速绘制,而不是逐点绘制。

一旦转换为图像,您就无法恢复,除非通过自动 OCR 运行。实际上,现在这非常适用于替换那些臃肿的图像,因此可以删除它们以获得更快的读取/可编辑文件。

第二个问题是,只要格式固定为横向或纵向,Microsoft Print to PDF 就可以无人值守运行。因此,对于包含横向或纵向两种页面大小的文件来说,这通常不太适用。

其他人建议你使用设置来保护文件使用,那就算了吧。大多数 PDF 查看器都是表单和注释的编辑器,因此要添加到 PDF 中,需要取消保护,Adobe 会管理这方面,但大多数其他查看器只是忽略了这种管理需求。

答案2

您可以使用 Adob​​e Acrobat Pro 打印为 PDF。Adobe Acrobat Pro 还允许您执行批处理,因此您可以批量打印为 PDF。

在此处输入图片描述

https://forums.adobe.com/thread/2540164镜子) 更多细节。

免责声明:在我撰写这篇文章时(2019-06-01),我在 Adob​​e 工作。

答案3

为了使 PDF 不可编辑,必须使用 PDF 编辑器对其进行加密;即使这样,如果将 PDF 打印为 PDF,加密和/或其数字签名也不会随之而来(在保护时可以限制打印,但这通常会产生比解决的问题更多的问题)

  • 这在商业交易中很常见,为了防止这种情况发生,PDF(无论是否安全)都会附加数字签名,以验证它是未经修改的原件

如果问题是想要使本地存储的 PDF 不可编辑,则可以使用 ACL 来限制用户修改文件本身的能力:

  • 图形用户界面(GUI):
    1. 特性安全先进的
    2. 删除用户调整权限
    3. 添加选择校长输入要选择的对象名称[用户/组]
    4. 选择读取并执行→ 确定 → 确定

  • 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
    

相关内容