我正在創建adf項目並使用itextpdf 5.1.3生成報告。 例如: - 我的表客戶有3000行。在我的jspx頁面有客戶表&按鈕有文件下載列表程序那裏我只是簡單地調用報告。 只有前50行(最多4頁)纔會生成報告。 爲什麼剩餘的行不在報告中?itextpdf中的最大頁面大小
private void generatePDFFile(FacesContext facesContext, java.io.OutputStream outputStream) {
try {
DCBindingContainer dcBindings = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
DCIteratorBinding iterBind1 = (DCIteratorBinding)dcBindings.get("CustomerView1Iterator");
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream(FILE)); \\file path local disk D:\mywork\customer.pdf
document.open();
Row[] rows= iterBind1.getAllRowsInRange();
for(Row row:rows){
custcode = (String) row.getAttribute("CustomerCode");
custname = (String) row.getAttribute("CustomerNameE");
addgroup(document);
}
document.close();
facesContext = facesContext.getCurrentInstance();
ServletContext context = (ServletContext)facesContext.getExternalContext().getContext();
File file = new File(FILE);
FileInputStream fileInputStream;
byte[] b;
System.out.println(file.getCanonicalPath());
System.out.println(file.getAbsolutePath());
fileInputStream = new FileInputStream(file);
int n = fileInputStream.available();
while (n > 0) {
b = new byte[n];
//b = new byte[8192];
int result = fileInputStream.read(b);
outputStream.write(b, 0, b.length);
if (result == -1)
break;
}
outputStream.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
private static void addgroup(Document document) throws DocumentException{
Paragraph preface1 = new Paragraph();
Paragraph preface2 = new Paragraph();
preface1.add(new Chunk("\n"));
preface1.add(new Chunk("Customer : "+custcode+" "+custname,BlueFont));
preface1.add(new Chunk("\n"));
document.add(preface1);
document.add(preface2);
}
真是個壞問題。你能改善它嗎? –
嗨布魯諾, 我的表有3000行。當調用pdf代時只有前50行纔會來。爲什麼? 以下是我的代碼.... –
您的代碼不在下面。成千上萬的開發者使用iText創建了超過3000行的PDF。如果你問我*爲什麼*你的應用程序只渲染50行,答案很簡單:因爲你做錯了什麼。你在做什麼錯了?也許你不應該使用近6年前的iText版本。你有沒有嘗試升級? –