1

これに光を当てることができる人がいることを願っています。[SERIALIZE]オプションを指定してPDFBOXを再コンパイルする必要があるようです。しかし、私にはその方法がわかりません。

私がやろうとしているのは、PDDocumentdocオブジェクトをデータベース内に保存することです。

エラー:アセンブリ'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;
    }

ありがとう、ギャビン

4

1 に答える 1

0

PDFBox を完全にシリアライズ可能なライブラリに簡単に変換できるとは思えません。

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

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

したがって、PDF ドキュメントへの保存/PDF ドキュメントからの読み取りによって (逆) シリアル化するカスタムPDDocumentシリアル化手法を使用するためのラッパー クラスを作成することができます。

于 2015-04-28T07:46:36.737 に答える