Абсолютная позиция при преобразовании HTML в PDF с помощью iTextSharp

StackOverflow https://stackoverflow.com/questions/713961

  •  23-08-2019
  •  | 
  •  

Вопрос

Я использую iTextSharp для преобразования HTML в PDF, и, похоже, он не работает с абсолютно расположенными элементами.Например, у меня есть этот HTML-файл:

<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");
    }
}        

Редактировать:

После дальнейшего изучения выясняется, что возможности преобразования HTML iTextSharp в PDF ограничены некоторыми очень простыми HTML-документами.Есть хороший Java-проект под названием Летающая тарелка который обрабатывает сложные HTML-документы.Поэтому я попробовал использовать его с IKVM и это сработало очень хорошо.Единственная проблема в том, что это кажется каким-то грязным решением.Добавление 31 МБ ассемблерного кода для преобразования HTML в PDF кажется довольно большим.Существуют ли какие-либо лучшие и "бесплатные" альтернативы для обработки этого сценария?

Это было полезно?

Решение

Я, наконец, решил использовать xhtmlrenderer ( редактор xhtml ).Он идеально соответствует моим потребностям, у него много функций, и он смог корректно отобразить любой из моих HTML-файлов.

Поскольку в настоящее время у него есть только версия JAVA, мне пришлось преобразовать jars в сборку .NET с IKVM.

Другие советы

Предполагая, что вы используете Windows, как насчет автоматизации бесплатного PDFCreator - создатель через COM или командную строку для рендеринга HTML в PDF через механизм рендеринга Internet Explorer?

В папке Files\PDFCreator\COM\ есть множество примеров автоматизации при установке PDFCreator. C:\Program Файлы\PDFCreator\COM\

Использование ikvmc в JARS в двоичном дистрибутиве показало мне множество предупреждений от классов, которые не могли быть сделаны.После включения библиотек iKVM core, чтобы справиться с тем фактом, что Flying Saucer нацелена на объекты Java, я столкнулся со следующим исключением:

`Cannot load AWT toolkit: ikvm.awt.NetToolkit, IKVM.AWT.WinForms, Version=0.40.0.1, Culture=neutral, PublicKeyToken=13235d27fcbfff58`

и это было только что от исполнения:

`ITextRenderer toRender = new ITextRenderer();`

Который, по-видимому, является основным объектом, используемым Летающей тарелкой.Можете ли вы предоставить какой-нибудь источник о том, как вы его использовали?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top