2017-10-09 108 views
0

我想將一個unicode文本文件轉換爲PDF使用PDF框。PDF盒創建ZeroByte PDF

任務: 我的方法採用unicode編碼的TextFile作爲輸入並輸出PDF文件。

問題: 創建的PDF有零字節。它不寫任何東西。

我使用 的Apache PDFBox的2.0.6

這是我的代碼:

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; 

    } 
} 

這可怎麼固定?

回答

0

保存之前關閉您的內容流,而不是保存之後。因此,改變

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

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

(這是described in the FAQ

還呼籲new PDPage()後的頁面添加到您的文檔:

document.addPage(blankPage); 
+0

它解決了這個問題。但是隻有一行寫入PDF。 –

+0

是的,這是一個不同的問題。你需要在調用之間調用'contentStream.moveTextPositionByAmount(0,-24);'。請注意,您必須自行處理頁面更改。請參閱源下載中的TextToPDF.java。 –