gpt4 book ai didi

python - Reportlab 'LayoutError'处理和调试

转载 作者:太空狗 更新时间:2023-10-30 00:00:39 25 4
gpt4 key购买 nike

我一直在使用 reportlab 处理一些复杂的 PDF 输出。这些通常都很好,但在某些情况下我仍然会遇到 LayoutErrors - 这些通常是因为 Flowables 在某些时候太大了。

事实证明调试它们非常困难,因为我通常没有比这样的信息更多的信息;

Flowable <Table@0x104C32290 4 rows x 6 cols> with cell(0,0) containing
'<Paragraph at 0x104df2ea8>Authors'(789.0 x 1176) too large on page 5 in frame 'normal'(801.543307087 x 526.582677165*) of template 'Later'

它真的没有那么有用。我最想知道的是这种事情的最佳调试和测试策略。

  • 有什么方法可以让我查看损坏的 PDF 文件?即呈现布局错误,以便我可以更轻松地查看发生了什么。
  • 有没有一种方法可以将 Hook 添加到 reportlab 以更好地处理这些错误?而不是让整个 PDF 都失败?
  • 关于一般改进、测试和处理此类问题的任何其他建议。

我没有具体的例子,所以它是更一般的建议,上面的异常我已经解决了,但它有点通过反复试验(阅读;猜测并看看会发生什么)。

最佳答案

确保您没有重复使用任何可流动对象(例如,使用公共(public)模板部分呈现文档的多个版本)。这不受 ReportLab 支持,并可能导致此错误。

原因似乎是 ReportLab 在执行布局时会在这些对象上设置一个属性,以指示需要将它们移动到单独的页面。如果必须移动两次,它将抛出该异常。当您呈现文档时,这些属性不会被重置,因此看起来对象被移动到一个单独的页面两次,但实际上并没有。

我之前通过手动重置属性解决了这个问题(我现在不记得这个名字了;它是“_deferred”之类的),但正确的方法是扔掉你用来渲染的任何对象呈现后的文档。

关于python - Reportlab 'LayoutError'处理和调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3069288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com