ºìÁªLinuxÃÅ»§
Linux°ïÖú

´ÓJavaÓ¦ÓóÌÐò¶¯Ì¬Éú³ÉPDFÎļþ

·¢²¼Ê±¼ä:2006-05-08 10:46:05À´Ô´:ºìÁª×÷Õß:koov
Èç¹ûÓ¦ÓóÌÐòÐèÒª¶¯Ì¬Éú³É 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 o­n 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 ÔÊÐíÓû§´´½¨Ë®Ó¡£¬¶ÔÎĵµ½øÐмÓÃÜÒÔ¼°ÉèÖÃÆäËûÊä³öϸ½Ú¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ