Reportlab生成PDF文件

在前一个帖子:取出word文档文字内容生成加了目录、标号和页码的PDF文件有个未解决的问题,就是把word文档的内容提取出来放进PDF文件时,word文档里的代码部分,如:

写进PDF文件时变成:

语句print('Forget colon')前的缩进不见了,跟这段有关系的代码是:

            elif docStyle == 'Code':        
            # 普通段落和代码直接填进story,对代码的处理效果不理想
                story.append(Paragraph(para.text, code))

para是word文档的段落对象,para.text取出word文档的段落内容。如果输出para.text的内容可以看出在para.text里是保留缩进的,行首空格(锁进)是在用Paragraph(para.text, code)生成要放在PDF文档的段落对象时被拿掉的。解决办法是将Paragraph改成Preformatted改成:

            elif docStyle == 'Code':      
            # 普通段落和代码直接填进story
                from reportlab.platypus import Preformatted
                story.append(Preformatted(para.text, code))

改用Preformatted()可以保留原来的锁进格式。生成的PDF文档的代码部分长这样:

如果选用的字体相同,会跟word上的代码格式一摸一样的。