【问题标题】:Is there any way to make a pdf which cannot be converted to word?有没有办法制作无法转换为word的pdf?
【发布时间】:2016-03-07 06:42:25
【问题描述】:

我们有一个生成 PDF 文件的系统。但是任何人都可以使用在线 pdf 到 word 转换器将这些文件转换。 Yii 或 PHP 中是否有任何选项可以阻止这种情况?

【问题讨论】:

  • 您是否尝试将文件/文本编码为图像,然后使用生成的图像生成 pdf。这使得 pdf 无法复制,因此无法转换为 word 文档
  • 没有什么是绕不过去的
  • 我不明白为什么有人要这样做。似乎是一个用户限制功能,什么都做不了(比如禁用网页上的右键单击)。如果您害怕以您的名义伪造文件,您应该获得证书并在您的 pdf 上进行数字签名。
  • @vove :这不是我的要求。客户要求
  • @TNC 显然不可能阻止人们将 Pdf 转换为 word 文件,他们总是可以截取屏幕截图并将它们作为图像添加到 word 文件中,可能应用了一些 OCR。因此,您应该与您的客户澄清他究竟想表达什么。

标签: php pdf yii ms-word


【解决方案1】:

为了防止 PDF 转换为 Word,您可以:

  1. 设置查看 PDF 所需的密码- 共享密码后 - 可以删除
  2. 转换 PDF to images,然后将这些图像转换为 PDF(使用 ImageMagickGhostscript- 可使用 OCR 恢复。
  3. 在生成的 PDF 中编写损坏所谓的CMAP(/ToUnicode 字典) 的代码,以便复制的文本与显示给查看器的文本不匹配-但仍可使用 OCR 恢复。
  4. handwritten font 用于drawn into image 的文本。然后将这些图像保存为JPEG,并将这些 JPEG 文件转换为最终的 PDF - 使用 OCR 无法恢复,但可以使用 HWR 恢复
  5. 使用vector drawing 命令逐行绘制您自己的字母,因此看起来像字母,但 PDF 阅读器不会将其识别为文本 - 仍然可以使用人眼恢复。
  6. 最后,您可以跳过生成 PDF,而是打印一份实体文档,为其制作精装封面并通过实体邮件发送给您的客户,并假设他们懒得不取下封面并扫描您使用 OCR 软件逐页记录文档。

【讨论】:

    【解决方案2】:

    要禁用任何其他格式的 PDF 转换,例如 PDFTK 命令行,您可以找到它here
    当用户尝试打印您的 PDF 文档时,它会提示输入密码(考虑转换格式也是一种打印机制)

    命令行

    pdftk source.pdf output destination.pdf user_pw password
    

    所以要在 PHP 中使用它,不要忘记将 PDFTK 添加到您的 PATH 环境变量中,设置访问权限并重新启动您的 Web 服务器

    编辑 你可以使用shell_exec()

    <?php
    // ... 
    shell_exec('pdftk source.pdf output destination.pdf user_pw password');
    ?>
    

    【讨论】:

    • 如果指定的密码是“用户”密码(在 PDF 上下文中),则意味着打开文档时必须提供此密码。限制功能的密码是“所有者”密码。这些限制包括打印和页面提取。转换成Word就是页面提取。这些密码的问题在于行为不端的应用程序可以简单地忽略它们。所以,问题是这个简单的命令行命令是否能提供足够的保护。
    【解决方案3】:

    PDF 中的任何文本都可以转换为任何其他文本格式。

    您可以尝试将要放入 PDF 的信息呈现为图像,然后将图像插入 PDF。

    这样,当读取 PDF 时,就得到了图像数据。尽管如果转换器是持久的,这仍然可以转换为任何格式,但它会让它们做更多的工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-24
      • 1970-01-01
      • 1970-01-01
      • 2019-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多