1

我希望有人能对此有所了解。看来我需要使用 [SERIALIZE] 选项重新编译 PDFBOX。但我不知道该怎么做。

我想要做的是将 PDDocument 文档对象存储在数据库中。

错误:在程序集“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实例!使用内存流这不需要实际的文件系统文件。

因此,您可能希望创建一个包装类来PDDocument使用自定义序列化技术,该技术通过保存到 PDF 文档/从 PDF 文档读取来进行(反)序列化。

于 2015-04-28T07:46:36.737 回答