Pregunta

Estoy utilizando iTextSharp para convertir HTML a PDF y no parece que trabajar con los elementos con posición absoluta. Por ejemplo, tengo este archivo HTML:

<html>
<body>
    <p style="position: absolute; left: 10px; top: 100px; width: 50px;">Hello World</p>
</body>
</html>

El texto no está colocado correctamente en el archivo PDF resultante. ¿Sabe usted si es posible tener elementos con posición absoluta al convertir HTML a PDF? Cualquier solución libre (iTextSharp u otros) que permite esto sería muy apreciado.

Este es el código que estoy utilizando para realizar la conversión con 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:

Después de investigaciones adicionales, parece que el HTML de iTextSharp a la capacidad de conversión de PDF se limita a algunos documentos HTML muy simples. Hay un proyecto Java agradable llamado platillo volante que se ocupa de los documentos HTML complejas. Así que traté de usarlo con IKVM y funcionó muy bien. El único problema es que se siente de alguna manera una solución sucia. La adición de 31 MB de código ensamblador para HTML a la conversión de PDF parece bastante mucho. ¿Hay alternativas mejores y "libres" para manejar esta situación.

¿Fue útil?

Solución

Finalmente decidí usar xhtmlrenderer . Se adapta perfectamente a mis necesidades, tiene muchas características y que era capaz de procesar correctamente cualquiera de mis archivos HTML.

A medida que actualmente sólo tiene una versión de Java que tenía que convertir los frascos en un ensamblado de .NET con IKVM .

Otros consejos

Suponiendo que usted está en Windows, ¿qué hay de la automatización de la PDFCreator través de COM o la línea de comandos para representar HTML a PDF a través del motor de renderizado de Internet Explorer?

Hay un montón de ejemplos de automatización en el directorio C: \ Archivos de programa \ PDFCreator \ COM \ carpeta cuando está instalado PDFCreator

El uso de ikvmc en los frascos en la distribución binaria me mostró un montón de advertencias de clases que no se podrían hacer. Después de incluir las bibliotecas del núcleo de iKVM que lidiar con el hecho de que platillo volante se dirige a objetos Java, me encontré con la siguiente excepción:

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

y eso fue sólo de ejecución:

`ITextRenderer toRender = new ITextRenderer();`

Lo que parece ser el principal objeto utilizado por platillo volante. ¿Puede proporcionar alguna fuente para saber cómo lo utilizó?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top