代码之家  ›  专栏  ›  技术社区  ›  Darin Dimitrov

使用iTextSharp将HTML转换为PDF时的绝对位置

  •  3
  • Darin Dimitrov  · 技术社区  · 17 年前

    我正在使用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");
        }
    }        
    

    编辑:

    Flying Saucer 它处理复杂的HTML文档。所以我试着用它来 IKVM 而且效果很好。唯一的问题是,这似乎是一个肮脏的解决方案。为HTML到PDF转换添加31MB的汇编代码似乎相当多。是否有更好的“免费”替代方案来处理这种情况。

    3 回复  |  直到 17 年前
        1
  •  2
  •   Darin Dimitrov    16 年前

    我最终决定使用 xhtmlrenderer . 它非常适合我的需要,它有许多功能,并且能够正确地呈现我的任何HTML文件。

    由于目前它只有一个JAVA版本,我不得不将JAR转换成一个.NET程序集,并使用 IKVM .

        2
  •  0
  •   Matthew Lock fge    16 年前

    假设您使用的是Windows,那么将免费软件自动化如何 PDFCreator 通过COM或命令行通过Internet Explorer的渲染引擎将HTML渲染为PDF?

        3
  •  0
  •   Moo Moo    16 年前

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

    而这只是执行:

    `ITextRenderer toRender = new ITextRenderer();`
    

    这似乎是飞碟使用的主要对象。你能提供一些你如何使用它的来源吗?

    推荐文章