У меня есть следующий код, который преобразует текстовый документ с именем LG_LINKS.docx в PDF с интерактивными ссылками. Код рабочий, но ссылки неточные. Например, у меня есть ссылка https://streamable.com/remj, но когда я нажимаю на нее в выходном PDF-файле, в конце ссылки появляются другие символы, например: https://streamable.com/ remj%D8%A7%D9%84%D9%81%D9%8A%D8%AF%D9%8A%D9%88%D8%A7%D9%84%D8%AB%D8%A7%D9%84% D8%AB%D8%AA%D8%B3%D9%83%D9%8A%D9%86%D8%A7%D9%84%D9%81%D8%B5%D9%88%D9%84%D9% 88%D8%AA%D8%B9%D8%AF%D9%8A%D9%84%D8%A7%D9%84%D9%84%D8%BA%D8%A9%D8%A7%D9%84% D8%A3%D9%88%D9%84%D9%89%D9%88%D8%A7%D9%84%D8%AB%D8%A7%D9%86%D9%8A%D8%A9ذ
from docx import Document
from docx.shared import RGBColor
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
from docx2pdf import convert
def make_links_blue(docx_file):
doc = Document(docx_file)
for paragraph in doc.paragraphs:
for run in paragraph.runs:
if 'https' in run.text:
url = run.text.strip()
run.clear()
hyperlink = OxmlElement('w:hyperlink')
new_run = OxmlElement('w:r')
rPr = OxmlElement('w:rPr')
color = OxmlElement('w:color')
color.set(qn("w:val"), '0000FF')
rPr.append(color)
underline = OxmlElement('w:u')
underline.set(qn('w:val'), 'single')
rPr.append(underline)
new_run.append(rPr)
text_element = OxmlElement('w:t')
text_element.text = url
new_run.append(text_element)
hyperlink.append(new_run)
run._r.addnext(hyperlink)
doc.save(docx_file)
def export_docx_to_pdf(input_docx, output_pdf):
try:
convert(input_docx, output_pdf)
print(f'PDF Created Successfully: {output_pdf}')
except FileNotFoundError:
print(f"Error: The File '{input_docx}' Was Not Found.")
except Exception as e:
print(f"An error occurred: {str(e)}")
if __name__ == '__main__':
input_docx = 'LG_LINKS.docx'
make_links_blue(input_docx)
output_pdf = 'LG_LINKS.pdf'
export_docx_to_pdf(input_docx, output_pdf)
Подробнее здесь: https://stackoverflow.com/questions/791 ... able-links
Преобразование документа Word в PDF с кликабельными ссылками ⇐ Python
Программы на Python
-
Anonymous
1730305652
Anonymous
У меня есть следующий код, который преобразует текстовый документ с именем LG_LINKS.docx в PDF с интерактивными ссылками. Код рабочий, но ссылки неточные. Например, у меня есть ссылка https://streamable.com/remj, но когда я нажимаю на нее в выходном PDF-файле, в конце ссылки появляются другие символы, например: https://streamable.com/ remj%D8%A7%D9%84%D9%81%D9%8A%D8%AF%D9%8A%D9%88%D8%A7%D9%84%D8%AB%D8%A7%D9%84% D8%AB%D8%AA%D8%B3%D9%83%D9%8A%D9%86%D8%A7%D9%84%D9%81%D8%B5%D9%88%D9%84%D9% 88%D8%AA%D8%B9%D8%AF%D9%8A%D9%84%D8%A7%D9%84%D9%84%D8%BA%D8%A9%D8%A7%D9%84% D8%A3%D9%88%D9%84%D9%89%D9%88%D8%A7%D9%84%D8%AB%D8%A7%D9%86%D9%8A%D8%A9ذ
from docx import Document
from docx.shared import RGBColor
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
from docx2pdf import convert
def make_links_blue(docx_file):
doc = Document(docx_file)
for paragraph in doc.paragraphs:
for run in paragraph.runs:
if 'https' in run.text:
url = run.text.strip()
run.clear()
hyperlink = OxmlElement('w:hyperlink')
new_run = OxmlElement('w:r')
rPr = OxmlElement('w:rPr')
color = OxmlElement('w:color')
color.set(qn("w:val"), '0000FF')
rPr.append(color)
underline = OxmlElement('w:u')
underline.set(qn('w:val'), 'single')
rPr.append(underline)
new_run.append(rPr)
text_element = OxmlElement('w:t')
text_element.text = url
new_run.append(text_element)
hyperlink.append(new_run)
run._r.addnext(hyperlink)
doc.save(docx_file)
def export_docx_to_pdf(input_docx, output_pdf):
try:
convert(input_docx, output_pdf)
print(f'PDF Created Successfully: {output_pdf}')
except FileNotFoundError:
print(f"Error: The File '{input_docx}' Was Not Found.")
except Exception as e:
print(f"An error occurred: {str(e)}")
if __name__ == '__main__':
input_docx = 'LG_LINKS.docx'
make_links_blue(input_docx)
output_pdf = 'LG_LINKS.pdf'
export_docx_to_pdf(input_docx, output_pdf)
Подробнее здесь: [url]https://stackoverflow.com/questions/79134282/convert-word-document-to-pdf-with-clickable-links[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия