利用itext导出PDF的小例子

我这边使用的jar包:

itext-2.1.7.jar

itextasian-1.5.2.jar

 

代码,简单的小例子,导出pdf:

PdfService.java:

package com.cy.service;

import java.awt.Color;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.springframework.stereotype.Service;
import com.lowagie.text.Cell;
import com.lowagie.text.Chunk;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;
import com.lowagie.text.Rectangle;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;

@Service
public class PdfService {
    
    public static void main(String[] args) throws Exception {
        //准备的参数
        String specName = "基本VLAN基本VLAN基本VLAN基本VLAN基本VLAN基本VLAN基本VLAN基本VLAN基本VLAN基本VLAN基本VLAN基本VLAN基本VLAN";
        String matureTitle = "成熟度:";
        String matureWord = "成熟特性 受控特性 不可商用";
        String descriptionTitle = "描述:";
        String descriptionWord = "从便利性、渲染效果综合来看,还是用XmlWorker好些。虽然渲染效果没有达到极致,但十分有利于用户自定义模板";
        String remarkTitle = "备注:";
        String remarkWord = "对于美制裁中兴一事,商务部新闻发言人高峰19日在回答记者提问时再次强调";
        String boardName = "CloudEngine 12800 V200R001C00";
        String pathTitle = "路径";
        String pathWord = "CloudEngine 12800 V200R001C00>CE12800";
        String xiangqTitle = "详情";
        String xiangqWord = "美方行径引起了市场对美国贸易和投资环境的普遍担忧,美方的行为表面针对中国,但最终伤害的是美国自身,不仅会使其丧失数以万计的就业机会,还会影响成百上千的美国关联企业";
        String beizTitle = "备注";
        String beizWord = "将会动摇国际社会对美国投资和营商环境稳定的信心。希望美方不要自作聪明,否则只会自食其果。也希望美方不要低估中方的决心,如果美方坚持通过单边主义的保护政策,不惜伤害中美两国企业利益";
        
        
         String outPath = "test.pdf";
         Rectangle rect = new Rectangle(PageSize.A4);
         Document doc=new Document(rect);
        //中文字体,解决中文不能显示问题
         BaseFont bfChinese=BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
         
         //设置字体样式
         Font textFont = new Font(bfChinese,11,Font.NORMAL); //正常
         Font boldFont = new Font(bfChinese,11,Font.BOLD); //加粗
         Font titleFont = new Font(bfChinese,15,Font.BOLD); //二级标题
         Color grayColor = new Color(204,204,204);
         
         PdfWriter.getInstance(doc, new FileOutputStream(new File(outPath)));
         doc.open();
         doc.newPage();
         
         //规格名称
//         Paragraph p= new Paragraph(specName, titleFont);
//         p.setAlignment(Element.ALIGN_CENTER);
//         doc.add(p);
         PdfPTable head = new PdfPTable(1);
         head.setTotalWidth(new float[]{520}); //设置列宽
         head.setLockedWidth(true); //锁定列宽
         head.setSpacingBefore(10f); // 前间距
         head.setSpacingAfter(10f); // 后间距
         PdfPCell cell1 = new PdfPCell(new Phrase(specName, titleFont));
         cell1.setBorderWidth(0);
         cell1.setBackgroundColor(grayColor);
         cell1.setMinimumHeight(20); //设置单元格高度
         cell1.setHorizontalAlignment(Cell.ALIGN_CENTER); //设置水平居中
         cell1.setVerticalAlignment(Cell.ALIGN_MIDDLE); //设置垂直居中
         head.addCell(cell1);
         doc.add(head);
         
        
         //成熟度、描述、备注
         Paragraph p = new Paragraph();
         Phrase ph = new Phrase(); 
         Chunk c1 = new Chunk(matureTitle, boldFont) ;
         Chunk c2 = new Chunk(matureWord, textFont) ;
         ph.add(c1);
         ph.add(c2);
         p.add(ph);
         p.setLeading(20);
         doc.add(p);
         
         p = new Paragraph();
         ph = new Phrase(); 
         c1 = new Chunk(descriptionTitle, boldFont) ;
         c2 = new Chunk(descriptionWord, textFont) ;
         ph.add(c1);
         ph.add(c2);
         p.add(ph);
         p.setLeading(20);
         doc.add(p);
         
         p = new Paragraph();
         ph = new Phrase(); 
         c1 = new Chunk(remarkTitle, boldFont) ;
         c2 = new Chunk(remarkWord, textFont) ;
         ph.add(c1);
         ph.add(c2);
         p.add(ph);
         p.setLeading(20);
         doc.add(p);
         
         //创建2列的详情表格
         PdfPTable table = new PdfPTable(2);
         table.setSpacingBefore(20f);                    //table前间距
         table.setTotalWidth(new float[]{ 100, 420});     //设置列宽
         table.setLockedWidth(true); //锁定列宽
         PdfPCell cell;
         //第一行 实例名
         cell = new PdfPCell(new Phrase(" ", textFont));
         cell.setMinimumHeight(30); //设置单元格高度
         cell.setBackgroundColor(grayColor);
         table.addCell(cell);
         cell = new PdfPCell(new Phrase(boardName, textFont));
         cell.setBackgroundColor(grayColor);
         cell.setUseAscender(true); //设置可以居中
         cell.setHorizontalAlignment(Cell.ALIGN_CENTER); //设置水平居中
         cell.setVerticalAlignment(Cell.ALIGN_MIDDLE); //设置垂直居中
         table.addCell(cell);
         //第二行 路径
         cell = new PdfPCell(new Phrase(pathTitle, textFont));
         cell.setMinimumHeight(40); 
         cell.setUseAscender(true); 
         cell.setHorizontalAlignment(Cell.ALIGN_CENTER); 
         table.addCell(cell);
         cell = new PdfPCell(new Phrase(pathWord, textFont));
         cell.setUseAscender(true); 
         cell.setHorizontalAlignment(Cell.ALIGN_CENTER); 
         table.addCell(cell);
         //第三行 详情
         cell = new PdfPCell(new Phrase(xiangqTitle, textFont));
         cell.setMinimumHeight(80); 
         cell.setUseAscender(true); 
         cell.setHorizontalAlignment(Cell.ALIGN_CENTER); 
         table.addCell(cell);
         cell = new PdfPCell(new Phrase(xiangqWord, textFont));
         cell.setUseAscender(true); 
         cell.setHorizontalAlignment(Cell.ALIGN_CENTER); 
         table.addCell(cell);
         //第四行 备注
         cell = new PdfPCell(new Phrase(beizTitle, textFont));
         cell.setMinimumHeight(120); 
         cell.setUseAscender(true); 
         cell.setHorizontalAlignment(Cell.ALIGN_CENTER); 
         table.addCell(cell);
         cell = new PdfPCell(new Phrase(beizWord, textFont));
         cell.setUseAscender(true); 
         cell.setHorizontalAlignment(Cell.ALIGN_CENTER); 
         table.addCell(cell);
         
         doc.add(table);
         doc.close();
         
         System.out.println("------------->>写出完毕");
    }
    
    
    
}

 

运行之后导出的效果:

 

posted on 2018-04-20 00:47  有点懒惰的大青年  阅读(1432)  评论(0编辑  收藏  举报