Я использую iTextSharp для преобразования HTML в PDF и, похоже, не работает с абсолютно позиционируемыми элементами. Например, у меня есть этот файл HTML:Абсолютное положение при преобразовании HTML в PDF с iTextSharp
<html>
<body>
<p style="position: absolute; left: 10px; top: 100px; width: 50px;">Hello World</p>
</body>
</html>
Текст помещен неправильно в полученный файл PDF. Вы знаете, возможно ли иметь абсолютно позиционированные элементы при конвертации HTML в PDF? Любое бесплатное решение (iTextSharp или другое), которое позволяет это, будет с благодарностью оценено.
Вот код, я использую, чтобы выполнить преобразование с iTextSharp:
class Program
{
static void Main(string[] args)
{
Document document = new Document(PageSize.A4);
using (Stream output = new FileStream("out.pdf", FileMode.Create, FileAccess.Write, FileShare.None))
using (Stream htmlStream = new FileStream("input.htm", FileMode.Open, FileAccess.Read, FileShare.Read))
using (XmlTextReader reader = new XmlTextReader(htmlStream))
{
PdfWriter.GetInstance(document, output);
HtmlParser.Parse(document, reader);
}
Process.Start(@"C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe", "out.pdf");
}
}
EDIT:
После дальнейшего исследования, кажется, что HTML iTextSharp к возможности преобразования PDF ограничен некоторыми очень простые HTML-документы. Есть хороший Java-проект под названием Flying Saucer, который обрабатывает сложные HTML-документы. Поэтому я попытался использовать его с IKVM, и он работал очень хорошо. Единственная проблема заключается в том, что она чувствует себя как-то грязное решение. Добавление 31 МБ кода сборки для преобразования HTML в PDF кажется довольно много. Существуют ли лучшие и «свободные» альтернативы для обработки этого сценария.
Это похоже на решение проблемы, с которой я столкнулся в данный момент. Насколько сложно конвертировать JAR в DLL с помощью IKVM, и возникают ли у вас проблемы? – TonE
Преобразование JAR в DLL - это простой вопрос использования ikvmc.exe в командной строке. У меня не было никаких проблем, и уже более двух месяцев этот компонент работает в производстве без единого отказа. –
Спасибо, я дам вам попробовать! – TonE