使用最新版本将iText XML转换为PDF

Joh*_*n C 6 itext itextsharp

我找到了一些示例,展示了如何使用iText XML文档将XML用于PDF.但它们都是旧版本4.x. 是否有任何示例或有人发布所需/更新代码的示例以在5.x版中执行相同操作?

所有示例都引用了这样的代码,但是在新版本中我无法找到用于替换ITextHandler类的内容.
http://www.ridgway.co.za/archive/2005/07/31/itextsharpxmltopdfexample.aspx

Document document = new Document();
PdfWriter.GetInstance(document, new FileStream("ExampleDoc.pdf", FileMode.Create));
ITextHandler xmlHandler = new ITextHandler(document);
xmlHandler.Parse("ExampleDoc.xml");
Run Code Online (Sandbox Code Playgroud)

另外,我不是想从HTML转到PDF.CSS样式永远不会像预期的那样出现.

编辑以提高它,真的需要一些帮助.有人吗?

Chr*_*aas 3

iText 使用专有语法处理 XML 文件的方式在很久以前就被删除了。请参阅以获取作者的直接答案。相反,我们鼓励您使用全球公认的 XML 标准,即XHTML

我知道您说过您不想使用 HTML,因为它永远不会正确显示,但也许您可以发布一些您正在尝试的示例,我们可以提供帮助。另外,请确保您使用的是 XMLWorker 而不是 HTMLWorker。使用时请参阅这些链接以获取更多帮助/信息。

编辑

此编辑是为了回答 @JohnC 的评论

我不能代表 iText 团队及其理由发言,但我可以猜测一些事情。PDF 没有“段落”、“单词”、“表格”等。相反,PDF 有文本、绘图(线条、图案)和图像。如果您想手动执行这些操作,您可以使用原始PdfContentByte对象。但是,我们鼓励您使用 iText 的抽象,例如ParagraphPdfPTable,它们PdfContentByte代表您使用 。

为了让 iText 支持 XML 格式,它需要首先创建自己专有的 DTD 和/或 XML 架构。如果添加任何功能,则需要正确对模式进行版本控制,这可能会给消费者带来问题和困惑。然后需要构建/维护一个解析器,将 XML 抽象转换为 iText 抽象或原始 PDF 命令。对于前者,你有一个抽象与一个正在乞求打破的抽象进行对话。对于后者,您现在有两个抽象实现,最终将遇到功能奇偶校验问题。

此外,XML 代表什么?段落、文本块、图像和表格?听起来已经像 HTML,所以不需要重复这种模式。或者是“使用字体 ABC 将内容 Z 放在坐标 X,Y 处”?这就是它的用武之地PdfContentByte。确实,可能有一个本地解析器,但我猜没有太多人需要一个。或者 XML 是否会是您自己的基于您自己的数据的格式,例如<book><inventory>?如果是这样的话,那么 iText 也真的不知道如何设置样式。但是,您可以利用 .Net/Java 和 XSLT 将 XML 转换为它所识别的 XHTML 命令。