[英]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.