iTextPDF 7 (7.1.5), надстройка pdfHTML. HTML в PDF. URL изображений нет в выводе PDF

#html #pdf #itext7

#HTML #PDF #itext7

Вопрос:

У меня есть HTML-страница с текстом, изображениями, и я конвертирую HTML в PDF. В сгенерированном PDF-файле включенные изображения не отображаются, отображаются только текст и встроенные изображения base64. URL изображений нет.

Если я передам свойство baseUri ConverterProperty типа «D:/HTML/images /», измените URL изображений HTML (XSLT), удалив «http: //» из URL и укажите путь URL в качестве папки в папке базового URI, процесс работает нормально!!!

Пример кода:

 ConverterProperties props = new ConverterProperties();
props.setBaseUri("D:/HTML/images/");
HtmlConverter.convertToPdf(htmlString, dest,props);
  

Наличие тега html img со значением атрибута src:

 http://www.mywebserver.com/gsi/img/logo.jpg
  

Изменено на:

 www.mywebserver.com/gsi/img/logo.jpg
  

Сохранение изображения в:

 D:/HTML/images/www.mywebserver.com/gsi/img/logo.jpg
  

Это работает нормально!!!

Но если я попробую изображения с сервера, например:

 http://www.mywebserver.com/gsi/img/Logo.jpg
  

тогда изображения it нет в выводе PDF.

ПРИМЕЧАНИЕ: Я использую itextpdf 7.1.5 для создания PDF.

Мой простой код:

 HtmlConverter.convertToPdf(htmlString, dest);
  

Журнал моего сервера:

 mar 15, 2019 11:18:27 AM com.itextpdf.styledxmlparser.resolver.resource.ResourceResolver retrieveImageExtended
GRAVE: Unable to retrieve image with given base URI (file:/D:/wlsservermydomain/) and image source path (http://www.mywebserver.com/gsi/img/Logo.jpg)
<15-03-2019 11:18:27 Hora de Chile> <Error> <com.itextpdf.styledxmlparser.resolver.resource.ResourceResolver> <BEA-000000> <Unable to retrieve image with given base URI (file:/D:/wlsservermydomain/) and image source path (http://www.mywebserver.com/gsi/img/Logo.jpg)>
mar 15, 2019 11:18:27 AM com.itextpdf.html2pdf.attach.impl.DefaultHtmlProcessor visit
GRAVE: Worker of type com.itextpdf.html2pdf.attach.impl.tags.TdTagWorker unable to process com.itextpdf.html2pdf.attach.impl.tags.ImgTagWorker
<15-03-2019 11:18:27 Hora de Chile> <Error> <com.itextpdf.html2pdf.attach.impl.DefaultHtmlProcessor> <BEA-000000> <Worker of type com.itextpdf.html2pdf.attach.impl.tags.TdTagWorker unable to process com.itextpdf.html2pdf.attach.impl.tags.ImgTagWorker>
  

Похоже, что iTextPDF ищет изображения в рабочей папке сервера D:wlsservermydomain .

Как мне заставить iText искать изображения в Интернете?

Спасибо!

Комментарии:

1. вы в конечном итоге решили эту проблему

Ответ №1:

Сервер, с которого вы используете изображение, ограничивает загрузку изображения без пользовательского агента браузера, поэтому в pdf изображение не включено.

Попробуйте использовать другой URL изображения, где сервер также разрешает загрузку без пользовательского агента

Например:

 https://images.homedepot-static.com/productImages/e0b36c9f-48c2-4fbd-ace8-3fa0e877aacc/svn/york-wallcoverings-wallpaper-at7053-64_1000.jpg
  

вы получите изображение в своем pdf.

Внутренне itext, использующий url.openStream()) для получения входного потока из import java.net.URL ;