Я пытаюсь создать простой файл PDF, используя приведенный ниже код, сохраненный в
html2Pdf.py
from fpdf import FPDF, HTMLMixin
import unicodedata
class HTML2PDF(FPDF, HTMLMixin):
pass
if __name__ == '__main__':
pdf = HTML2PDF()
# First page
pdf.add_page()
html="<p>'’'="\\u2019",'“'="\\u201c",'”'="\\u201d",'„'="\\u201e" sun's „ray“ “in” </p>"
pdf.write_html(html)
pdf.output('html.pdf', 'F')
во время выполнения этого кода для создания PDF я получить эту ошибку
Traceback (most recent call last):
File "/path_to_code/html2Pdf.py", line 11, in <module>
pdf.output('html.pdf', "F")
File "/usr/local/lib/python3.7/site-packages/fpdf/fpdf.py", line 1065, in output
self.close()
File "/usr/local/lib/python3.7/site-packages/fpdf/fpdf.py", line 246, in close
self._enddoc()
File "/usr/local/lib/python3.7/site-packages/fpdf/fpdf.py", line 1636, in _enddoc
self._putpages()
File "/usr/local/lib/python3.7/site-packages/fpdf/fpdf.py", line 1170, in _putpages
p = self.pages[n].encode("latin1") if PY3K else self.pages[n]
UnicodeEncodeError: 'latin-1' codec can't encode character '\u2019' in position 3929: ordinal not in range(256)
при попытке ее кодирования.
b = html.encode('ascii', 'backslashreplace')
html = b.decode(encoding="utf-8", errors="strict")
выводится как
'\ u2019' = "\\ u2019", ' \ u201 c '= "\\ u201 c",' \ u201d '= "\\ u201d",' \ u201e '= "\\ u201e" sun \ u2019s \ u201eray \ u201 c \ u201cin \ u201d
И Pdf получает и работает, но оригинальная строка теряется из-за encode
и decode
метода
'' '= "\\ u2019 ", '“' = "\\ u201 c", '”' =" \\ u201d ", '„' = "\\ u201e" солнечный луч "in"
как сохранить эту строку в исходном виде