一、用pdf組件iText輸出文本
/** * 用iText輸出文本(包括中文) * @author Administrator * */public class PDFTest {public static void main(String[] args) {Document document=new Document(PageSize.A4);//產生一個文檔 參數為大小 可無try {//輸出d:/itext.pdf檔案PdfWriter writer=PdfWriter.getInstance(document, new FileOutputStream("d:/itext.pdf"));//開啟文檔document.open();//在pdf文檔中寫入文字 預設只支援英文document.add(new Paragraph("hello itext"));//添加中文,//1、直接引用系統路徑中的字型 就是直接找到系統中字型的位置 進行引用//BaseFont bfChinese=BaseFont.createFont("C:/WINDOWS/Fonts/SIMSUN.TTC,1", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);//2、建立中文字型,iTextAsian包就是對系統字型的封裝 //用baseFont建立一個字型 第一個參數為 字型名字(asian包中 cmaps下的屬性檔案名稱) 第二個參數為 編碼格式(屬性檔案名稱下所對應的的編碼格式)//第三個參數為 輸出中文的三種字型選擇方式/** * 1、使用iTextAsian.jar中的字型 BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);2、使用Windows系統字型(TrueType) BaseFont.createFont("C:/WINDOWS/Fonts/SIMYOU.TTF", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED); 3、使用資源字型(ClassPath) BaseFont.createFont("/SIMYOU.TTF", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED); */BaseFont bfChinese=BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);Font fontChinese=new Font(bfChinese,12,Font.NORMAL);//添加中文段落文字document.add(new Paragraph("第一個pdf例子 蕤茂盛",fontChinese));//添加文檔標題document.addTitle("iText練習");//添加文檔作者document.addAuthor("朱國志");//。。。document.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}}
二、用iText輸出表格
public class MyPdfTable {public static void main(String[] args) {Document document=new Document();//建立一個文檔try {PdfWriter writer=PdfWriter.getInstance(document, new FileOutputStream("d://itextTable.pdf"));//建立一個3行3列的表PdfPTable table=new PdfPTable(3);//表格的列數PdfPCell cell=new PdfPCell(new Paragraph("header with colspan3"));//建立了一個單元格cell.setColspan(3);//合并單元格table.addCell(cell);//將建立好的cell單元格添加到table中table.addCell("1.1");//添加一個單元格 內容為 "1.1"table.addCell("2.1");table.addCell("3.1");table.addCell("1.2");table.addCell("2.2");table.addCell("3.2");table.addCell("1.3");table.addCell("2.3");table.addCell("3.3");//開啟文檔document.open();//將表格添加到文檔中document.add(table);//關閉文檔document.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}}
三、iText輸出映像並設定文件屬性
/** * 用iText輸出映像並設定文件屬性 * @author Administrator * */public class MyPdfImage {public static void main(String[] args) {//建立一個A4大小的文檔 預設為印表機紙張大小A4Document document = new Document(PageSize.A4);try {//建立一個pdf輸出資料流PdfWriter writer=PdfWriter.getInstance(document, new FileOutputStream("d:\\itextImage.pdf"));//設定文檔作者document.addAuthor("張國強");//設定文檔標題document.addTitle("我的itext輸出的pdf");//設定主題document.addSubject("Image Pdf");//設定關鍵字document.addKeywords("itext");//開啟文檔document.open();//在文檔中寫入文字document.add(new Paragraph("hello iText pdf"));//建立圖片對象 ,參數為圖片的檔案名稱Image bmp=Image.getInstance("d:\\image1.jpg");//圖片的規模百分比 即圖片相對於文檔的大小百分比bmp.scalePercent(100f);////將圖片添加到文檔中document.add(bmp);//關閉文檔document.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}}
四、用servlet輸出pdf
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//建立文檔對象,a4大小Document document=new Document(PageSize.A4);//建立一個位元組數組輸出資料流ByteArrayOutputStream stream=new ByteArrayOutputStream();try {//建立一個pdf輸出資料流PdfWriter writer=PdfWriter.getInstance(document, stream);//開啟文檔document.open();//向pdf中寫入文字document.add(new Paragraph("Hello world , Hello iText!"));//關閉文檔document.close();} catch (Exception e) {e.printStackTrace();}//設定響應文件類型 為pdfresponse.setContentType("application/pdf");//設定響應資料大小response.setContentLength(stream.size());//為輸出資料流的大小//獲得響應資料ServletOutputStream out=response.getOutputStream();//得到response中的輸出資料流//將pdf資料流寫入響應資料中stream.writeTo(out);out.flush();out.close();}