用其他单词替换现有PDF或docx中的单词/短语

时间:2018-04-11 10:45:39

标签: pdf .net-core pdf-generation libreoffice google-chrome-headless

我正在尝试将动态PDF生成器作为.NET Core API。我想获取现有的PDF或.docx文件,然后对其进行编辑,以便将当前名称(John Doe)替换为可以替换为#NAME_PLACEHOLDER的内容。

然后我要转换#NAME_PLACEHOLDER -> John Doe(或KeyValuePairDictionary<string, string>中的任何内容。)

我在Docker环境中运行它,所以我可以轻松执行命令,我也愿意这样做。

到目前为止,我尝试了一些事情:

  • 1)pdf2htmlEX
    • 执行为pdf2htmlEX file.pdf
    • 工作做得很好
    • 可以使用谷歌Chrome无头或类似的
    • 转换回PDF
    • 问题:只能使用PDF中使用的字符进行替换。因此,如果我仅将A, B, C用作字符,则会将D变为Times New Roman(或默认字体)
  • 2)LibreOffice ODT to PDF
    • 这非常好,因为我可以简单地解压缩.odt文件,打开content.xml,搜索和替换,然后再将其另存为.odt文件
    • 可以使用soffice --convert-to pdf
    • 轻松转换为PDF
    • LibreOffice非常好
    • 问题1:Microsoft Word - &gt;保存为ODT往往会破坏格式,因此我们必须使用LibreOffice再次将其更改
    • 问题2:我们不想离开微软的Office套件
  • 3)使用Chrome Headless的HTML到PDF
    • 你看到的就是你得到的东西
    • 到目前为止最好的选择,如果我们所有的开发人员都拥有无限的时间
    • 问题1:只有我们的开发人员可以进行更改,因为我们的营销部门不了解HTML
    • 问题2:我们现有的PDF必须以HTML格式重写

正如你所看到的,我尝试了很多东西。除了Chrome Headless之外,他们都没有达到我的期望。我真正喜欢的#3是你看到的就是你得到的东西。我可以用HTML制作整个内容,按 CTRL + P ,看看它看起来像是一个完成的PDF,基本上。

我正在寻找更好的解决方案。它可以支付。它可以是免费的。我所需要的只是动态地用其他词语改变单词/短语,这显然是一件很难的事情。

1 个答案:

答案 0 :(得分:1)

感谢您明确指出您已经找到的内容。这有助于提供简洁的答案。

转换总是很棘手 - 我确定您知道 Word无法自行显示/编辑某些Word文档。

我有关于#2&#34; LibreOffice ODT到PDF&#34;的经验并且可以建议一些测试的东西:

  1. 不要使用Microsoft进行docx-&gt; odt转换。你知道它并不好。使用LibreOffice本身执行此步骤。你的其他过程保持不变。
  2. 对于某些文件,Libre Office的文档更好。因此,您可以使用DOC格式并获得更好的结果,而无需任何其他更改。
  3. 您无法从流程中移除开发人员,但您当然可以减少他们的角色,从而使您的业务/营销团队可以通过以下方式获得更多直接输入:

    • 获取开发点文档到开发人员以完成转换过程。开发者可以清理&#34;使文件转换得很好的文件。
    • 将此版本的文档作为&#34;官方&#34;初始点。业务或技术团队可以加载,调整并将其重新放入流程中。
    • 如果可能,将测试平台公开给业务团队,以便他们可以下载,调整,上传和呈现为PDF。这个循环意味着他们将能够实现更多,如果他们做得好,做一些令人印象深刻的东西,没有任何开发输入。
    • 上述步骤仅仅意味着不要期望任意复杂文档的完美转换。从(甚至复杂的)工作基线开始很棒。
  4. 其中一些可能会向您显示您的#2实际上会获得最佳的整体效果。

    我希望有所帮助。