2010-12-06 8 views
1

일부는이 점을 밝힐 수 있기를 바랍니다. [SERIALIZE] 옵션을 사용하여 PDFBOX를 다시 컴파일해야합니다. 그러나 나는 어떻게해야할지 모른다.PDFBOX.net PDDocument 객체를 데이터베이스/직렬화로 변환

내가하려는 것은 데이터베이스 내에 PDDocument doc 객체를 저장하는 것입니다.

오류 : 'PDFBox, 버전 = 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

, 감사합니다.

몇 가지 옵션을 추가하는 것만으로는 충분하지 않습니다. 많은 클래스가 충분히 간단하지만 다른 사람들은 실제 내용을 담고있는 임시 파일 ("스크래치 파일")을 참조합니다. 따라서 이러한 클래스에는 사용자 지정 serialization 코드가 필요합니다.

PDDocument 인스턴스로 표현되는 데이터를 직렬화하는 가장 자연스러운 방법 PDF 문서로 ... 다시하는 것입니다 그것을 저장 을 드 직렬화와 PDDocument 인스턴스로 해당 문서를 읽어! 메모리 스트림을 사용하면 실제 파일 시스템 파일이 필요하지 않습니다.

따라서 PDF 문서에 저장/읽음으로써 (비 직렬화) 기술을 사용하여 PDDocument에 대한 래퍼 클래스를 만들 수 있습니다. Custom Serialization