2010-12-06 32 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; 
    } 

私はPDFBoxは完全に、シリアライズライブラリーに変身するのは簡単です疑う、 ギャビン

+0

本当にシリアル化されたドキュメントオブジェクトが必要ですか?なぜPDFを生成してデータベースにthtatを格納しないのですか? –

答えて

0

、ありがとうございました。

いくつかのオプションを追加するだけでは不十分です。そのクラスの多くは単純ですが、実際の内容を保持する一時ファイル(「スクラッチファイル」)を参照するクラスもあります。したがって、これらのクラスではカスタムシリアル化コードが必要になります。

PDDocumentインスタンスで表されるデータをシリアル化してもう一度シリアル化解除する最も自然な方法は、... をPDFドキュメントとして保存し、PDDocumentインスタンスに読み込みます。メモリストリームを使用すると、実際のファイルシステムファイルは必要ありません。

したがって、PDF文書に保存/読み込みすることによって(非)シリアライズするCustom Serialization技術を使用してPDDocumentのラッパークラスを作成することができます。

関連する問題