Ejemplo n.º 1
0
    def browser(self):
        """ 将内容复制到word,另存为html文件后,用浏览器打开查看 """
        from pyxllib.file.docxlib import rebuild_document_by_word

        file = fire.Fire(rebuild_document_by_word, self.cmds['subinput'],
                         'browser')
        browser(file)
Ejemplo n.º 2
0
 def xrefstr(self):
     """查看pdf文档的所有对象"""
     xrefstr = []
     n = self.doc._getXrefLength()
     for i in range(1, n):  # 注意下标实际要从1卡开始
         # 可以边遍历边删除,不影响下标位置,因为其本质只是去除关联引用而已
         xrefstr.append(self.doc._getXrefString(i))
     browser('\n'.join(xrefstr))
Ejemplo n.º 3
0
 def setToC(self):
     """设置书签目录
     可以调层级、改名称、修改指向页码
     """
     toc = self.doc.getToC()
     toc[1][1] = '改标题名称'
     self.doc.setToC(toc)
     file = File('a.pdf', Dir.TEMP).to_str()
     self.doc.save(file, garbage=4)
     browser(file)
Ejemplo n.º 4
0
 def browser(_self, opt='html'):
     if opt == 'html':
         data = _self.get_text('html')  # html、xhtml 可以转网页,虽然排版相对来说还是会乱一点
         data = ''.join(data)
         etag = get_etag(data)
         f = File(etag, Dir.TEMP, suffix='.html')
         f.write(data)
         browser(f)
     else:
         raise ValueError
Ejemplo n.º 5
0
 def page_add_ele(self):
     """往页面添加元素
     添加元素前后xrefstr的区别: https://paste.ubuntu.com/p/Dxhnzp4XJ2/
     """
     self.doc.select([0])
     page = self.doc.loadPage(0)
     # page.insertText(fitz.Point(100, 200), 'test\ntest')
     file = File('a.pdf', Dir.TEMP).to_str()
     dprint(file)
     self.doc.save(file, garbage=4)
     browser(file)
Ejemplo n.º 6
0
    def browser(doc, file_name=None, fmt='html', retain=False):
        """ 这个函数可能会导致原doc指向对象被销毁,建议要不追返回值doc继续使用
        """
        res = doc.save(file_name, fmt, retain=retain)

        if retain:
            outfile, doc = res
        else:
            outfile = res

        browser(outfile)
        return doc
Ejemplo n.º 7
0
    def pagetext(self):
        """单页上的文本"""
        page = self.doc[0]

        # 获得页面上的所有文本,还支持参数: html,dict,xml,xhtml,json
        text = page.getText('text')
        dprint(text)

        # 获得页面上的所有文本(返回字典对象)
        textdict = page.getText('dict')
        textdict['blocks'] = textdict['blocks'][:-1]
        browser(pprint.pformat(textdict))
Ejemplo n.º 8
0
 def browser(self, opt='pdf'):
     if opt == 'pdf':
         f = self.src_file
         browser(self.src_file)
     elif opt == 'html':
         ls = []
         for i in range(self.page_count):
             page = self.load_page(i)
             ls.append(page.get_text('html'))
         data = '\n'.join(ls)
         etag = get_etag(data)
         f = File(etag, Dir.TEMP, suffix='.html')
         f.write(data)
         browser(f)
     else:
         raise ValueError(f'{opt}')
     return f
Ejemplo n.º 9
0
def _print_df_result(df, outfmt='text'):
    # subinput可以强制重置输出类型
    # TODO argparser可以对str类型进行参数解析?
    # if 'browser' in kwargs['subinput']:
    #     outfmt = 'browser'
    # elif 'html' in kwargs['subinput']:
    #     outfmt = 'html'
    # elif 'text' in kwargs['subinput']:
    #     outfmt = 'text'

    if outfmt == 'html':
        # content = df.to_html().replace('–', '-')  # 很多app会出现一个utf8特殊的-,转gbk编码会出错+
        try:  # utools里按gbk会有很多编码问题,如果不能直接显示,就打开浏览器看
            print(df.to_html())
        except UnicodeEncodeError:
            browser(df)
    elif outfmt == 'browser':
        browser(df)
    else:
        with pd.option_context('display.max_colwidth', -1,
                               'display.max_columns', 20, 'display.width',
                               200):  # 上下文控制格式
            print(df)
Ejemplo n.º 10
0
    def to_html(cls, pdf_file):
        """ 相比fitz,pdfminer能正常提取出下划线

        文本重叠比fitz更严重,整体来说其实更不好用~~
        """

        from io import StringIO

        from pdfminer.high_level import extract_text_to_fp
        from pdfminer.layout import LAParams

        output_string = StringIO()
        with open(str(pdf_file)) as fin:
            extract_text_to_fp(fin,
                               output_string,
                               laparams=LAParams(),
                               output_type='html',
                               codec=None)

        # 打开浏览器查看重建的html效果
        f = pdf_file.with_suffix('.html')
        f.write(output_string.getvalue())
        browser(f)
Ejemplo n.º 11
0
 def browser(_self):
     """注意,这里会去除掉合并单元格"""
     browser(pd.DataFrame(_self.values))
Ejemplo n.º 12
0
 def browser(self):
     """ 转pdf,使用浏览器的查看效果
     """
     pdf_file = self.to_pdf()
     browser(pdf_file)
Ejemplo n.º 13
0
 def rearrange_pages(self):
     """重新布局页面"""
     self.doc.select([0, 0, 1])  # 第1页展示两次后,再跟第2页
     file = writefile(b'', 'a.pdf', root=Dir.TEMP, if_exists='replace')
     self.doc.save(file, garbage=4)  # 注意要设置garbage,否则文档并没有实际删除内容压缩文件大小
     browser(file)
Ejemplo n.º 14
0
 def getToC(self):
     """获得书签目录"""
     toc = self.doc.getToC()
     browser(toc)