5

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

编辑:

经过进一步调查,似乎 iTextSharp 的 HTML 到 PDF 的转换功能仅限于一些非常简单的 HTML 文档。有一个很好的 Java 项目叫做Flying Saucer,它可以处理复杂的 HTML 文档。所以我尝试将它与IKVM一起使用,效果非常好。唯一的问题是它在某种程度上感觉是一个肮脏的解决方案。为 HTML 到 PDF 的转换添加 31MB 的汇编代码似乎相当多。有没有更好和“免费”的替代方案来处理这种情况。

4

3 回答 3

2

我最终决定使用xhtmlrenderer。它完全符合我的需求,它具有许多功能,并且能够正确呈现我的任何 HTML 文件。

由于目前它只有一个 JAVA 版本,因此我必须使用IKVM将 jar 转换为 .NET 程序集。

于 2009-07-08T05:14:39.533 回答
0

假设您在 Windows 上,如何通过 COM 或命令行自动化免费的PDFCreator以通过 Internet Explorer 的渲染引擎将 HTML 渲染为 PDF?

安装 PDFCreator 后,C:\Program Files\PDFCreator\COM\ 文件夹中有很多自动化示例

于 2009-07-08T02:31:23.020 回答
0

在二进制发行版中的 JAR 上使用 ikvmc 向我展示了许多来自无法生成的类的警告。在包含 iKVM 核心库以处理 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();`

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

于 2009-08-07T11:07:10.130 回答