Преобразование документа Word в PDF с кликабельными ссылкамиPython

Программы на Python
Ответить
Anonymous
 Преобразование документа Word в PDF с кликабельными ссылками

Сообщение 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)


Подробнее здесь: https://stackoverflow.com/questions/791 ... able-links
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»