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

时间:2013-12-18 23:28:02

标签: itextsharp itext

我找到了一些示例,展示了如何使用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");

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

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

1 个答案:

答案 0 :(得分:3)

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

我知道你说你不想使用HTML,因为它从来没有正确出现过,但也许你可以发布一些你正在尝试的样本,我们可以提供帮助。另外,请确保您使用的是XMLWorker而不是HTMLWorker。使用时请参阅这些链接以获取更多帮助/信息。

修改

此编辑符合@ JohnC的评论

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

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

此外,XML代表什么?段落,文本块,图像和表格?听起来像HTML已经没有必要重复那种架构了。或者它是“将内容Z放在坐标X,Y使用字体ABC”?这就是PdfContentByte进来的地方。的确,可能有一个本地解析器,但我猜这里没有太多人要求一个。或者,基于您自己的数据(例如<book><inventory>),XML是您自己的格式吗?如果是这样的话,那么iText真的不知道如何设计风格。但是,您可以使用杠杆.Net / Java和XSLT将XML转换为它知道的XHTML命令。