代码之家  ›  专栏  ›  技术社区  ›  Marco Mariani

可靠和快速的方式转换成PDF格式的大量ODT文件?

  •  6
  • Marco Mariani  · 技术社区  · 14 年前

    目前,我有一个template.odt,并在content.xml文件中使用标记来填充数据库中的数据。我可以顺利地创建ODT文件,它们看起来总是正确的。

    对于ODT到PDF的转换,我使用服务器模式下的openoffice(和 PyODConverter

    问题是不可预测的再现性(不依赖于数据),发生

    我试着缩小批量大小,并在每一批之后重新启动OOo;不过,一小部分文件 都搞砸了。

    当然,我会在Ooo邮件列表上写下这一点,但与此同时,我有一个快递,已经浪费了太多时间。

      • 建议?任何需要几秒钟才能完成的事情都太慢了。OOo大约需要一秒钟,总共需要15天的处理时间。我不得不写一个程序,把工作集中在几个客户机上。
      • 哪一个?windows的共享软件或商业存储库中有许多应用程序,但尝试每一个都是一项艰巨的任务。
      • 开源工具往往不会重新发明轮子,通常依赖于openoffice。
    1. 转换为中间的.DOC格式有助于避免OOo错误,但它会使处理时间加倍,并使已经过于复杂的任务复杂化。

    2. 试着制作两次PDF并进行比较,如果出现问题,则丢弃整批PDF。

    3. 在处理每个文档后重新启动OOo。

      • 这将降低错误文件的百分比,并使识别它们变得非常困难。
    4. 转到ReportLab并以编程方式重新创建页面。这就是我几分钟后要尝试的方法。

    谢谢。

    编辑:似乎我不能使用ReportLab,它不会让我嵌入字体。 我的字体有TrueType和OpenType两种版本。

    TrueType说“ttferor:Font不允许子集/嵌入(0100)”。

    5 回复  |  直到 14 年前
        1
  •  2
  •   Gabe Timothy Khouri    14 年前

    我可能最终会找到某种方法来确定批处理何时失控,然后在失败前不久重新处理所有内容。如何判断何时失控?这需要分析一些正确的PDF和一些失败的PDF,以寻找它们之间的相似之处:

    • 文件不包含一些字符串(如字体名称)
    • 当转换为位图时,文本不在正确的位置

        2
  •  3
  •   Epaga Alex Reynolds    14 年前

    对于创建如此大量的PDF文件,OpenOffice似乎是一个错误的产品。您应该使用一个真正的报告解决方案,它针对创建大量PDF文件进行了优化。有许多不同的工具。我会推荐的 i-net Clear Reports (以前被称为i-net Crystal Clear)。

    • 创建2个PDF文件并进行比较将花费大量的速度。
    • 它可以嵌入真字体。
    • 有了这个API,你可以在一个循环中工作。

    缺点是必须重新启动开发。

        3
  •  0
  •   extraneon    14 年前

    对于您的场景来说,Reportlab PLUS似乎是一个很好的选择,包括模板和电话支持,可以让您快速进行。

        4
  •  0
  •   whatnick    14 年前

    非常有趣的问题。既然您已经将它编写成跨多台机器的集群,为什么不使用双生产方法并将它分布在EC2节点上呢。这将花费一点额外的,但你可以比较的东西使用md5或sha哈希,如果两个版本是相同的,你可以继续。

        5
  •  0
  •   Horcrux7    14 年前

    比较两个pdf文件我会推荐 i-net PDF content comparer . 它可以比较2个目录的PDF文件非常好。我们正在回归测试系统中使用它。