【发布时间】:2019-11-25 19:35:00
【问题描述】:
我想让用户上传 PDF,将该 PDF 转换为 HTML 代码,然后将此代码插入到 <div> 中以显示 PDF 文档。我正在使用 PDFMiner 来分析上传的 PDF。当我将其转换为 HTML 时,HTML 很乱,并且文档显示错误HTML Mess
.我已经尝试过 XML,但它仍然无法使用,因为文本显示时没有空格。我该如何改进呢?谢谢。
def main():
contentRaw = convert_pdf(file.filename, 'html')
contentR = json.dumps(contentRaw)
contentOut = (contentRaw)
return render_template('app.html', title=" App", filename=file.filename, content=Markup(contentOut), instructions=instructions)
def convert_pdf(path, format='text', codec='utf-8', password=''):
rsrcmgr = PDFResourceManager()
retstr = BytesIO()
laparams = LAParams()
if format == 'text':
device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
elif format == 'html':
device = HTMLConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
elif format == 'xml':
device = XMLConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
else:
raise ValueError('provide format, either text, html or xml!')
fp = open(path, 'rb')
interpreter = PDFPageInterpreter(rsrcmgr, device)
maxpages = 0
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)
text = retstr.getvalue().decode()
fp.close()
device.close()
retstr.close()
return text
【问题讨论】:
-
应该使用诸如 PDF.js 之类的库来显示 PDF,而不是转换为 HTML:mozilla.github.io/pdf.js
-
@MaxiMouse 我想在页面的其他元素中显示 pdf,例如 div。 PDF.js 可以帮助解决这个问题吗?另外,我认为 PDF.js 在网络服务器上运行,我正在为这个项目使用 python。有没有用 Python 编写的类似于 pdf.js 的库?我没有找到任何可靠的东西。
-
PDF.js 在浏览器中运行。它将 PDF 呈现到
canvas元素上,您可以将其放入 div 中。
标签: python html pdf flask pdfminer