iText 是知名開源 Java PDF 庫(核心 itext-2.1.5.jar),支援:
官網下載:lowagie.com,需 JDK 1.4+。
import java.io.*;
import java.util.Date;
import com.lowagie.text.*;
import com.lowagie.text.pdf.PdfWriter;
public class GeneratePDF {
public static void main(String[] args) {
try {
OutputStream file = new FileOutputStream("C:\\Test.pdf");
Document document = new Document();
PdfWriter.getInstance(document, file);
document.open();
document.add(new Paragraph("Hello Kiran"));
document.add(new Paragraph(new Date().toString()));
document.close();
file.close();
} catch (Exception e) { e.printStackTrace(); }
}
}
public class PdfHelloWorldAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest req, HttpServletResponse res) throws Exception {
Document document = new Document();
try {
res.setContentType("application/pdf");
PdfWriter.getInstance(document, res.getOutputStream());
document.open();
document.add(new Paragraph("Hello Kiran"));
document.add(new Paragraph(new Date().toString()));
} catch (Exception e) { e.printStackTrace(); }
document.close();
return null;
}
}
關鍵點:PdfWriter.getInstance(document, response.getOutputStream()) + response.setContentType("application/pdf")。
document.addAuthor("Kiran Hegde");
document.addCreationDate();
document.addCreator("iText library");
document.addTitle("Hello World PDF");
document.addSubject("Dynamic PDF Generation");
document.addKeywords("iText, PDF, Java");
document.addHeader("Header Text");
document.addFooter("Footer Text");
| 需求 | 關鍵類別/方法 |
|---|---|
| 中文字體 | BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED) + Font |
| 表格 | PdfPTable, PdfPCell |
| 圖片 | Image.getInstance(path) |
| 書籤/大綱 | Chapter, Section |
| 加密/權限 | PdfWriter.setEncryption(userPass, ownerPass, permissions, strength) |
| 數位簽章 | PdfSignatureAppearance |
| 合併 PDF | PdfCopy, PdfReader |
iText 2.1.7 為 LGPL/MPL 雙授權,5.0+ 版改為 AGPL,商業用途需購買授權或採用 2.1.7 版。專案若需長期維護,建議評估 OpenPDF (iText 2.1.7 社群分支) 或 Apache PDFBox。