2017-08-30 33 views
0

メモリにPDF文書を作成する必要があります。私はpdfboxを使用しています。メモリにPDF文書を作成する

これは私のコードですが、ディスク上にドキュメントを作成します。 M.Prokhorov @として

public PDDocument generatePDF(String name, String v1, String v2, String v3, String v4) { 
     PDPageContentStream contentStream = null; 
     PDDocument document = null; 
     try { 
      document = new PDDocument(); 
      PDPage page = new PDPage(); 
      document.addPage(page); 
      contentStream = new PDPageContentStream(document, page); 


      fillDataInPDF(...); 
      corpPDF(page); 
     } catch (IOException err) { 
      LOG.error("Error occured ."); 
     } finally { 
      if (contentStream != null) { 
       try { 
        contentStream.close(); 
       } catch (IOException e) { 
        LOG.error("Error occured ."); 
       } 
      } 
     } 
     return document; 
    } 
+0

私はそれをメモリに作成するというあなたの願いを認めます。あなたはそれを実際にやったことがあるのですか? –

+0

私はディスク上に作成した、メモリ内での処理方法を知らない。 – singhal

+2

コードサンプルにディスク上に作成されたことが示唆されるものは何もありません。 –

答えて

0

はすでにあなたの質問にコメントで述べ、は、それがディスク上に作成されたことを示唆しているあなたのコードサンプルでは何もありません。特に、あなたがここに

document = new PDDocument(); 

を使用PDDocumentコンストラクタが限定されるものではないが、メイン・メモリ(なしの一時ファイル)を使用するだけに

document = new PDDocument(MemoryUsageSetting.setupMainMemoryOnly()); 

セットアップの短い形式バッファメモリ使用量でありますサイズ。

したがって、ファイルに書き込むfillDataInPDFまたはcorpPDFに隠されているものがない限り、あなたのメソッドは純粋にメモリ内にPDFオブジェクトモデルを作成します。

私はあなたがそのような明白なファイル書き込みを隠されているだろうとしないので、文書をディスク上に作成されていることをあなたの主張は、最も可能性が高いことディスクにPDFファイルとしてそのモデルをシリアライズgeneratePDFあなたのメソッドの呼び出し元、を意味します例えばこのような

PDDocument doc = generatePDF(name, v1, v2, v3, v4); 
doc.save("SOME_FILE_PATH_ON_DISC"); 

@TilmanHausherrあなたはByteArrayOutputStreamにあなたのPDFファイルを保存することができますし、1つは、バイト配列に、例えば変換することができ指摘したように上記の代わりに

PDDocument doc = generatePDF(name, v1, v2, v3, v4); 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
doc.save(baos); 
byte[] pdfBytes = baos.toByteArray(); 

を使用する必要があります。また、シリアル化されたPDFファイルもメモリに保存してください。

関連する問題