Windows 10 上的 Python 3.7。Camelot 0.8.2
我正在使用以下代码将 pdf 文件转换为 HTML:
import camelot
import os
def CustomScript(args):
path_to_pdf = "C:\PDFfolder\abc.pdf"
folder_to_pdf = os.path.dirname(path_to_pdf)
tables = camelot.read_pdf(os.path.normpath(path_to_pdf), flavor='stream', pages='1-end')
tables.export(os.path.normpath(os.path.join(folder_to_pdf,"temp","foo.html")), f='html')
return CustomScriptReturn.Empty();
tables.export
我在该行收到以下错误:
“UnicodeEncodeError -'charmap' 编解码器无法在位置 y 编码字符 '\u2010':字符映射到未定义。
此代码在 Mac 上运行没有问题。此错误似乎与 Windows 有关,这是我需要在其上运行它的环境。
我现在花了整整两天时间研究这个令人作呕的错误- 我已经尝试了 Stack Overflow 上与此相关的几篇文章中提供的许多解决方案。错误仍然存在。添加所有解决方案中建议的代码行的问题在于,它们都是要添加到普通 Python 方法的参数。这些参数不适用于 Camelot 的export
方法。
编辑 1:更新帖子以指定哪一行引发错误。
编辑 2:使用的 PDF 文件: http: //tsbde.texas.gov/78i8ljhbj/Fiscal-Year-2014-Disciplinary-Actions.pdf
编辑 3:这是来自 Windows 控制台的完整回溯:
> Traceback (most recent call last): File "main.py", line 18, in
> <module>
> tables.export(os.path.normpath(os.path.join(folder_to_pdf, "foo.html")), f='html') File
> "C:\Users\stpete\AppData\Local\Programs\Python\Python37\lib\site-packages\camelot\core.py",
> line 737, in export
> self._write_file(f=f, **kwargs) File "C:\Users\stpete\AppData\Local\Programs\Python\Python37\lib\site-packages\camelot\core.py",
> line 699, in _write_file
> to_format(filepath) File "C:\Users\stpete\AppData\Local\Programs\Python\Python37\lib\site-packages\camelot\core.py",
> line 636, in to_html
> f.write(html_string) File "C:\Users\stpete\AppData\Local\Programs\Python\Python37\lib\encodings\cp1252.py",
> line 19, in encode
> return codecs.charmap_encode(input,self.errors,encoding_table)[0] UnicodeEncodeError: 'charmap' codec can't encode character '\u2010' in
> position 5737: character maps to <undefined>