2017-10-09 3 views
0

PDFボックスを使用してユニコードテキストファイルをPDFに変換しようとしています。PDFボックスがゼロビットを作成するPDF

タスク: 私のメソッドは、ユニコードでエンコードされたTextFileを入力として取り込み、PDFファイルを出力します。

問題: 作成されるPDFのバイト数はゼロです。何も書いていません。これは

public class TexttoPDF { 

    public File texttoPDF(File textFile) throws Exception { 

     PDDocument document = new PDDocument(); 
     PDPage blankPage = new PDPage(); 
     PDFont font = PDType1Font.TIMES_ROMAN; 
     PDPageContentStream contentStream = new PDPageContentStream(document, blankPage); 




     BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(textFile), "UTF8")); 


     String str; 
     contentStream.beginText(); 
     contentStream.setFont(font, 12); 
     contentStream.moveTextPositionByAmount(100, 700); 


     while ((str = in.readLine()) != null) { 
      contentStream.drawString(str); 


     } 


     contentStream.endText(); 

     document.save(pdffile.getName()); 
     contentStream.close(); 
     document.close(); 
     in.close(); 



    return pdffile; 

    } 
} 

を固定することができます方法:

私はこれが私のコードである のApache PDFBox 2.0.6

を使用していますか?

答えて

0

保存する前に、保存する前にコンテンツストリームを閉じてください。だから、

new PDPage()を呼び出した後、ドキュメントにページを追加(これはdescribed in the FAQある)

contentStream.close(); 
    document.save(pdffile.getName()); 

document.save(pdffile.getName()); 
    contentStream.close(); 

を変更:

document.addPage(blankPage); 
+0

は、それは問題を解決しました。ただし、PDFに書き込まれるのは1行だけです。 –

+0

はい、それは別の問題です。呼び出しの間に 'contentStream.moveTextPositionByAmount(0、-24);を呼び出す必要があります。自分でページの変更を処理する必要があることに注意してください。ソース・ダウンロードのTextToPDF.javaを参照してください。 –