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