ben soyut bir yöntem beraberlik (Graphics2D g2) ile soyut bir sınıf var ve yöntemler baskı nasıl oluşturulur(), showPreview(), printPDF(). Java programımdaki her bir belge için draw() uygularım, böylece her bir belge için baskı yapabilir, önizleme yapabilir ve bir PDF dosyası oluşturabilirim. Sorunum, o Graphics nesnesinden birden fazla sayfa içeren bir PDF oluşturma. Her sayfa için bir PDF dosyası oluşturarak çözdüm ve dosyaları yeni bir dosyaya birleştir. Ama daha iyi bir yol olmalı. Yani tüm arayüz N kez render ediyoruzbir Java ile Grafik nesneden birden fazla sayfa ile PDF ve iText
public void printPDF1(){
JFileChooser dialog = new JFileChooser();
String filePath = "";
int dialogResult = dialog.showSaveDialog(null);
if (dialogResult==JFileChooser.APPROVE_OPTION){
filePath = dialog.getSelectedFile().getPath();
}
else return;
try {
Document document = new Document(new Rectangle(_pageWidth, _pageHeight));
PdfWriter writer = PdfWriter.getInstance(document,
new FileOutputStream(filePath));
document.open();
PdfContentByte cb = writer.getDirectContent();
g2 = cb.createGraphics(_pageWidth, _height);
g2.translate(0, (_numberOfPages - _pageNumber) * _pageHeight);
draw(g2);
g2.dispose();
document.close();
}
catch (Exception e2) {
System.out.println(e2.getMessage());
}
}
Çok teşekkürler, aşağıdaki değişikliklerle çalışır. – Jan
Hangi değişiklikler? Not: Bu, doğru cevabın yanındaki diğer onay işaretlerini tıklattığınız, diğer kişilerin kimlerin doğru olduğunu bilmesini sağlayan (ve bu kişiye bir itibar kazandıran) kısımdır. Bu durumda "Ben". Ayrıca, birden fazla soru soruyor ve yanıtlamalarını hiçbir zaman işaretlemezseniz, diğer kişiler, yanlış yanıtlanmış yüzdesini görecekler ve haklı olduklarında bile onlara rötuş yapamayacağınızı bildiğinden daha az rahatsızlık duyacaklardır. –
Üzgünüz Mark, Bu web sitesinin nasıl çalıştığını anlamaya çalışıyorum. PdfContentByte'ın her sayfa için yeniden kullanılabileceğini anlayamadım. thes değişiklik yapılmış: PdfTemplate şablonu = cb.createTemplate (_pageWidth, entireHeight); g2 = template.createGraphics (_pageWidth, entireHeight); ..... (int curPg = 1; curPg <= _numberOfPages; ++ curPg) { cb.addTemplate (hugeTempl, 0, -_pageHeight * (_numberOfPages - curPg)); document.newPage(); } – Jan