У меня проблема с печатью всех элементов моего ArrayList в pdf-файл с помощью PDFbox. Проблема в том, что файл pdf, сгенерированный программой, не содержит всех элементов ArrayList. Я не понимаю, почему это может быть потому, что все элементы ArrayList не помещаются на одной странице, но добавление страниц в pdf не решило проблему. Вот отрывок из моего кода:Получение моего arrraylist в pdf-файл с java
public PDPageContentStream gettextperpage(PDDocument document, PDPageContentStream contentStream, ArrayList<Component> In, int startind) {
int ht=740;
try {
contentStream.beginText();
contentStream.setFont(font, 12);
contentStream.newLineAtOffset(60,ht);
int nbel=0;
if (startind/13==8) {
nbel=8;
}
else {
nbel=13;
}
System.out.println(nbel);
for(int i=0; i<nbel;i++)
{
int ind=startind+i;
Component cp=In.get(ind);
//contentStream.beginText();
contentStream.showText(cp.toString());
contentStream.newLineAtOffset(0,-LINE_HEIGHT-30);
//contentStream.endText();
}
//contentStream.showText("Company:"+_asc +" "+_desc);
contentStream.endText();
for (int i=0; i<13; i++)
{
PDImageXObject pdImage = PDImageXObject.createFromFile("4056182.jpg", document);
contentStream.drawImage(pdImage, 550, ht-40,40,40);
ht-=50;
}
contentStream.close();
}
catch (IOException ex) {
ex.printStackTrace();
}
return contentStream;
}
public void getoutputpdf(PDDocument document,ArrayList<Component> In) {
for (int k=0; k<9; k++) {
try {
System.out.println(k);
// Create a new blank page and add it to the document
PDPage Page = new PDPage();
document.addPage(Page);
// Start a new content stream which will "hold" the to be created content
PDPageContentStream contentStream = new PDPageContentStream(document, Page);
contentStream=gettextperpage(document,contentStream,In,13*k);
// Define a text content stream using the selected font, moving the cursor and drawing the text "Hello World"
// Save the newly created document
document.save("testtot.pdf");
// finally make sure that the document is properly
// closed.
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
Никогда, никогда, ** НИКОГДА ** не называйте 'ArrayList' как List ....' List' - это интерфейс, который реализует 'ArrayList', поэтому то, что вы по существу делаете, путает компилятор, себя и нас именования переменной 'List'. Пожалуйста, переименуйте 'ArrayList' в нечто более актуальное для функциональности кода ... – CraigR8806
Спасибо. Переименовал ArrayList в comp_list, но это не решило проблему. –
Я не говорил, что это решит вашу проблему. Вы пытались написать что-то произвольное в PDF? возможно, просто «Hello World» только для тестирования. Если это работает, ограничьте свой 'for-loop' только печатьми, возможно, 3-мя элементами. 'for (int i = 0; i <3; i ++)'. Это поможет вам определить, не работает ли она на странице или если ваш метод печати неверен – CraigR8806