Как я могу использовать iText для преобразования HTML с изображениями и гиперссылками в PDF?
Я пытаюсь конвертироватьHTML
вPDF
используя iTextSharp вASP.NET
веб-приложение, которое использует обаMVC, а также веб-формы,<img>
а также<a>
элементы имеют абсолютное иродственник URL-адреса и некоторые из<img>
элементыbase64, Типичные ответы здесь в SO и результатах поиска Google используют общиеHTML
вPDF
код сXMLWorkerHelper
это выглядит примерно так:
using (var stringReader = new StringReader(xHtml))
{
using (Document document = new Document())
{
PdfWriter writer = PdfWriter.GetInstance(document, stream);
document.Open();
XMLWorkerHelper.GetInstance().ParseXHtml(
writer, document, stringReader
);
}
}
Так с образцомHTML
как это:
<div>
<h3>HTML Works, but Broken in Converted PDF</h3>
<div>Relative local <img>: <img src='./../content/images/kuujinbo_320-30.gif' /></div>
<div>
Base64 <img>:
<img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==' />
</div>
<div><a href='/somePage.html'>Relative local hyperlink, broken in PDF</a></div>
<div>
Полученный PDF:(1) отсутствует все изображения, и(2) все гиперссылки с относительными URL не работают и используютсхема URI файла (file///XXX...
) вместо того, чтобы указывать на правильный веб-сайт.
Некоторые ответы здесь в SO и другие из поиска Google рекомендуют заменять относительные URL-адреса абсолютными URL-адресами, чтовполне приемлемо для разовых случаев. Тем не менее, глобально заменяя все<img src>
а также<a href>
атрибуты с жестко закодированной строкойнеприемлемый на этот вопрос, поэтому, пожалуйста, не размещайте ответ, подобный этому, потому что он будет соответственно понижен.
Ищу решение, которое работает длямного различные веб-приложения, находящиеся в среде тестирования, разработки и производства.