java實現pdf檔案下載
阿新 • • 發佈:2019-01-03
實現點選超連結下載pdf檔案,該pdf檔案的內容又跟JSP頁面的資料有關。實質就是一個列印吧。 若對此列印有一個pdf的template,要先載入template,即把template裡面的東西讀出來。 PdfReader reader = new PdfReader("SimpleRegistrationForm.pdf"); 設定頁面的大小 Rectangle rectPageSize = reader.getPageSizeWithRotation(1); Document doc = new Document(rectPageSize, 40, 40, 40, 40);// 其餘4個引數,設定了頁面的4個邊距清空response,不這麼做的話有時對 程式有影響,因為在此之前有可能也用到了response,若不reset後面的setContentType()有可能無效. response.reset(); setContentType()設定檔案型別為pdf response.setContentType("application/pdf"); 設定下載檔案的名稱 response.setHeader("content-disposition", "attachment; filename=test.pdf"); ByteArrayOutputStream baos = new ByteArrayOutputStream(); // 設定字型 BaseFont font = BaseFont.createFont("HeiseiMin-W3", "UniJIS- UCS2-HW-H", BaseFont.NOT_EMBEDDED); // Font font = FontFactory.getFont(FontFactory.HELVETICA, 14, Font.BOLD, // Color.BLUE); PdfWriter pw = PdfWriter.getInstance(doc, baos); doc.open(); PdfContentByte pcb = pw.getDirectContent(); //在此加入業務邏輯 pcb.beginText(); pcb.setFontAndSize(font, 10); String page = String.valueOf(1); pcb.showTextAligned(PdfContentByte.ALIGN_LEFT, page, 530, 40, 0); pcb.endText(); doc.close(); // Send PDF to client baos.writeTo(response.getOutputStream()); baos.close(); 以上是用流輸出檔案內容,比生成臨時檔案再輸出應該簡單快捷些。