Мне интересно изменить шрифт некоторого текста в документах.
Я использовал пример #581-filtering-by-font и добавил повторную отправку в SimpleFindReplace, и это вызывает утверждение о том, что прямоугольник не может иметь отрицательную ширину.
Я подтвердил, что в документе присутствует исходный шрифт «VFMBOX+HelveticaNeueLTStd-Roman».
Версия Borb 2.1.25
Версия Python — 3.11
Это код —
*`#!chapter_005/src/snippet_017.py
import typing
from borb.pdf import Document
from borb.pdf import PDF
from borb.toolkit import FontNameFilter
from borb.toolkit import SimpleTextExtraction
from borb.toolkit import SimpleFindReplace
def main():
# create FontNameFilter
l0: FontNameFilter = FontNameFilter("VFMBOX+HelveticaNeueLTStd-Roman")
# filtered text just gets passed to SimpleTextExtraction
l1: SimpleTextExtraction = SimpleTextExtraction()
l0.add_listener(l1)
# read the Document
doc: typing.Optional[Document] = None
with open("C:\Data\PDFFontChange\PD-1239-G_RevA_PR.pdf", "rb") as in_file_handle:
doc = PDF.loads(in_file_handle, [l0])
# check whether we have read a Document
assert doc is not None
templist = (l1.get_text()[0]).splitlines()
# print(templist)
i = 0
for x in templist :
print(i, ' : ', x)
i += 1
doc = SimpleFindReplace.sub(x, x, doc, repl_font="Helvetica")
# store
with open("output2.pdf", "wb") as pdf_file_handle:
PDF.dumps(pdf_file_handle, doc)
if __name__ == "__main__":
main()
Вот полная отслеживание ошибок, и я включил первый пронумерованный (напечатанный как 0 : ) текст, найденный FontNameFilter из PDF-файла, повторно отправленного кодом, в SimpleFindReplace, который запускает ошибка.
0 : At the heart of your pump or dispenser,
Traceback (most recent call last):
File "c:\Python\Glenn_Begin\PDF_Workings\BORB_PDF_FontNameAlterTrajan.py", line 43, in
main()
File "c:\Python\Glenn_Begin\PDF_Workings\BORB_PDF_FontNameAlterTrajan.py", line 36, in main
doc = SimpleFindReplace.sub(x, x, doc, repl_font="Helvetica")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python\Glenn_Begin\.venv\Lib\site-packages\borb\toolkit\text\simple_find_replace.py", line 72, in sub
] = RegularExpressionTextExtraction.get_matches_for_pdf(pattern, doc)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python\Glenn_Begin\.venv\Lib\site-packages\borb\toolkit\text\regular_expression_text_extraction.py", line 375, in get_matches_for_pdf
CanvasStreamProcessor(page, Canvas(), []).read(page_source, [cse])
File "C:\Python\Glenn_Begin\.venv\Lib\site-packages\borb\pdf\canvas\canvas_stream_processor.py", line 277, in read
raise e
File "C:\Python\Glenn_Begin\.venv\Lib\site-packages\borb\pdf\canvas\canvas_stream_processor.py", line 271, in read
operator.invoke(self, operands, event_listeners)
File "C:\Python\Glenn_Begin\.venv\Lib\site-packages\borb\pdf\canvas\operator\text\show_text_with_glyph_positioning.py", line 84, in invoke
l._event_occurred(tri)
File "C:\Python\Glenn_Begin\.venv\Lib\site-packages\borb\toolkit\text\regular_expression_text_extraction.py", line 326, in _event_occurred
self._render_text(event)
File "C:\Python\Glenn_Begin\.venv\Lib\site-packages\borb\toolkit\text\regular_expression_text_extraction.py", line 338, in _render_text
for e in text_render_info.split_on_glyphs():
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python\Glenn_Begin\.venv\Lib\site-packages\borb\pdf\canvas\event\chunk_of_text_render_event.py", line 177, in split_on_glyphs
e._baseline_bounding_box = Rectangle(
^^^^^^^^^^
File "C:\Python\Glenn_Begin\.venv\Lib\site-packages\borb\pdf\canvas\geometry\rectangle.py", line 30, in __init__
assert width >= 0, "A Rectangle must have a non-negative width."
^^^^^^^^^^
AssertionError: A Rectangle must have a non-negative width.
Подробнее здесь: https://stackoverflow.com/questions/792 ... tive-width
Текст Borb вызывает сообщение «AssertionError: прямоугольник должен иметь неотрицательную ширину». ⇐ Python
Программы на Python
1731967807
Anonymous
Мне интересно изменить шрифт некоторого текста в документах.
Я использовал пример #581-filtering-by-font и добавил повторную отправку в SimpleFindReplace, и это вызывает утверждение о том, что прямоугольник не может иметь отрицательную ширину.
Я подтвердил, что в документе присутствует исходный шрифт «VFMBOX+HelveticaNeueLTStd-Roman».
Версия Borb 2.1.25
Версия Python — 3.11
Это код —
*`#!chapter_005/src/snippet_017.py
import typing
from borb.pdf import Document
from borb.pdf import PDF
from borb.toolkit import FontNameFilter
from borb.toolkit import SimpleTextExtraction
from borb.toolkit import SimpleFindReplace
def main():
# create FontNameFilter
l0: FontNameFilter = FontNameFilter("VFMBOX+HelveticaNeueLTStd-Roman")
# filtered text just gets passed to SimpleTextExtraction
l1: SimpleTextExtraction = SimpleTextExtraction()
l0.add_listener(l1)
# read the Document
doc: typing.Optional[Document] = None
with open("C:\Data\PDFFontChange\PD-1239-G_RevA_PR.pdf", "rb") as in_file_handle:
doc = PDF.loads(in_file_handle, [l0])
# check whether we have read a Document
assert doc is not None
templist = (l1.get_text()[0]).splitlines()
# print(templist)
i = 0
for x in templist :
print(i, ' : ', x)
i += 1
doc = SimpleFindReplace.sub(x, x, doc, repl_font="Helvetica")
# store
with open("output2.pdf", "wb") as pdf_file_handle:
PDF.dumps(pdf_file_handle, doc)
if __name__ == "__main__":
main()
Вот полная отслеживание ошибок, и я включил первый пронумерованный (напечатанный как 0 : ) текст, найденный FontNameFilter из PDF-файла, повторно отправленного кодом, в SimpleFindReplace, который запускает ошибка.
0 : At the heart of your pump or dispenser,
Traceback (most recent call last):
File "c:\Python\Glenn_Begin\PDF_Workings\BORB_PDF_FontNameAlterTrajan.py", line 43, in
main()
File "c:\Python\Glenn_Begin\PDF_Workings\BORB_PDF_FontNameAlterTrajan.py", line 36, in main
doc = SimpleFindReplace.sub(x, x, doc, repl_font="Helvetica")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python\Glenn_Begin\.venv\Lib\site-packages\borb\toolkit\text\simple_find_replace.py", line 72, in sub
] = RegularExpressionTextExtraction.get_matches_for_pdf(pattern, doc)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python\Glenn_Begin\.venv\Lib\site-packages\borb\toolkit\text\regular_expression_text_extraction.py", line 375, in get_matches_for_pdf
CanvasStreamProcessor(page, Canvas(), []).read(page_source, [cse])
File "C:\Python\Glenn_Begin\.venv\Lib\site-packages\borb\pdf\canvas\canvas_stream_processor.py", line 277, in read
raise e
File "C:\Python\Glenn_Begin\.venv\Lib\site-packages\borb\pdf\canvas\canvas_stream_processor.py", line 271, in read
operator.invoke(self, operands, event_listeners)
File "C:\Python\Glenn_Begin\.venv\Lib\site-packages\borb\pdf\canvas\operator\text\show_text_with_glyph_positioning.py", line 84, in invoke
l._event_occurred(tri)
File "C:\Python\Glenn_Begin\.venv\Lib\site-packages\borb\toolkit\text\regular_expression_text_extraction.py", line 326, in _event_occurred
self._render_text(event)
File "C:\Python\Glenn_Begin\.venv\Lib\site-packages\borb\toolkit\text\regular_expression_text_extraction.py", line 338, in _render_text
for e in text_render_info.split_on_glyphs():
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python\Glenn_Begin\.venv\Lib\site-packages\borb\pdf\canvas\event\chunk_of_text_render_event.py", line 177, in split_on_glyphs
e._baseline_bounding_box = Rectangle(
^^^^^^^^^^
File "C:\Python\Glenn_Begin\.venv\Lib\site-packages\borb\pdf\canvas\geometry\rectangle.py", line 30, in __init__
assert width >= 0, "A Rectangle must have a non-negative width."
^^^^^^^^^^
AssertionError: A Rectangle must have a non-negative width.
Подробнее здесь: [url]https://stackoverflow.com/questions/79201576/borb-text-triggers-assertionerror-a-rectangle-must-have-a-non-negative-width[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия