Èç¹ûÓ¦ÓóÌÐòÐèÒª¶¯Ì¬Éú³É PDF Îĵµ£¬ÔòÐèÒª iText ¿â¡£¿ª·ÅÔ´ÂëµÄ iText ¿âʹ PDF ÎĵµµÄ´´½¨Äܹ»ÔÚ˲¼äÍê³É¡£±¾ÎĽéÉÜÁË iText ²¢ÌṩÁËʹÓÃËü´Ó Java ? ¼¼ÊõÓ¦ÓóÌÐòÉú³É PDF ÎĵµµÄÓÉdzÈëÉîµÄÖ¸ÄÏ¡£ÎÒÃÇ´´½¨ÁËÒ»¸öʾÀýÓ¦ÓóÌÐòÒÔ¸üºÃµØÀí½â iText¡£
¡¡¡¡ºÜ¶àÓ¦ÓóÌÐòÒªÇó¶¯Ì¬Éú³É PDF Îĵµ¡£ÕâÀàÓ¦ÓóÌÐò°üÀ¨ÒøÐÐÉú³ÉÓÃÓÚµç×ÓÓʼþͶµÝµÄ¿Í»§±¨±í£¬µ½¶ÁÕß¹ºÂòÌض¨Í¼ÊéÕ½ڲ¢ÒÔ PDF ¸ñʽ½ÓÊÕÕâЩÎĵµ¡£Àý×ÓÂÞÁÐÏÂÈ¥ÊǺܶàµÄ¡£ÔÚ±¾ÎÄÖУ¬½«Ê¹Óà iText Java ¿âÉú³É PDF Îĵµ£¬²¢Òýµ¼ÄúÍê³ÉÒ»¸öʾÀýÓ¦ÓóÌÐò£¬ÒÔʹÄúÄܹ»¸üºÃµØÀí½âºÍʹÓà iText¡£
¡¡¡¡ÊìϤ iText
¡¡¡¡iText ÊÇ Lowagie.com Õ¾µã£¨Çë²ÎÔÄ ²Î¿¼×ÊÁÏ£©Ãâ·ÑÌṩµÄ Java ¿â¡£iText ¿âµÄ¹¦ÄܺÜÇ¿´ó£¬Ö§³Ö HTML¡¢RTF ºÍ XML ÎĵµµÄÉú³É£¬´ËÍ⻹Äܹ»Éú³É PDF Îĵµ¡£¿ÉÒÔ´Ó¶àÖÖ×ÖÌåÖÐÑ¡ÔñÎĵµÖÐËùʹÓõÄ×ÖÌ塣ͬʱ£¬iText µÄ½á¹¹ÔÊÐíʹÓÃÏàͬµÄ´úÂëÉú³ÉÒÔÉÏÈÎÒâÀàÐ͵ÄÎĵµ¡£
¡¡¡¡iText ¿âÖеÄÀàÓÃÓÚÒÔ¸÷ÖÖ×ÖÌåÀ´Éú³É PDF Îı¾¡¢ÔÚ PDF ÎĵµÖÐÉú³É±í¸ñ¡¢ÎªÒ³Ìí¼ÓˮӡµÈ¡£iText »¹ÌṩÐí¶à¹¦ÄÜ¡£ÔÚһƪÎÄÕÂÖв»¿ÉÄÜÒ»Ò»ÑÝʾ¡£±¾ÎÄÖн«½éÉÜÉú³É PDF ÎĵµµÄ»ù±¾ÐèÇó¡£
¡¡¡¡ÎÒÃǽ«Ê¹Óà Eclipse À´½øÐÐʾÀýÓ¦ÓóÌÐò¿ª·¢¡£×÷Ϊһ¸ö¿ª·ÅÔ´ÂëµÄ IDE£¬¿ÉÒÔÃâ·Ñ»ñµÃ Eclipse£¬¶øÇÒÆ书Äܷdz£Ç¿´ó¡£ÏÖÔھͿÉÒÔÏÂÔØ Eclipse¡£
¡¡¡¡iText API£º½ü¾àÀë¹Û²ì
¡¡¡¡com.lowagie.text.Document ÊÇÉú³É PDF µÄÖ÷ÒªµÄÀà¡£ËüÊÇÐèҪʹÓõĵÚÒ»¸öÀà¡£Ò»µ©¿ªÊ¼´´½¨Îĵµ£¬½«ÐèÒªÒ»¸öдÈëÆ÷ÏòÎĵµÖÐдÈëÄÚÈÝ¡£ com.lowagie.text.pdf.PdfWriter ¾ÍÊÇÒ»¸ö PDF дÈëÆ÷¡£ÏÂÃæÁгöÁËͨ³£ÐèҪʹÓõÄÀࣺ
¡¡¡¡com.lowagie.text.Paragraph ---- Õâ¸öÀà±íʾһ¸öËõ½øµÄ¶ÎÂä¡£
¡¡¡¡com.lowagie.text.Chapter ---- Õâ¸öÀà±íʾ PDF ÎĵµÖеÄÕ½ڡ£Ê¹Óà Paragraph ×÷ΪÌâÄ¿²¢Ê¹Óà int ×÷ΪÕ½ںÅÂëÀ´´´½¨Ëü¡£
¡¡¡¡com.lowagie.text.Font ---- Õâ¸öÀà°üº¬ÁËÈ«²¿µÄ×ÖÌå¹æ·¶£¬ÀýÈç×ÖÌå¡¢´óС¡¢ÑùʽºÍÑÕÉ«¡£¸÷ÖÖ×ÖÌ嶼ÔÚÕâ¸öÀàÖÐÉùÃ÷Ϊ¾²Ì¬³£Êý¡£
¡¡¡¡com.lowagie.text.List ---- Õâ¸öÀà±íʾһ¸öÁÐ±í£¬°´Ë³Ðò°üº¬Ðí¶à ListItems¡£
¡¡¡¡com.lowagie.text.Table ---- Õâ¸öÀà±íʾ°üº¬µ¥Ôª¸ñµÄ±í£¬µ¥Ôª¸ñÓÐÐòµØÅÅÁÐÔÚ¾ØÕóÖС£
¡¡¡¡ÏÂÔØ iText ²¢ÔÚ Eclipse ÖнøÐÐÅäÖÃ
¡¡¡¡×÷Ϊһ¸ö´¿´âµÄ Java ¿â£¬iText ÊÇÒÔ JAR ÎļþµÄÐÎʽ³öÏֵģ¨Çë²ÎÔÄ ²Î¿¼×ÊÁÏ£©¡£Ò»µ©ÏÂÔØÁËÕâ¸ö¿â£¨ÔÚ·¾¶ C:\temp Ï£©£¬Ö´ÐÐÏÂÁв½Ö轫»áÔÚ Eclipse »·¾³ÖÐÅäÖà iText ¿â£º
¡¡¡¡ÔÚ Eclipse Öд´½¨Ò»¸öÐ嵀 Java ÏîÄ¿£¬½«ÆäÃüÃûΪ iText¡£
¡¡¡¡ÔÚ Package Explorer ÊÓͼÖÐÓÒ»÷ iText ÏîÄ¿£¬È»ºóÑ¡Ôñ Properties¡£
¡¡¡¡µ¥»÷ Java Build Path¡£ÔÚ Libraries Ñ¡ÏÖУ¬µ¥»÷ Add External JARs¡£
¡¡¡¡ä¯ÀÀµ½ C:\temp Ŀ¼£¬Ñ¡Ôñ¸ÃĿ¼Ï嵀 itext-1.3.jar¡£
¡¡¡¡µ¥»÷ OK¡£
¡¡¡¡ÏÖÔÚÒѾÅäÖúà iText£¬Eclipse ÒѾ׼±¸ºÃ´´½¨ Java Ó¦ÓóÌÐòÒÔÉú³É¶¯Ì¬ PDF Îĵµ¡£
¡¡¡¡Ê¾ÀýÓ¦ÓóÌÐò
¡¡¡¡»¹ÓÐʲôÄܹ»±È×Ô¼º¶¯ÊÖ´´½¨Ò»¸ö¹¤×÷ʾÀý¸üºÃµØÑÝʾ¼¼ÊõÁË£¿ÏÖÔÚÓÐÁËËùÐèµÄ¹¤¾ß£¨Eclipse IDE£©ºÍ¿â£¨iText ¿â£©£¬¿ÉÒÔ¿ªÊ¼Éè¼ÆºÍ¿ª·¢Ò»¸öʾÀýÓ¦ÓóÌÐòÁË¡£
¡¡¡¡ÈÃÎÒÃÇ´´½¨Ò»¸ö¼òµ¥µÄ PDF Îĵµ£¬ÆäÖаüº¬Ò»Ð©»ù±¾ÔªËØ£¬Èç´¿Îı¾¡¢·ÇĬÈÏ×ÖÌåµÄ²ÊÉ«Îı¾¡¢±í¸ñ¡¢ÁÐ±í¡¢Õ½ںÍС½ÚµÈ¡£´ËÓ¦ÓóÌÐòµÄÄ¿µÄÊÇÈÃÄúÊìϤ iText ¿âµÄʹÓ÷½Ê½¡£ÓкܶàÓë°ïÖúÉú³É PDF ÎĵµÓйصÄÀà¡£ÔÚÕâÀï²»¿ÉÄܽéÉÜËùÓÐÕâЩÀà¡£iText µÄ javadoc ÊǽéÉÜÈçºÎʹÓÃÕâЩÀàµÄºÜºÃµÄ×ÊÁÏ¡£ÏÂÃæÈÃÎÒÃÇÀ´¿ªÊ¼±àд´úÂë¡£
¡¡¡¡µÚÒ»²½ÊÇ´´½¨Ò»¸öÎĵµ¡£ÎĵµÊÇ PDF ÎĵµµÄËùÓÐÔªËصÄÈÝÆ÷¡£
¡¡¡¡Çåµ¥ 1. ʵÀý»¯Îĵµ¶ÔÏó
Document document = new Document(PageSize.A4, 50, 50, 50, 50);
¡¡¡¡µÚÒ»¸ö²ÎÊýÊÇÒ³Ãæ´óС¡£½ÓÏÂÀ´µÄ²ÎÊý·Ö±ðÊÇ×ó¡¢ÓÒ¡¢ÉϺÍÏÂÒ³±ß¾à¡£µ«ÊÇ»¹Ã»Óж¨Òå¸ÃÎĵµµÄÀàÐÍ¡£ËüÈ¡¾öÓÚËù´´½¨µÄдÈëÆ÷µÄÀàÐÍ¡£¶ÔÓÚÎÒÃǵÄʾÀý£¬Ñ¡ÔñÁË com.lowagie.text.pdf.PdfWriter¡£ÆäËûдÈëÆ÷Ϊ HtmlWriter¡¢RtfWriter¡¢XmlWriter µÈµÈ¡£ËüÃǵÄÃû³Æ½âÊÍÁËËüÃǵÄʵ¼ÊÓÃ;¡£
¡¡¡¡Çåµ¥ 2. ´´½¨ PdfWriter ¶ÔÏó
PdfWriter writer = PdfWriter.getInstance(document, \
new FileOutputStream("C:\\ITextTest.pdf"));
document.open();
¡¡¡¡µÚÒ»¸ö²ÎÊýÊǶÔÎĵµ¶ÔÏóµÄÒýÓ㬵ڶþ¸ö²ÎÊýÊÇÎļþµÄʵ¼ÊÃû³Æ£¬ÔÚ¸ÃÃû³ÆÖл¹»á¸ø³öÆäÊä³ö·¾¶¡£½ÓÏÂÀ´£¬´ò¿ªÎĵµÒÔдÈëÄÚÈÝ¡£
¡¡¡¡ÏÖÔÚ£¬½«ÔÚÎĵµµÄµÚÒ»Ò³ÉÏÌí¼ÓһЩÎı¾¡£Í¨¹ý com.lowagie.text.Paragraph À´Ìí¼ÓÎı¾¡£¿ÉÒÔÓÃÎı¾¼°ÆäĬÈϵÄ×ÖÌå¡¢ÑÕÉ«¡¢´óСµÈµÈÉèÖÃÀ´´´½¨Ò»¸öĬÈ϶ÎÂä¡£»òÕߣ¬Ò²¿ÉÒÔÉèÖÃ×Ô¼ºµÄ×ÖÌå¡£ÏÂÃæÈÃÎÒÃÇÀ´¿´¿´ÕâÁ½ÖÖ×ö·¨¡£
¡¡¡¡Çåµ¥ 3. ´´½¨¶ÎÂä¶ÔÏó
document.add(new Paragraph("First page of the document."));
document.add(new Paragraph("Some more text on the \
first page with different color and font type.",
FontFactory.getFont(FontFactory.COURIER, 14, Font.BOLD, new Color(255, 150, 200))));
¡¡¡¡ÏÂÃæÊÇÉÏÃæ´úÂëµÄÊä³öʾÀý¡£ÔÚÉÏÃæ´úÂëµÄ½áβ´¦Ìí¼Ó document.close(); ÒԹرÕÎĵµ¡£
ͼ 1. ÉÏÃæ´úÂëµÄÊä³öʾÀý
¡¡¡¡ÄúÒѾ¿´µ½ÁËÈçºÎÏò PDF ÎĵµÖÐÌí¼Ó´¿Îı¾¡£½ÓÏÂÀ´£¬ÐèÒªÏòÎĵµÖÐÌí¼ÓһЩ¸´ÔÓµÄÔªËØ¡£ÎÒÃÇ¿ªÊ¼´´½¨Ò»¸öеÄÕ½ڡ£Õ½ÚÊÇÒ»¸öÌØÊâµÄС½Ú£¬Ä¬ÈÏÇé¿öÏ£¬Õ½ڴÓÒ»¸öеÄÒ³Ã濪ʼ£¬²¢ÏÔʾһ¸öĬÈϵıàºÅ¡£
¡¡¡¡Çåµ¥ 4. ´´½¨Õ½ڶÔÏó
Paragraph title1 = new Paragraph("Chapter 1",
FontFactory.getFont(FontFactory.HELVETICA, \
18, Font.BOLDITALIC, new Color(0, 0, 255)));
Chapter chapter1 = new Chapter(title1, 1);
chapter1.setNumberDepth(0);
¡¡¡¡ÔÚÉÏÃæµÄ´úÂëÖУ¬´´½¨ÁËÒ»¸öеÄÕ½ڶÔÏó£¬chapter1£¬Æä±êÌâΪ ¡°This is Chapter 1¡±£¬½«±àºÅ¼¶±ðÉèΪ 0 ¾Í²»»áÔÚÒ³ÃæÉÏÏÔʾÕ½ڱàºÅ¡£
¡¡¡¡Ð¡½ÚÊÇÕ½ڵÄ×ÓÔªËØ¡£ÔÚÏÂÃæµÄ´úÂëÖУ¬´´½¨ÁËÒ»¸ö±êÌâΪ ¡°This is Section 1 in Chapter 1¡± µÄС½Ú¡£ÎªÔÚ¸ÃС½ÚÏÂÌí¼ÓһЩÎı¾£¬´´½¨ÁËÁíÒ»¸ö¶ÎÂä¶ÔÏó£¬someSectionText£¬²¢½«ÆäÌí¼Óµ½Ð¡½Ú¶ÔÏóÖС£
¡¡¡¡Çåµ¥ 5. ´´½¨Ð¡½Ú¶ÔÏó
Paragraph title11 = new Paragraph("This is Section 1 in Chapter 1",
FontFactory.getFont(FontFactory.HELVETICA, 16, \
Font.BOLD, new Color(255, 0, 0)));
Section section1 = chapter1.addSection(title11);
Paragraph someSectionText = new Paragraph("This \
text comes as part of section 1 of chapter 1.");
section1.add(someSectionText);
someSectionText = new Paragraph("Following is a 3 X 2 table.");
section1.add(someSectionText);
¡¡¡¡ÔÚÌí¼Ó±í¸ñ֮ǰ£¬ÎÒÃÇÏÈ¿´Ò»ÏÂÎĵµµÄÑù×Ó¡£Ìí¼ÓÏÂÃæÁ½ÐдúÂëÒԹرÕÎĵµ£¬È»ºó±àÒë²¢Ö´ÐгÌÐòÒÔÉú³É PDF Îĵµ£ºdocument.add(chapter1);document.close();¡£
ͼ 2. Õ½ÚÊä³öʾÀý
¡¡¡¡½ÓÏÂÀ´£¬´´½¨Ò»¸ö±í¸ñ¶ÔÏó¡£´´½¨Ò»¸ö°üº¬ÐÐÁоØÕóµÄ±í¸ñ¡£ÐÐÖеĵ¥Ôª¸ñ¿ÉÒÔ¿ç¶à¸öÁС£Í¬ÑùµØ£¬ÁÐÖеĵ¥Ôª¸ñÒ²¿ÉÒÔ¿ç¶à¸öÐС£Òò´Ë£¬Ò»¸ö 3 x 2 µÄ±í¸ñʵ¼ÊÉϲ»Ò»¶¨ÓÐ 6 ¸öµ¥Ôª¸ñ¡£
¡¡¡¡Çåµ¥ 6. ´´½¨±í¸ñ¶ÔÏó
Table t = new Table(3,2);
t.setBorderColor(new Color(220, 255, 100));
t.setPadding(5);
t.setSpacing(5);
t.setBorderWidth(1);
Cell c1 = new Cell("header1");
c1.setHeader(true);
t.addCell(c1);
c1 = new Cell("Header2");
t.addCell(c1);
c1 = new Cell("Header3");
t.addCell(c1);
t.endHeaders();
t.addCell("1.1");
t.addCell("1.2");
t.addCell("1.3");
section1.add(t);
¡¡¡¡ÔÚÉÏÃæµÄ´úÂëÖУ¬´´½¨ÁËÒ»¸ö±í¸ñ¶ÔÏó£¬t£¬ËüÓÐÈýÁС¢Á½ÐС£È»ºóÉèÖñí¸ñµÄ±ß¿òÑÕÉ«¡£Ìî³äÓÃÓÚÉèÖõ¥Ôª¸ñÖÐÎı¾¼äµÄ¼ä¸ôÒÔ¼°µ¥Ôª¸ñµÄ±ß½ç¡£¼ä¸ôÖ¸µÄÊÇÏàÁÚµ¥Ôª¸ñ¼äµÄ±ß½ç¡£½ÓÏÂÀ´£¬½«´´½¨Èý¸öµ¥Ôª¸ñ¶ÔÏó£¬Ã¿¸öµ¥Ôª¸ñÖеÄÎı¾¶¼¸÷²»Ïàͬ¡£½ÓÏÂÀ´£¬½«ËüÃÇÌí¼Óµ½±í¸ñÖС£½«ËüÃÇÌí¼Óµ½µÚÒ»ÐÐÖУ¬´ÓµÚÒ»ÁпªÊ¼£¬ÒƵ½Í¬Ò»ÐÐÖеÄÏÂÒ»ÁС£Ò»µ©¸ÃÐд´½¨Íê³É£¬¾Í½«ÏÂÒ»¸öµ¥Ôª¸ñÌí¼Óµ½ÏÂÒ»ÐеĵÚÒ»ÁÐÖС£Ò²¿ÉÒÔͨ¹ýÖ»Ìṩµ¥Ôª¸ñµÄÎı¾½«µ¥Ôª¸ñÌí¼Óµ½±í¸ñÖУ¬ÀýÈ磬 t.addCell("1.1");¡£×îºó£¬½«±í¸ñ¶ÔÏóÌí¼Óµ½Ð¡½Ú¶ÔÏóÖС£
¡¡¡¡×îºó£¬ÎÒÃÇÀ´¿´Ò»ÏÂÈçºÎ½«ÁбíÌí¼Óµ½ PDF ÎĵµÖС£Áбí°üº¬Ò»¶¨ÊýÁ¿µÄ ListItem¡£¿ÉÒÔ¶ÔÁбí½øÐбàºÅ£¬Ò²¿ÉÒÔ²»±àºÅ¡£½«µÚÒ»¸ö²ÎÊýÉèÖÃΪ true ±íÃ÷Ïë´´½¨Ò»¸öÒª½øÐбàºÅµÄÁÐ±í¡£
¡¡¡¡Çåµ¥ 7. ´´½¨Áбí¶ÔÏó
List l = new List(true, false, 10);
l.add(new ListItem("First item of list"));
l.add(new ListItem("Second item of list"));
section1.add(l);
¡¡¡¡ÎÒÃÇÒѾÏò chapter1 ¶ÔÏóÖÐÌí¼ÓÁËËùÐèµÄ¶ÔÏó¡£Òò´Ë£¬ÒѾûÓÐÆäËûÒªÌí¼Óµ½ chapter1 ÖеÄÔªËØÁË£¬ÏÖÔÚ¿ÉÒÔ½« chapter1 Ìí¼Óµ½Ö÷ document ÖÐÁË¡£ÓëÔÚʾÀýÓ¦ÓóÌÐòÖÐËù×öµÄÒ»Ñù£¬»¹ÒªÔÚÕâʱ¹Ø±ÕÎĵµ¶ÔÏó¡£
¡¡¡¡Çåµ¥ 8. ÏòÖ÷ÎĵµÖÐÌí¼ÓÕ½Ú
document.add(chapter1);
document.close();
¡¡¡¡ÔËÐÐʾÀýÓ¦ÓóÌÐò
¡¡¡¡ÏÂÔØʾÀýÓ¦ÓóÌÐò£¬j-itextsample.jar£¨²Î¼û ÏÂÔØ£©¡£
¡¡¡¡ÔÚij¸öĿ¼ÖнâѹËõ j-itextsample.jar¡£ÀýÈ磬Èç¹û½«Æä½âѹËõµ½ C:\temp£¬Ôò»á½«Ô´ÂëºÍÀàÎļþ·Åµ½ C:\temp\com\itext\test Ŀ¼Ï¡£
¡¡¡¡´ò¿ªÒ»¸öÃüÁîÌáʾ£¬½«Ä¿Â¼¸ü¸ÄΪ C:\temp¡£
¡¡¡¡ÔÚÕâ¸öÃüÁîÌáʾÖÐÉèÖÃϵͳµÄÀà·¾¶¡£½« C:\temp\itext-1.3.jar °üÀ¨ÔÚϵͳµÄÀà·¾¶ÖС£ÔÚ Windows? ÉÏ£¬Ö´ÐÐÃüÁî set classpath=C:\temp\itext-1.3.jar;%classpath%¡£
¡¡¡¡Ê¹ÓÃÃüÁî java com.itext.test.ITextTest ÔËÐÐÓ¦ÓóÌÐò¡£
¡¡¡¡³ÌÐò»áÔÚ C:\ Ŀ¼ÏÂÉú³ÉÒ»¸ö ITextTest.pdf Îĵµ¡£ÏÂÃæÏÔʾÁËÕâ¸ö PDF ÎĵµµÚ¶þÒ³µÄÆÁĻͼ¡£
ͼ 3. PDF ÎĵµµÄÆÁĻͼ
¡¡¡¡½áÊøÓï
¡¡¡¡ÄúÒѾ¿´µ½ÁËһЩÉú³É PDF µÄ»ù±¾ÔªËØ¡£iText µÄÃÀÃîÖ®´¦ÊÇÏàͬԪËصÄÓï·¨¿ÉÒÔ¹©²»Í¬ÀàÐ͵ÄдÈëÆ÷ʹÓ᣶øÇÒ£¬Ð´ÈëÆ÷µÄÊä³ö¿ÉÒÔÖض¨Ïòµ½¿ØÖÆ̨£¨µ±Ð´ÈëÆ÷ÀàÐÍÊÇ XML ºÍ HTML ʱ£©¡¢servlet µÄÊä³öÁ÷£¨ÔÚ¶Ô PDF ÎĵµµÄ Web ÇëÇó×÷³öÏìӦʱ£©»òÕßÊÇÆäËûÀàÐ굀 OutputStream¡£µ±ÏìÓ¦Ïàͬ£¬µ«ÆäÀàÐÍËæËùÇëÇóµÄÊÇ PDF¡¢RTF¡¢HTML »ò XML Îĵµ¶øÓÐËù²»Í¬Ê±£¬Ê¹Óà iText ÊǷdz£·½±ãµÄ¡£iText ÔÊÐíÓû§´´½¨Ë®Ó¡£¬¶ÔÎĵµ½øÐмÓÃÜÒÔ¼°ÉèÖÃÆäËûÊä³öϸ½Ú¡£