首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pdfminer -有办法从PDFminer将pdf转换成html吗?

pdfminer -有办法从PDFminer将pdf转换成html吗?
EN

Stack Overflow用户
提问于 2020-12-31 08:29:34
回答 3查看 5.4K关注 0票数 3

是使用pdfminer将pdf转换成html的简单方法吗?我见过很多这样的问题,但他们不会给我一个正确的答案.

我在ConEmu提示符中输入了以下内容:

代码语言:javascript
复制
# pdf2txt.py -o output.html -t html sample.pdf
usage: C:\Program Files\Python37-32\Scripts\pdf2txt.py [-P password] [-o output] [-t text|html|xml|tag] [-O output_dir] [-c encoding] [-s scale] [-R rotation] [-Y normal|loose|exact] [-p pagenos] [-m maxpages] [-S] [-C] [-n] [-A] [-V] [-M char_margin] [-L line_margin] [-W word_margin] [-F boxes_flow] [-d] input.pdf ...

我希望这不是我应该从pdf2txt.py得到的回应。

有什么代码片段可以工作吗?我试过这样做:

代码语言:javascript
复制
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import HTMLConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from io import BytesIO


def convert_pdf_to_html(path):
    rsrcmgr = PDFResourceManager()
    retstr = BytesIO()
    codec = 'utf-8'
    laparams = LAParams()
    device = HTMLConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
    fp = open(path, 'rb')
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    password = ""
    maxpages = 0 #is for all
    caching = True
    pagenos=set()
    for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages, password=password,caching=caching, check_extractable=True):
        interpreter.process_page(page)
    fp.close()
    device.close()
    str = retstr.getvalue()
    retstr.close()
    return str

test = convert_pdf_to_html('E://sample.pdf')

但是它没有给我任何html文件和输出

另一个密码是:

代码语言:javascript
复制
import pdfminer
from pdfminer.pdfinterp import PDFResourceManager, process_pdf
from pdfminer.converter import HTMLConverter, TextConverter
from pdfminer.layout import LAParams
rsrcmgr = PDFResourceManager()
laparams = LAParams()
converter = HTMLConverter if format == 'html' else TextConverter
device = converter(rsrcmgr, out_file, codec='utf-8', laparams=laparams)
process_pdf(rsrcmgr, device, in_file, pagenos=[1,3,5], maxpages=9)

with contextlib.closing(tempfile.NamedTemporaryFile(mode='r', suffix='.xml')) as xmlin:
    cmd = 'pdftohtml -xml -nodrm -zoom 1.5 -enc UTF-8 -noframes "%s" "%s"' % (
            pdf_filename, xmlin.name.rpartition('.')[0])
    os.system(cmd + " >/dev/null 2>&1")
    result = xmlin.read().decode('utf-8')

它的内容如下:

代码语言:javascript
复制
Traceback (most recent call last):

  File "E:\Blah\blah\blah.py", line 2, in <module>
    from pdfminer.pdfinterp import PDFResourceManager, process_pdf

ImportError: cannot import name 'process_pdf' from 'pdfminer.pdfinterp' (c:\program files\python37-32\lib\site-packages\pdfminer\pdfinterp.py)

信息:

代码语言:javascript
复制
System : Windows 7 SP-1 32-bit
Python : 3.7.0
PDFMiner : 20191125
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-05-14 09:11:40

安装pdfminer并使用以下命令将pdf转换为html

代码语言:javascript
复制
$ pip3 install pdfminer
$ pdf2txt.py  -o output.html document.pdf
票数 4
EN

Stack Overflow用户

发布于 2020-12-31 10:17:41

关于ImportError: cannot import name 'process_pdf' from 'pdfminer.pdfinterp'的第二个代码片段,我建议检查这个GitHub问题

显然,process_pdf()已经被PDFPage.get_pages()取代了。功能几乎相同(对于您使用的参数(rsrcmgr, device, in_file, pagenos=[1,3,5], maxpages=9),它可以工作!)因此,在现场检查实现。

票数 1
EN

Stack Overflow用户

发布于 2021-06-13 06:09:29

您的第一个代码片段很好。但是,如果以“rb”的形式打开pdf,则使用retstr = BytesIO(),如果以“r”的形式打开,则使用retstr = StringIO()

此外,没有必要在HTMLConverter()中传递codec值。因此,您可以将HTMLConverter更改为:

代码语言:javascript
复制
HTMLConverter(rsrcmgr, retstr, laparams=laparams) 

这些变化对我起了作用。

希望他们也能为你工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65518466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档