ArtifexSoftware / pdf2docx

Open source Python library for converting PDF to DOCX.
https://pdf2docx.readthedocs.io
GNU Affero General Public License v3.0
2.57k stars 376 forks source link

A bug in Shape.py #111

Closed AAAves closed 2 years ago

AAAves commented 3 years ago

在shape.Shape.py: 75行的这个函数

@type.setter
def type(self, rect_type:RectType): 
    self._type = rect_type.value`

当text.TextSpan.py: 313行

else:
     rect.type = rect.default_type

这里的default_type是一个int型,因此调用上面shape中的函数会出现类型错误

我把Shape.py改成这样以后不报错了:

   @type.setter
    def type(self, rect_type:RectType):
        if isinstance(rect_type,int):
            self._type = rect_type
        elif isinstance(rect_type,RectType):
            self._type = rect_type.value

会出现bug的pdf:https://openaccess.thecvf.com/content_ICCV_2019/papers/Liu_Coherent_Semantic_Attention_for_Image_Inpainting_ICCV_2019_paper.pdf

dothinking commented 2 years ago

感谢指出bug、提供测试文件及解决方法。这确实是v0.5.2版出现概率非常高的一个问题,你的修改通过类型判断可以解决问题。

经检查,我也已经在开发分支中修复了这个问题:首先直接删除了出错的else分支,然后把接下来的317行从

# check rect type again
if rect.type==rect.default_type: return False

改为:

# check rect type again
if not rect.is_determined: return False

抱歉这么晚才回复。