繁体   English   中英

我可以将现有的iTextSharp文档转换为字节数组吗

[英]Can I convert a pre-existing iTextSharp Document to a byte array

有多种解决方案可用于创建iTextSharp文档,然后返回与该文档的创建相关联的内存流对象,但是有没有办法将先前存在的iTextSharp文档转换为内存流或字节数组?

// convert the PDF Document to a byte array 
public byte[] ToByte (Document pdf_doc)
{
    byte[] rtn_array = null;
    **// what goes here, something using PdfReader ???**
    return rtn_array;
}

有没有办法将现有的iTextSharp文档转换为内存流或字节数组?

没有。

在版本7之前的iText(Sharp)的体系结构中, Document是一个仅有的外观类,它知道一些格式设置信息(默认页面大小,边距等),并且可以为其提供抽象的文档部分(段落,表格等),它转发给已注册的侦听器类,这些类使它们成为输出格式的实体,并将它们写出到流中,并立即几乎忘记了它们。

(在版本5之前,iText发行版还包含用于创建RTF的类!但是即使对于版本5.x,您也可以注册自己的侦听器,以将抽象文档部分转换为您选择的内容。)

因此,有效地序列化和反序列化iText Document (如果可能)只能恢复某些抽象文档格式,而不能恢复任何具体内容。 但是,即使那样也不被支持。


与带有Document类的库将整个内容的模型保存在内存中相比,iText专为高吞吐量,大尺寸,低占用空间的服务器应用程序而设计。

您可以将其与XML DOM与XML SAX之间的区别进行比较。 可以将iText与SAX(或StAX)进行比较,在SAX(或StAX)中,库仅了解很少的文档,而DOM在内存中具有完整的文档表示形式。


你能做什么,当然是有登记的PdfWriter写入一个MemoryStream ,你以后可以通过阅读PdfReader ,并通过操纵PdfStamper 但是我认为那不是您的想法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM