iTextSharp 如何使用 XML 解析包含 GenericTag

发布于 2024-11-02 20:56:19 字数 432 浏览 4 评论 0原文

我正在使用 iTextSharp 库,专门用于查看 .xml 文档并将其转换为 .pdf 文件,如下所示:

var docWriter = PdfWriter.GetInstance(document, new FileStream("DOC.pdf", FileMode.Create));

ITextHandler xmlHandler = new ITextHandler(文档);

xmlHandler.Parse("MLDOC.xml");

我需要知道是否有任何方法可以在 .xml 文件中的标签中包含任何属性以表明它们是 GenericTag,或者如何识别包含 PdfAnnotation 的段落。 我尝试订阅事件 OnGenericTag,但使用 XML 解析器: xmlHandler.Parse("MLDOC.xml");,此方法从未执行

谢谢!

I'm using iTextSharp library, specifically to view .xml documents and transform them into .pdf files as follows:

var docWriter = PdfWriter.GetInstance(document, new FileStream("DOC.pdf", FileMode.Create));

ITextHandler xmlHandler = new ITextHandler(document);

xmlHandler.Parse("MLDOC.xml");

I need to know if there is any way to include any attribute within the tags in my .xml file to indicate that they are GenericTag, or otherwise how I can identify a paragraph which I include a PdfAnnotation for example.
I've tried to subscribe to the event OnGenericTag, but using the XML parser: xmlHandler.Parse("MLDOC.xml");, this method is never executed

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

幼儿园老大 2024-11-09 20:56:19

您使用的是旧版本的 iText。我强烈建议您获取更新的版本...如果您对 AGPL 满意,则可以使用 5.0 后的版本;如果您愿意坚持使用 LGPL/MPL,则可以使用之前的版本 (4.2 IIRC)。

不再有 iTextHandler 类了。

在 iText 调用 OnGenericTag 处理程序之前,您需要将通用标签添加到创建的 iText 元素中。

我认为做到这一点的唯一方法是更改​​源。对于 HTMLWorker,您必须更改 FactoryProperties,以便它会查找您为通用标记的值引入的一些神奇属性。

在 5.0.6 iTextSharp 源代码中,您似乎想要修改 ElementFactory.CreateChunk(),并插入类似以下内容:

if (chain.HasProperty(MY_MAGIC_PROPERTY)) {
  ck.setGenericTag( chain[MY_MAGIC_PROPERTY] );
}

问题:ChainedProperties 传播到其子节点。如果您使用通用标签来标记表,则该表中的每个块都会具有该标签。可能不是你想要的。
}

You're using an Old version of iText. I strongly recommend you get a more recent version... A post-5.0 release if you're okay with the AGPL, something prior (4.2 IIRC) if you'd rather stick with LGPL/MPL.

There ISN'T an iTextHandler class anymore.

You need to add the generic tags to the iText elements as they're created before iText will call your OnGenericTag handler.

The only way I can think to do this would be to Change The Source. For HTMLWorker, you'd have to change FactoryProperties so it'd look for some magic attributes you'd introduce for the generic tag's value.

In the 5.0.6 iTextSharp source, it looks like you'd want to modify ElementFactory.CreateChunk(), and insert something like:

if (chain.HasProperty(MY_MAGIC_PROPERTY)) {
  ck.setGenericTag( chain[MY_MAGIC_PROPERTY] );
}

Issue: ChainedProperties propagate to their child nodes. If you tagged a table with a generic tag, EVER CHUNK IN THAT TABLE would have that tag. Probably not what you want.
}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文