该文转载于博友(
http://lichunhui.iteye.com/blog/1550584)
iText是著名的开放项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。
http://itextpdf.com/
版本:itextpdf-5.2.1.jar
1、生成一个PDF
- Documentdocument=newDocument();
- PdfWriter.getInstance(document,newFileOutputStream(FILE_DIR+"createSamplePDF.pdf"));
- document.open();
- document.add(newParagraph("HelloWorld"));
- document.close();
2、页面大小,页面背景色,页边空白,Title,Author,Subject,Keywords
- Rectanglerect=newRectangle(PageSize.B5.rotate());
- rect.setBackgroundColor(BaseColor.ORANGE);
- Documentdoc=newDocument(rect);
- PdfWriterwriter=PdfWriter.getInstance(doc,out);
- writer.setPdfVersion(PdfWriter.PDF_VERSION_1_2);
- doc.addTitle("Title@sample");
- doc.addAuthor("Author@rensanning");
- doc.addSubject("Subject@iTextsample");
- doc.addKeywords("Keywords@iText");
- doc.addCreator("Creator@iText");
- doc.setMargins(10,20,30,40);
- doc.open();
- doc.add(newParagraph("HelloWorld"));

3、设置密码
- PdfWriterwriter=PdfWriter.getInstance(doc,out);
- writer.setEncryption("Hello".getBytes(),"World".getBytes(),
- PdfWriter.ALLOW_SCREENREADERS,
- PdfWriter.STANDARD_ENCRYPTION_128);
- doc.open();
- doc.add(newParagraph("HelloWorld"));

4、添加Page
- document.open();
- document.add(newParagraph("Firstpage"));
- document.add(newParagraph(Document.getVersion()));
- document.newPage();
- writer.setPageEmpty(false);
- document.newPage();
- document.add(newParagraph("Newpage"));
5、添加水印(背景图)
- PdfReaderreader=newPdfReader(FILE_DIR+"setWatermark.pdf");
- PdfStamperstamp=newPdfStamper(reader,newFileOutputStream(FILE_DIR
- +"setWatermark2.pdf"));
- Imageimg=Image.getInstance("resource/watermark.jpg");
- img.setAbsolutePosition(200,400);
- PdfContentByteunder=stamp.getUnderContent(1);
- under.addImage(img);
- PdfContentByteover=stamp.getOverContent(2);
- over.beginText();
- BaseFontbf=BaseFont.createFont(BaseFont.HELVETICA,BaseFont.WINANSI,
- BaseFont.EMBEDDED);
- over.setFontAndSize(bf,18);
- over.setTextMatrix(30,30);
- over.showTextAligned(Element.ALIGN_LEFT,"DUPLICATE",230,430,45);
- over.endText();
- Imageimg2=Image.getInstance("resource/test.jpg");
- img2.setAbsolutePosition(0,0);
- PdfContentByteunder2=stamp.getUnderContent(3);
- under2.addImage(img2);
- stamp.close();
- reader.close();
6、插入Chunk, Phrase, Paragraph, List
- document.add(newChunk("China"));
- document.add(newChunk(""));
- Fontfont=newFont(Font.FontFamily.HELVETICA,6,Font.BOLD,BaseColor.WHITE);
- Chunkid=newChunk("chinese",font);
- id.setBackground(BaseColor.BLACK,1f,0.5f,1f,1.5f);
- id.setTextRise(6);
- document.add(id);
- document.add(Chunk.NEWLINE);
- document.add(newChunk("Japan"));
- document.add(newChunk(""));
- Fontfont2=newFont(Font.FontFamily.HELVETICA,6,Font.BOLD,BaseColor.WHITE);
- Chunkid2=newChunk("japanese",font2);
- id2.setBackground(BaseColor.BLACK,1f,0.5f,1f,1.5f);
- id2.setTextRise(6);
- id2.setUnderline(0.2f,-2f);
- document.add(id2);
- document.add(Chunk.NEWLINE);
- document.newPage();
- document.add(newPhrase("Phrasepage"));
- Phrasedirector=newPhrase();
- Chunkname=newChunk("China");
- name.setUnderline(0.2f,-2f);
- director.add(name);
- director.add(newChunk(","));
- director.add(newChunk(""));
- director.add(newChunk("chinese"));
- director.setLeading(24);
- document.add(director);
- Phrasedirector2=newPhrase();
- Chunkname2=newChunk("Japan");
- name2.setUnderline(0.2f,-2f);
- director2.add(name2);
- director2.add(newChunk(","));
- director2.add(newChunk(""));
- director2.add(newChunk("japanese"));
- director2.setLeading(24);
- document.add(director2);
- document.newPage();
- document.add(newParagraph("Paragraphpage"));
- Paragraphinfo=newParagraph();
- info.add(newChunk("China"));
- info.add(newChunk("chinese"));
- info.add(Chunk.NEWLINE);
- info.add(newPhrase("Japan"));
- info.add(newPhrase("japanese"));
- document.add(info);
- document.newPage();
- Listlist=newList(List.ORDERED);
- for(inti=0;i<10;i++){
- ListItemitem=newListItem(String.format("%s:%dmovies",
- "country"+(i+1),(i+1)*100),newFont(
- Font.FontFamily.HELVETICA,6,Font.BOLD,BaseColor.WHITE));
- Listmovielist=newList(List.ORDERED,List.ALPHABETICAL);
- movielist.setLowercase(List.LOWERCASE);
- for(intj=0;j<5;j++){
- ListItemmovieitem=newListItem("Title"+(j+1));
- Listdirectorlist=newList(List.UNORDERED);
- for(intk=0;k<3;k++){
- directorlist.add(String.format("%s,%s","Name1"+(k+1),
- "Name2"+(k+1)));
- }
- movieitem.add(directorlist);
- movielist.add(movieitem);
- }
- item.add(movielist);
- list.add(item);
- }
- document.add(list);
7、插入Anchor, Image, Chapter, Section
- Paragraphcountry=newParagraph();
- Anchordest=newAnchor("china",newFont(Font.FontFamily.HELVETICA,14,Font.BOLD,BaseColor.BLUE));
- dest.setName("CN");
- dest.setReference("http://www.china.com");//external
- country.add(dest);
- country.add(String.format(":%dsites",10000));
- document.add(country);
- document.newPage();
- AnchortoUS=newAnchor("Gotofirstpage.",newFont(Font.FontFamily.HELVETICA,14,Font.BOLD,BaseColor.BLUE));
- toUS.setReference("#CN");
- document.add(toUS);
- document.newPage();
- Imageimg=Image.getInstance("resource/test.jpg");
- img.setAlignment(Image.LEFT|Image.TEXTWRAP);
- img.setBorder(Image.BOX);
- img.setBorderWidth(10);
- img.setBorderColor(BaseColor.WHITE);
- img.scaleToFit(1000,72);
- img.setRotationDegrees(-30);
- document.add(img);
- document.newPage();
- Paragraphtitle=newParagraph("Title");
- Chapterchapter=newChapter(title,1);
- title=newParagraph("SectionA");
- Sectionsection=chapter.addSection(title);
- section.setBookmarkTitle("bmk");
- section.setIndentation(30);
- section.setBookmarkOpen(false);
- section.setNumberStyle(
- Section.NUMBERSTYLE_DOTTED_WITHOUT_FINAL_DOT);
- Sectionsubsection=section.addSection(newParagraph("SubSectionA"));
- subsection.setIndentationLeft(20);
- subsection.setNumberDepth(1);
- document.add(chapter);
8、画图
- document.add(newVerticalPositionMark(){
- publicvoiddraw(PdfContentBytecanvas,floatllx,floatlly,
- floaturx,floatury,floaty){
- canvas.beginText();
- BaseFontbf=null;
- try{
- bf=BaseFont.createFont(BaseFont.ZAPFDINGBATS,"",BaseFont.EMBEDDED);
- }catch(Exceptione){
- e.printStackTrace();
- }
- canvas.setFontAndSize(bf,12);
- canvas.showTextAligned(Element.ALIGN_CENTER,String.valueOf((char)220),llx-10,y,0);
- canvas.showTextAligned(Element.ALIGN_CENTER,String.valueOf((char)220),urx+10,y+8,180);
- canvas.endText();
- }
- });
- Paragraphp1=newParagraph("LEFT");
- p1.add(newChunk(newLineSeparator()));
- p1.add("R");
- document.add(p1);
- Paragraphp2=newParagraph("LEFT");
- p2.add(newChunk(newDottedLineSeparator()));
- p2.add("R");
- document.add(p2);
- LineSeparatorUNDERLINE=newLineSeparator(1,100,null,Element.ALIGN_CENTER,-2);
- Paragraphp3=newParagraph("NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN");
- p3.add(UNDERLINE);
- document.add(p3);

9、设置段落
- Paragraphp=newParagraph("Inthepreviousexample,youaddedaheaderandfooterwiththeshowTextAligned()method.Thisexampledemonstratesthatit’ssometimesmoreinterestingtousePdfPTableandwriteSelectedRows().Youcandefineabottomborderforeachcellsothattheheaderisunderlined.Thisisthemostelegantwaytoaddheadersandfooters,becausethetablemechanismallowsyoutopositionandalignlines,images,andtext.");
- p.setAlignment(Element.ALIGN_JUSTIFIED);
- document.add(p);
- document.newPage();
- p.setAlignment(Element.ALIGN_JUSTIFIED);
- p.setIndentationLeft(1*15f);
- p.setIndentationRight((5-1)*15f);
- document.add(p);
- document.newPage();
- p.setAlignment(Element.ALIGN_RIGHT);
- p.setSpacingAfter(15f);
- document.add(p);
- document.newPage();
- p.setAlignment(Element.ALIGN_LEFT);
- p.setSpacingBefore(15f);
- document.add(p);
- document.newPage();
- p.setAlignment(Element.ALIGN_CENTER);
- p.setSpacingAfter(15f);
- p.setSpacingBefore(15f);
- document.add(p);
10、删除Page
- FileOutputStreamout=newFileOutputStream(FILE_DIR+"deletePage.pdf");
- Documentdocument=newDocument();
- PdfWriterwriter=PdfWriter.getInstance(document,out);
- document.open();
- document.add(newParagraph("Firstpage"));
- document.add(newParagraph(Document.getVersion()));
- document.newPage();
- writer.setPageEmpty(false);
- document.newPage();
- document.add(newParagraph("Newpage"));
- document.close();
- PdfReaderreader=newPdfReader(FILE_DIR+"deletePage.pdf");
- reader.selectPages("1,3");
- PdfStamperstamp=newPdfStamper(reader,newFileOutputStream(FILE_DIR
- +"deletePage2.pdf"));
- stamp.close();
- reader.close();
11、插入Page
- FileOutputStreamout=newFileOutputStream(FILE_DIR+"insertPage.pdf");
- Documentdocument=newDocument();
- PdfWriter.getInstance(document,out);
- document.open();
- document.add(newParagraph("1page"));
- document.newPage();
- document.add(newParagraph("2page"));
- document.newPage();
- document.add(newParagraph("3page"));
- document.close();
- PdfReaderreader=newPdfReader(FILE_DIR+"insertPage.pdf");
- PdfStamperstamp=newPdfStamper(reader,newFileOutputStream(FILE_DIR
- +"insertPage2.pdf"));
- stamp.insertPage(2,reader.getPageSize(1));
- ColumnTextct=newColumnText(null);
- ct.addElement(newParagraph(24,newChunk("INSERTPAGE")));
- ct.setCanvas(stamp.getOverContent(2));
- ct.setSimpleColumn(36,36,559,770);
- stamp.close();
- reader.close();
12、排序page
- PdfWriterwriter=PdfWriter.getInstance(doc,out);
- writer.setLinearPageMode();
- doc.open();
- doc.add(newParagraph("1page"));
- doc.newPage();
- doc.add(newParagraph("2page"));
- doc.newPage();
- doc.add(newParagraph("3page"));
- doc.newPage();
- doc.add(newParagraph("4page"));
- doc.newPage();
- doc.add(newParagraph("5page"));
- int[]order={4,3,2,1};
- writer.reorderPages(order);
13、目录
- document.add(newChunk("Chapter1").setLocalDestination("1"));
- document.newPage();
- document.add(newChunk("Chapter2").setLocalDestination("2"));
- document.add(newParagraph(newChunk("Sub2.1").setLocalDestination("2.1")));
- document.add(newParagraph(newChunk("Sub2.2").setLocalDestination("2.2")));
- document.newPage();
- document.add(newChunk("Chapter3").setLocalDestination("3"));
- PdfContentBytecb=writer.getDirectContent();
- PdfOutlineroot=cb.getRootOutline();
- @SuppressWarnings("unused")
- PdfOutlineoline1=newPdfOutline(root,PdfAction.gotoLocalPage("1",false),"Chapter1");
- PdfOutlineoline2=newPdfOutline(root,PdfAction.gotoLocalPage("2",false),"Chapter2");
- oline2.setOpen(false);
- @SuppressWarnings("unused")
- PdfOutlineoline2_1=newPdfOutline(oline2,PdfAction.gotoLocalPage("2.1",false),"Sub2.1");
- @SuppressWarnings("unused")
- PdfOutlineoline2_2=newPdfOutline(oline2,PdfAction.gotoLocalPage("2.2",false),"Sub2.2");
- @SuppressWarnings("unused")
- PdfOutlineoline3=newPdfOutline(root,PdfAction.gotoLocalPage("3",false),"Chapter3");

14、Header, Footer
- PdfWriterwriter=PdfWriter.getInstance(doc,newFileOutputStream(FILE_DIR+"setHeaderFooter.pdf"));
- writer.setPageEvent(newPdfPageEventHelper(){
- publicvoidonEndPage(PdfWriterwriter,Documentdocument){
- PdfContentBytecb=writer.getDirectContent();
- cb.saveState();
- cb.beginText();
- BaseFontbf=null;
- try{
- bf=BaseFont.createFont(BaseFont.HELVETICA,BaseFont.WINANSI,BaseFont.EMBEDDED);
- }catch(Exceptione){
- e.printStackTrace();
- }
- cb.setFontAndSize(bf,10);
- floatx=document.top(-20);
- cb.showTextAligned(PdfContentByte.ALIGN_LEFT,
- "H-Left",
- document.left(),x,0);
- cb.showTextAligned(PdfContentByte.ALIGN_CENTER,
- writer.getPageNumber()+"page",
- (document.right()+document.left())/2,
- x,0);
- cb.showTextAligned(PdfContentByte.ALIGN_RIGHT,
- "H-Right",
- document.right(),x,0);
- floaty=document.bottom(-20);
- cb.showTextAligned(PdfContentByte.ALIGN_LEFT,
- "F-Left",
- document.left(),y,0);
- cb.showTextAligned(PdfContentByte.ALIGN_CENTER,
- writer.getPageNumber()+"page",
- (document.right()+document.left())/2,
- y,0);
- cb.showTextAligned(PdfContentByte.ALIGN_RIGHT,
- "F-Right",
- document.right(),y,0);
- cb.endText();
- cb.restoreState();
- }
- });
- doc.open();
- doc.add(newParagraph("1page"));
- doc.newPage();
- doc.add(newParagraph("2page"));
- doc.newPage();
- doc.add(newParagraph("3page"));
- doc.newPage();
- doc.add(newParagraph("4page"));
15、左右文字
- PdfWriterwriter=PdfWriter.getInstance(document,out);
- document.open();
- PdfContentBytecanvas=writer.getDirectContent();
- Phrasephrase1=newPhrase("Thisisatest!left");
- Phrasephrase2=newPhrase("Thisisatest!right");
- Phrasephrase3=newPhrase("Thisisatest!center");
- ColumnText.showTextAligned(canvas,Element.ALIGN_LEFT,phrase1,10,500,0);
- ColumnText.showTextAligned(canvas,Element.ALIGN_RIGHT,phrase2,10,536,0);
- ColumnText.showTextAligned(canvas,Element.ALIGN_CENTER,phrase3,10,572,0);
16、幻灯片放映
- PdfWriterwriter=PdfWriter.getInstance(doc,out);
- writer.setPdfVersion(PdfWriter.VERSION_1_5);
- writer.setViewerPreferences(PdfWriter.PageModeFullScreen);
- writer.setPageEvent(newPdfPageEventHelper(){
- publicvoidonStartPage(PdfWriterwriter,Documentdocument){
- writer.setTransition(newPdfTransition(PdfTransition.DISSOLVE,3));
- writer.setDuration(5);
- }
- });
- doc.open();
- doc.add(newParagraph("1page"));
- doc.newPage();
- doc.add(newParagraph("2page"));
- doc.newPage();
- doc.add(newParagraph("3page"));
- doc.newPage();
- doc.add(newParagraph("4page"));
- doc.newPage();
- doc.add(newParagraph("5page"));
17、压缩PDF到Zip
- ZipOutputStreamzip=newZipOutputStream(newFileOutputStream(FILE_DIR+"zipPDF.zip"));
- for(inti=1;i<=3;i++){
- ZipEntryentry=newZipEntry("hello_"+i+".pdf");
- zip.putNextEntry(entry);
- Documentdocument=newDocument();
- PdfWriterwriter=PdfWriter.getInstance(document,zip);
- writer.setCloseStream(false);
- document.open();
- document.add(newParagraph("Hello"+i));
- document.close();
- zip.closeEntry();
- }
- zip.close();

18、分割PDF
- FileOutputStreamout=newFileOutputStream(FILE_DIR+"splitPDF.pdf");
- Documentdocument=newDocument();
- PdfWriter.getInstance(document,out);
- document.open();
- document.add(newParagraph("1page"));
- document.newPage();
- document.add(newParagraph("2page"));
- document.newPage();
- document.add(newParagraph("3page"));
- document.newPage();
- document.add(newParagraph("4page"));
- document.close();
- PdfReaderreader=newPdfReader(FILE_DIR+"splitPDF.pdf");
- Documentdd=newDocument();
- PdfWriterwriter=PdfWriter.getInstance(dd,newFileOutputStream(FILE_DIR+"splitPDF1.pdf"));
- dd.open();
- PdfContentBytecb=writer.getDirectContent();
- dd.newPage();
- cb.addTemplate(writer.getImportedPage(reader,1),0,0);
- dd.newPage();
- cb.addTemplate(writer.getImportedPage(reader,2),0,0);
- dd.close();
- writer.close();
- Documentdd2=newDocument();
- PdfWriterwriter2=PdfWriter.getInstance(dd2,newFileOutputStream(FILE_DIR+"splitPDF2.pdf"));
- dd2.open();
- PdfContentBytecb2=writer2.getDirectContent();
- dd2.newPage();
- cb2.addTemplate(writer2.getImportedPage(reader,3),0,0);
- dd2.newPage();
- cb2.addTemplate(writer2.getImportedPage(reader,4),0,0);
- dd2.close();
- writer2.close();
19、合并PDF
- PdfReaderreader1=newPdfReader(FILE_DIR+"splitPDF1.pdf");
- PdfReaderreader2=newPdfReader(FILE_DIR+"splitPDF2.pdf");
- FileOutputStreamout=newFileOutputStream(FILE_DIR+"mergePDF.pdf");
- Documentdocument=newDocument();
- PdfWriterwriter=PdfWriter.getInstance(document,out);
- document.open();
- PdfContentBytecb=writer.getDirectContent();
- inttotalPages=0;
- totalPages+=reader1.getNumberOfPages();
- totalPages+=reader2.getNumberOfPages();
- java.util.List<PdfReader>readers=newArrayList<PdfReader>();
- readers.add(reader1);
- readers.add(reader2);
- intpageOfCurrentReaderPDF=0;
- Iterator<PdfReader>iteratorPDFReader=readers.iterator();
- while(iteratorPDFReader.hasNext()){
- PdfReaderpdfReader=iteratorPDFReader.next();
- while(pageOfCurrentReaderPDF<pdfReader.getNumberOfPages()){
- document.newPage();
- pageOfCurrentReaderPDF++;
- PdfImportedPagepage=writer.getImportedPage(pdfReader,pageOfCurrentReaderPDF);
- cb.addTemplate(page,0,0);
- }
- pageOfCurrentReaderPDF=0;
- }
- out.flush();
- document.close();
- out.close();
20、Annotation
- PdfWriterwriter=PdfWriter.getInstance(doc,out);
- writer.setLinearPageMode();
- doc.open();
- doc.add(newParagraph("1page"));
- doc.add(newAnnotation("Title","Thisisaannotation!"));
- doc.newPage();
- doc.add(newParagraph("2page"));
- Chunkchunk=newChunk("\u00a0");
- chunk.setAnnotation(PdfAnnotation.createText(writer,null,"Title","Thisisaanotherannotation!",false,"Comment"));
- doc.add(chunk);
- doc.newPage();
- doc.add(newParagraph("3page"));
- Chunkchunk2=newChunk("\u00a0\u00a0");
- PdfAnnotationannotation=PdfAnnotation.createFileAttachment(
- writer,null,"Title",null,
- "resource/test2.jpg",
- "img.jpg");
- annotation.put(PdfName.NAME,
- newPdfString("Paperclip"));
- chunk2.setAnnotation(annotation);
- doc.add(chunk2);

21、插入一个Table
- PdfPTabletable=newPdfPTable(3);
- PdfPCellcell;
- cell=newPdfPCell(newPhrase("Cellwithcolspan3"));
- cell.setColspan(3);
- table.addCell(cell);
- cell=newPdfPCell(newPhrase("Cellwithrowspan2"));
- cell.setRowspan(2);
- table.addCell(cell);
- table.addCell("row1;cell1");
- table.addCell("row1;cell2");
- table.addCell("row2;cell1");
- table.addCell("row2;cell2");
- document.add(table);
22、表格嵌套
- PdfPTabletable=newPdfPTable(4);
- PdfPTablenested1=newPdfPTable(2);
- nested1.addCell("1.1");
- nested1.addCell("1.2");
- PdfPTablenested2=newPdfPTable(1);
- nested2.addCell("2.1");
- nested2.addCell("2.2");
- for(intk=0;k<24;++k){
- if(k==1){
- table.addCell(nested1);
- }elseif(k==20){
- table.addCell(nested2);
- }else{
- table.addCell("cell"+k);
- }
- }
- document.add(table);
23、设置表格宽度
- PdfPTabletable=newPdfPTable(3);
- PdfPCellcell;
- cell=newPdfPCell(newPhrase("Cellwithcolspan3"));
- cell.setColspan(3);
- table.addCell(cell);
- cell=newPdfPCell(newPhrase("Cellwithrowspan2"));
- cell.setRowspan(2);
- table.addCell(cell);
- table.addCell("row1;cell1");
- table.addCell("row1;cell2");
- table.addCell("row2;cell1");
- table.addCell("row2;cell2");
- table.setWidthPercentage(100);
- document.add(table);
- document.add(newParagraph("\n\n"));
- table.setHorizontalAlignment(Element.ALIGN_LEFT);
- document.add(table);
- document.add(newParagraph("\n\n"));
- table.setHorizontalAlignment(Element.ALIGN_CENTER);
- document.add(table);
- document.add(newParagraph("\n\n"));
- table.setWidthPercentage(50);
- table.setHorizontalAlignment(Element.ALIGN_RIGHT);
- document.add(table);
- document.add(newParagraph("\n\n"));
- table.setTotalWidth(300);
- table.setLockedWidth(true);
- document.add(table);
24、设置表格前后间隔
- PdfPTabletable=newPdfPTable(3);
- PdfPCellcell=newPdfPCell(newParagraph("合并3个单元格",fontZH));
- cell.setColspan(3);
- table.addCell(cell);
- table.addCell("1.1");
- table.addCell("2.1");
- table.addCell("3.1");
- table.addCell("1.2");
- table.addCell("2.2");
- table.addCell("3.2");
- cell=newPdfPCell(newParagraph("红色边框",fontZH));
- cell.setBorderColor(newBaseColor(255,0,0));
- table.addCell(cell);
- cell=newPdfPCell(newParagraph("合并单2个元格",fontZH));
- cell.setColspan(2);
- cell.setBackgroundColor(newBaseColor(0xC0,0xC0,0xC0));
- table.addCell(cell);
- table.setWidthPercentage(50);
- document.add(newParagraph("追加2个表格",fontZH));
- document.add(table);
- document.add(table);
- document.newPage();
- document.add(newParagraph("使用'SpacingBefore'和'setSpacingAfter'",fontZH));
- table.setSpacingBefore(15f);
- document.add(table);
- document.add(table);
- document.add(newParagraph("这里没有间隔",fontZH));
- table.setSpacingAfter(15f);
25、设置单元格宽度
- float[]widths={0.1f,0.1f,0.05f,0.75f};
- PdfPTabletable=newPdfPTable(widths);
- table.addCell("10%");
- table.addCell("10%");
- table.addCell("5%");
- table.addCell("75%");
- table.addCell("aa");
- table.addCell("aa");
- table.addCell("a");
- table.addCell("aaaaaaaaaaaaaaa");
- table.addCell("bb");
- table.addCell("bb");
- table.addCell("b");
- table.addCell("bbbbbbbbbbbbbbb");
- table.addCell("cc");
- table.addCell("cc");
- table.addCell("c");
- table.addCell("ccccccccccccccc");
- document.add(table);
- document.add(newParagraph("\n\n"));
- widths[0]=20f;
- widths[1]=20f;
- widths[2]=10f;
- widths[3]=50f;
- table.setWidths(widths);
- document.add(table);
- widths[0]=40f;
- widths[1]=40f;
- widths[2]=20f;
- widths[3]=300f;
- Rectangler=newRectangle(PageSize.A4.getRight(72),PageSize.A4.getTop(72));
- table.setWidthPercentage(widths,r);
- document.add(newParagraph("\n\n"));
- document.add(table);
26、设置单元格高度
- PdfPTabletable=newPdfPTable(2);
- PdfPCellcell;
- table.addCell(newPdfPCell(newParagraph("折行",fontZH)));
- cell=newPdfPCell(newParagraph("blahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblah"));
- cell.setNoWrap(false);
- table.addCell(cell);
- table.addCell(newPdfPCell(newParagraph("不折行",fontZH)));
- cell.setNoWrap(true);
- table.addCell(cell);
- table.addCell(newPdfPCell(newParagraph("任意高度",fontZH)));
- cell=newPdfPCell(newParagraph("1.blahblah\n2.blahblahblah\n3.blahblah\n4.blahblahblah\n5.blahblah\n6.blahblahblah\n7.blahblah\n8.blahblahblah"));
- table.addCell(cell);
- table.addCell(newPdfPCell(newParagraph("固定高度",fontZH)));
- cell.setFixedHeight(50f);
- table.addCell(cell);
- table.addCell(newPdfPCell(newParagraph("最小高度",fontZH)));
- cell=newPdfPCell(newParagraph("最小高度:50",fontZH));
- cell.setMinimumHeight(50f);
- table.addCell(cell);
- table.setExtendLastRow(true);
- table.addCell(newPdfPCell(newParagraph("拉长最后一行",fontZH)));
- cell=newPdfPCell(newParagraph("最后一行拉长到page底部",fontZH));
- table.addCell(cell);
- document.add(table);
27、设置单元格颜色
- PdfPTabletable=newPdfPTable(4);
- PdfPCellcell;
- cell=newPdfPCell(newParagraph("颜色测试",fontZH));
- table.addCell(cell);
- cell=newPdfPCell(newParagraph("红色背景,无边框",fontZH));
- cell.setBorder(Rectangle.NO_BORDER);
- cell.setBackgroundColor(BaseColor.RED);
- table.addCell(cell);
- cell=newPdfPCell(newParagraph("绿色背景,下边框",fontZH));
- cell.setBorder(Rectangle.BOTTOM);
- cell.setBorderColorBottom(BaseColor.MAGENTA);
- cell.setBorderWidthBottom(5f);
- cell.setBackgroundColor(BaseColor.GREEN);
- table.addCell(cell);
- cell=newPdfPCell(newParagraph("蓝色背景,上边框",fontZH));
- cell.setBorder(Rectangle.TOP);
- cell.setUseBorderPadding(true);
- cell.setBorderWidthTop(5f);
- cell.setBorderColorTop(BaseColor.CYAN);
- cell.setBackgroundColor(BaseColor.BLUE);
- table.addCell(cell);
- cell=newPdfPCell(newParagraph("背景灰色度",fontZH));
- table.addCell(cell);
- cell=newPdfPCell(newParagraph("0.25"));
- cell.setBorder(Rectangle.NO_BORDER);
- cell.setGrayFill(0.25f);
- table.addCell(cell);
- cell=newPdfPCell(newParagraph("0.5"));
- cell.setBorder(Rectangle.NO_BORDER);
- cell.setGrayFill(0.5f);
- table.addCell(cell);
- cell=newPdfPCell(newParagraph("0.75"));
- cell.setBorder(Rectangle.NO_BORDER);
- cell.setGrayFill(0.75f);
- table.addCell(cell);
- document.add(table);
28、插入图像
- Imageimage=Image.getInstance("resource/test2.jpg");
- float[]widths={1f,4f};
- PdfPTabletable=newPdfPTable(widths);
- table.addCell(newPdfPCell(newParagraph("图片测试",fontZH)));
- table.addCell(image);
- table.addCell("Thistwo");
- table.addCell(newPdfPCell(image,true));
- table.addCell("Thisthree");
- table.addCell(newPdfPCell(image,false));
- document.add(table);
29、设置表头
- String[]bogusData={"M0065920","SL","FR86000P","PCGOLD",
- "119000","9606","2001-08-13","4350","6011648299",
- "FLFLMTGP","153","119000.00"};
- intNumColumns=12;
- PdfPTabledatatable=newPdfPTable(NumColumns);
- intheaderwidths[]={9,4,8,10,8,11,9,7,9,10,4,10};
- datatable.setWidths(headerwidths);
- datatable.setWidthPercentage(100);
- datatable.getDefaultCell().setPadding(3);
- datatable.getDefaultCell().setBorderWidth(2);
- datatable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);
- datatable.addCell("Clock#");
- datatable.addCell("TransType");
- datatable.addCell("Cusip");
- datatable.addCell("LongName");
- datatable.addCell("Quantity");
- datatable.addCell("FractionPrice");
- datatable.addCell("SettleDate");
- datatable.addCell("Portfolio");
- datatable.addCell("ADPNumber");
- datatable.addCell("AccountID");
- datatable.addCell("RegRepID");
- datatable.addCell("AmtToGo");
- datatable.setHeaderRows(1);
- datatable.getDefaultCell().setBorderWidth(1);
- for(inti=1;i<1000;i++){
- for(intx=0;x<NumColumns;x++){
- datatable.addCell(bogusData[x]);
- }
- }
- document.add(datatable);
30、分割表格
- PdfContentBytecb=writer.getDirectContent();
- PdfPTabletable=newPdfPTable(10);
- for(intk=1;k<=100;++k){
- table.addCell("Thenumber"+k);
- }
- table.setTotalWidth(400);
- table.writeSelectedRows(0,5,0,-1,5,700,cb);
- table.writeSelectedRows(5,-1,0,-1,210,700,cb);
31、设置单元格留白
- PdfPTabletable=newPdfPTable(2);
- PdfPCellcell;
- Paragraphp=newParagraph("Quickbrownfoxjumpsoverthelazydog.Quickbrownfoxjumpsoverthelazydog.");
- table.addCell(newPdfPCell(newParagraph("默认",fontZH)));
- table.addCell(p);
- table.addCell(newPdfPCell(newParagraph("Padding:10",fontZH)));
- cell=newPdfPCell(p);
- cell.setPadding(10f);
- table.addCell(cell);
- table.addCell(newPdfPCell(newParagraph("Padding:0",fontZH)));
- cell=newPdfPCell(p);
- cell.setPadding(0f);
- table.addCell(cell);
- table.addCell(newPdfPCell(newParagraph("上Padding:0左Padding:20",fontZH)));
- cell=newPdfPCell(p);
- cell.setPaddingTop(0f);
- cell.setPaddingLeft(20f);
- table.addCell(cell);
- document.add(table);
- document.newPage();
- table=newPdfPTable(2);
- table.addCell(newPdfPCell(newParagraph("没有Leading",fontZH)));
- table.getDefaultCell().setLeading(0f,0f);
- table.addCell("blahblah\nblahblahblah\nblahblah\nblahblahblah\nblahblah\nblahblahblah\nblahblah\nblahblahblah\n");
- table.getDefaultCell().setLeading(14f,0f);
- table.addCell(newPdfPCell(newParagraph("固定Leading:14pt",fontZH)));
- table.addCell("blahblah\nblahblahblah\nblahblah\nblahblahblah\nblahblah\nblahblahblah\nblahblah\nblahblahblah\n");
- table.addCell(newPdfPCell(newParagraph("相对于字体",fontZH)));
- table.getDefaultCell().setLeading(0f,1.0f);
- table.addCell("blahblah\nblahblahblah\nblahblah\nblahblahblah\nblahblah\nblahblahblah\nblahblah\nblahblahblah\n");
- document.add(table);
32、设置单元格边框
- PdfPTabletable1=newPdfPTable(3);
- table1.getDefaultCell().setBorder(PdfPCell.NO_BORDER);
- table1.addCell(newParagraph("Cell1"));
- table1.addCell(newParagraph("Cell2"));
- table1.addCell(newParagraph("Cell3"));
- document.add(table1);
- document.newPage();
- Rectangleb1=newRectangle(0f,0f);
- b1.setBorderWidthLeft(6f);
- b1.setBorderWidthBottom(5f);
- b1.setBorderWidthRight(4f);
- b1.setBorderWidthTop(2f);
- b1.setBorderColorLeft(BaseColor.RED);
- b1.setBorderColorBottom(BaseColor.ORANGE);
- b1.setBorderColorRight(BaseColor.YELLOW);
- b1.setBorderColorTop(BaseColor.GREEN);
- PdfPTabletable2=newPdfPTable(1);
- PdfPCellcell=newPdfPCell(newParagraph("Cell1"));
- cell.cloneNonPositionParameters(b1);
- table2.addCell(cell);
- document.add(table2);
33、PdfPTableEvent
34、PdfPCellEvent
35、PdfPageEventHelper