2013-04-28 56 views
1

我有一個jscrollpane內的jpanel,我想將所有內容jpanel(其中包括一些labeltextarea)導出爲pdf格式。目前我使用一個jbutton此代碼:如何將可滾動jpanel保存爲pdf或任何格式

Document document = new Document(PageSize.A4.rotate(),50,50,50,50); 
try { 
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("C:\\Users\\Admin\\Desktop\\test1.pdf")); 
document.open(); 
PdfContentByte contentByte = writer.getDirectContent(); 
//jp is the jpanel 
PdfTemplate template = contentByte.createTemplate(jp.getWidth(), jp.getHeight()); 
Graphics2D g2 = template.createGraphics(jp.getWidth(),jp.getHeight()); 
g2.scale(0.8, 1); 
     jp.printAll(g2); // also tried with jp.paint(g2), same result 
     g2.dispose(); 

     //document.close(); 
contentByte.addTemplate(template, 5, 60); 
} catch (Exception e) { 
e.printStackTrace(); 
} 
finally{ 
if(document.isOpen()){ 
    document.close(); 
} 

} 

輸出:我在PDF得到的jpanel下部...(我做了JPanel的sanpshot但我的名譽不允許張貼圖片),上半部分被丟棄。我認爲最後一部分正在使用單頁進行導出。第一部分是寫完(這只是一個猜測!) 爲了查看整個jpanel我們需要滾動...如何將整個面板(從上到下)導出到多個頁面作爲jpanel的高度是超過A4頁面。請幫助。提前致謝。

注:我使用netbeans來開發我的gui和itextpdf-5.4.1。我是一個java編程的初學者。

回答

0

您需要關閉PrintWriter,也嘗試加入信息addNotify,驗證

jp.addNotify(); 
jp.setSize(); 
jp.validate();