#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
;