Я хочу включить ссылку на внутренний встроенный документ, поэтому, нажав на нее, вы откроете документ.
Если я устанавливаю цель для внешнего источника (например, веб-URL), он работает нормально:
String linkId = xdoc.getPackagePart().addExternalRelationship("http://www.website.hu", XWPFRelation.HYPERLINK.getRelation()).getId();
CTHyperlink cLink = myParagraph.getCTP().addNewHyperlink();
cLink.setId(linkId);
И все, отлично работает. Я только что создал внешнюю связь с целевым URL и типом связи и передал ее гиперссылке.
Теперь я хочу выполнить то же поведение, но на этот раз гиперссылка должна указывать на внутренний документ, который находится в docx под путем word/embeddings/test.docx
//embedded part is the packagepart for the document
String linkId = xdoc.getPackagePart().addRelationship(embeddedPart.getPartName(), TargetMode.INTERNAL, XWPFRelation.DOCUMENT.getRelation()).getId();
CTHyperlink cLink = myParagraph.getCTP().addNewHyperlink();
cLink.setId(linkId);
И вот здесь наступает тупик: нажатие на ссылку (всплывающее окно показывает правильный путь внутри docx) автоматически меняет путь на внешний и указывает на мою файловую систему. Поэтому, если мой рабочий каталог находится в c:\myfile
, ссылка на мой внутренний файл внутри docx 'word/embeddings/test.docx'
будет изменена на c:/myfile/word/embeddings/test.docx
, что, на мой взгляд, является неправильным поведением.
Я пытался передать разные аргументы в addRelationShip (), например, TargetMode.EXTERNAL, WPFRelation.HyperLink..etc, но результаты те же, и из-за отсутствия документации это просто проб и ошибок.
Так как мне ссылаться на внутренний документ с помощью гиперссылок?