2010-12-06 99 views
1

我希望有人能夠對此有所瞭解。看起來我需要用[SERIALIZE]選項重新編譯PDFBOX。但我不知道如何。PDFBOX.net將PDDocument對象轉換爲數據庫/序列化

我想要做的是將PDDocument doc對象存儲在數據庫中。

錯誤:在程序集'PDFBox,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = null'中鍵入'org.apache.pdfbox.pdmodel.PDDocument'未標記爲可序列化。

PDDocument doc = (PDDocument)documents.get(d); 

    string str = ConvertForWrite(doc); 

    /// Convert any object into a string which can be store in a database 
    public string ConvertForWrite(object obj) 
    { 
     MemoryStream memoryStream = new MemoryStream(); 
     BinaryFormatter binaryFormatter = new BinaryFormatter(); 
     binaryFormatter.Serialize(memoryStream, obj); 
     string str = System.Convert.ToBase64String(memoryStream.ToArray()); 
     return str; 
    } 

謝謝 加文

+0

你真的需要序列化的文檔對象嗎?爲什麼不生成PDF並將其存儲在數據庫中? – 2015-04-28 08:28:39

回答

0

我懷疑PDFBox的很容易轉變成一個完全可序列化庫。

簡單地添加一些選項是不夠的:雖然其中很多類都足夠簡單,但其他人引用臨時文件(「臨時文件」)來承載其實際內容。因此,自定義序列化代碼在這些類中是必需的。

最自然的方式由PDDocument實例和序列化表示的數據解序列再次這將是... 保存爲PDF文件和閱讀文檔轉換爲PDDocument實例!使用內存流這不需要實際的文件系統文件。

因此,您可能想要使用Custom Serialization技術創建PDDocument的包裝類,這些技術通過保存到/從PDF文檔讀取序列化(解除)序列化。