Пожалуйста, взгляните на пример AddLinkImages. Сначала я планировал использовать только файлы WMF (согласно вашему запросу), но я не нашел их, поэтому я использовал PNG, некоторые BMP и один WMP.
Вы хотите, чтобы эти изображения добавлялись точно так же, как и любой другой объект, но вы также хотите добавить к ним действие. Этого можно добиться, чтобы обернуть изображение внутри Chunk
, как описано в главе 2 моей книги. Если у вас есть Chunk
, вы можете определить PdfAction
, что будет срабатывать, когда кусок (или в данном случае изображение завернутые в кусок) щелкают:
public Chunk createImage(String src, String url) throws BadElementException, IOException {
Image img = Image.getInstance(src);
Chunk chunk = new Chunk(img, 0, 0, true);
chunk.setAction(new PdfAction(url));
return chunk;
}
Обратите внимание, что я установить параметр changeLeading
в true
, Если я этого не сделаю, начало абзаца станет ведущим текстом, а изображения обычно больше, что приведет к перекрытию текста и изображений. Установив changeLeading
на true
, ведущие адаптируются к высоте изображений.
public void createPdf(String dest) throws IOException, DocumentException {
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(dest));
document.open();
PdfContentByte cb = writer.getDirectContent();
document.add(new Paragraph("Objects with links"));
Paragraph p = new Paragraph();
p.add(createImage("resources/images/info.png", "http://itextpdf.com/"));
p.add(createImage("resources/images/dog.bmp", "http://pages.itextpdf.com/ebook-stackoverflow-questions.html"));
p.add(createImage("resources/images/fox.bmp", "http://stackoverflow.com/q/29388313/1622493"));
p.add(createImage("resources/images/butterfly.wmf", "http://stackoverflow.com/questions/tagged/itext*"));
document.add(p);
document.close();
}
Вы можете уточнить? О каких действиях PDF мы говорим и что может вызвать эти действия? Прямо сейчас, ваш вопрос звучит как дубликат http://stackoverflow.com/questions/27083206/itextshape-clickable-polygon-or-path, но я не голосовал, чтобы закрыть вопрос, потому что я не уверен. Если это дубликат, у вас есть свой ответ. Если это не так, объясните, почему нет. –
Это похоже на шаг в правильном направлении. То, что я хочу сделать, это иметь UML-диаграммы в документе. Им нужно «плавать», а не находиться на абсолютных позициях страницы. Я хочу, чтобы иметь возможность щелкнуть прямоугольник, представляющий класс, и выполнить действие, например, страницу goto, где задан класс, или, возможно, добавить аннотацию к описанию. Похоже, пример, на который вы ссылаетесь, ставит многоугольник в фиксированное место. –
В PDF нет такой вещи, как плавающие изображения. Изображения всегда добавляются в абсолютные позиции. Вы уверены, что не говорите об аннотациях? Если бы я был вами, я бы работал с квадратными аннотациями. –