Как создать ссылку внутри сноски с помощью Apache POI?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как создать ссылку внутри сноски с помощью Apache POI?

Сообщение Anonymous »

Я могу создавать сноски и ссылки, но когда я пытаюсь создать ссылку внутри сноски, Word отказывается открывать полученный документ.
Вот минимальный пример, воспроизводящий проблему:

Код: Выделить всё

import java.io.File;
import java.io.FileOutputStream;

import org.apache.poi.xwpf.usermodel.XWPFAbstractFootnoteEndnote;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFHyperlinkRun;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRelation;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHyperlink;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR;

public class Test {
public static void main(String[] argv) throws Exception {
XWPFDocument document = new XWPFDocument();
XWPFParagraph para = document.createParagraph();

XWPFRun tmpRun = para.createRun();
tmpRun.setText("LALALALAALALAAAA");

XWPFAbstractFootnoteEndnote note = para.getDocument().createFootnote();

XWPFParagraph ipara = note.createParagraph();
XWPFRun irun = ipara.createRun();
irun.setText("In the footnote");

String href = "https://www.garshol.priv.no";
CTHyperlink hyperlink = ipara.getCTP().addNewHyperlink();
String rId = ipara.getDocument().getPackagePart().addExternalRelationship(href, XWPFRelation.HYPERLINK.getRelation()).getId();
hyperlink.setId(rId);

XWPFHyperlinkRun hyperlinkRun = new XWPFHyperlinkRun(
hyperlink, CTR.Factory.newInstance(), ipara);
CTR run = hyperlink.addNewR();
run.addNewT().setStringValue("And here is a link");

ipara.addRun(hyperlinkRun);

para.addFootnoteReference(note);

document.write(new FileOutputStream(new File("fuck.docx")));
document.close();
}
}
Мы выяснили, что проблема в том, что внутри .docx отсутствует этот файл: word/_rels/footnotes.xml.rels. Он должен содержать следующий XML: Если я добавлю это, Word откроет документ.
Большой вопрос: почему Apache POI не добавляет этот файл? Что я могу сделать, чтобы он добавил файл с правильным содержимым? (Я пробовал Apache POI 5.2.5 и 5.5.1, результат тот же.)

Подробнее здесь: https://stackoverflow.com/questions/798 ... apache-poi
Ответить

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

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

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

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

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