Это мой первый запрос.Я юрист, и я пытаюсь найти надежный способ динамически вставлять гиперссылки в мои документы.
Я прочитал ответы на предыдущие посты, но не нашел способа решить мою проблему.
Это моя проблема:
- У меня есть папка с документами для прикрепления, которая должна следовать определенному шаблону (например, 01_act.pdf; 02_contract.pdf; 03_invoice.pdf и т. Д .;
- У меня есть документ, в котором я должен добавить к некоторому конкретному вхождению гиперссылку на нужный документ: (например, я должен прикрепить гиперссылку к 01_act.pdf к вхождению "doc. 1", гиперссылку на 02_contract.pdf, чтобыdoc.2 "и т. д .;
Я обнаружил программное обеспечение, которое было опубликовано в этом хранилище
Если я отмечу вхождения", док. 1"с полужирным шрифтом и подчеркнутым я увидел, что в документе создается новый прогон, и система, кажется, работает, но с некоторым странным поведением.
Например, если у меня 1 Меня зовутРобердо ( док.1 ), программа распознала прогон и правильно добавила гиперссылку (и это работает!), Но вывод довольно странный: 1 **** doc.1 Меня зовут Роберто (),
Это код, который повторяет все параграфы:
# scansione dell'atto e aggiunta degli hyperlinks
for p in atto.paragraphs:
for run in p.runs:
for link in linksArray:
found_link = link.__eq__(run.text)
if(found_link):
hyperlink.add(p, run, found_link)
# informo che la scansione è completata
print('Scansione completata\n Salvataggio in corso..')
atto.save(path.join(pathDir,'new-atto.docx'))
, и это функция для добавления гиперссылки в прогон (которую я взял из других ответов):
import docx
def add(paragraph, run, url):
runs = paragraph.runs
for i in range(len(runs)):
if runs[i].text == run.text:
break
# This gets access to the document.xml.rels file and gets a new relation id value
part = paragraph.part
r_id = part.relate_to(url, docx.opc.constants.RELATIONSHIP_TYPE.HYPERLINK, is_external=True)
# Create the w:hyperlink tag and add needed values
hyperlink = docx.oxml.shared.OxmlElement('w:hyperlink')
hyperlink.set(docx.oxml.shared.qn('r:id'), r_id, )
hyperlink.append(run._r)
paragraph._p.insert(i+1,hyperlink)
Заранее извиняюсь за любую ошибку, но я не профессиональный разработчик, просто юрист, который увлечен кодированием: -)