我正在使用 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 的汇编代码似乎相当多。有没有更好和“免费”的替代方案来处理这种情况。