java生成PDF,各种格式、样式、水印都有

需要的JAR包链接:https://www.langhuaquan.com/asset/search/JAVA生成PDF需要的JAR包/

原文链接:https://www.langhuaquan.com/blog/23.html

 

代码中有两处需要图片,请自行替换。 一个是水印、一个是手指。 

下面是预览:

 

 

//创建PDF时需要的工具类

public class DataUtil {
    /**
    * 分割路径
    * @param path
    * @return 返回分割后的路径
    */
    public static String[] separatePath(String path){
        if(StringUtils.isBlank(path)){
            return null;
        }
        String[] sep = path.split(".");
        return new String[]{sep[0],sep[1]};
    }
}

 

 

 

 

 

 

//创建PDF的工具类

package com.workmanagement.util;
 

import java.awt.Color;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;


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.Image;
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.PdfContentByte;
import com.lowagie.text.pdf.PdfGState;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfStamper;
import com.lowagie.text.pdf.PdfWriter;




public class PDFUtil {

public static void main(String[] args) throws Exception {
imageWaterMark(createPDF(), "F://title.jpg"); 
}


/**
* 创建PDF文档
* @return
* @throws Exception
* @throws docException
*/
public static String createPDF() throws Exception {
        
    //输出路径
    String outPath = "F://test.pdf";//DataUtil.createTempPath(".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 redTextFont = new Font(bfChinese,11,Font.NORMAL,Color.RED); //正常,红色
        Font boldFont = new Font(bfChinese,11,Font.BOLD); //加粗
        Font redBoldFont = new Font(bfChinese,11,Font.BOLD,Color.RED); //加粗,红色
        Font firsetTitleFont = new Font(bfChinese,22,Font.BOLD); //一级标题
        Font secondTitleFont = new Font(bfChinese,15,Font.BOLD); //二级标题
        Font underlineFont = new Font(bfChinese,11,Font.UNDERLINE); //下划线斜体
        
        //手指图片
        Image hand = Image.getInstance("F:hand.png");
        
        //创建输出流
        PdfWriter.getInstance(doc, new FileOutputStream(new File(outPath)));
        
        doc.open();
        doc.newPage();
        
        //段落  
        Paragraph p1 = new Paragraph();  
        //短语
        Phrase ph1 = new Phrase();  
        //块
        Chunk c1 = new Chunk("*********", boldFont) ;
        Chunk c11 = new Chunk("(信用报告提供机构l ogo)", textFont) ;
        //将块添加到短语
        ph1.add(c1);
        ph1.add(c11);
        //将短语添加到段落
        p1.add(ph1);
        //将段落添加到短语
        doc.add(p1);
        
        p1 = new Paragraph();  
        ph1 = new Phrase(); 
        Chunk c2 = new Chunk("报告编号:", boldFont) ;
        Chunk c22 = new Chunk("SN-201604010001", textFont) ;
        ph1.add(c2);
        ph1.add(c22);
        p1.add(ph1);
        doc.add(p1);
        
        p1 = new Paragraph("企业信用报告", firsetTitleFont);
        p1.setLeading(50);
        p1.setAlignment(Element.ALIGN_CENTER);
        doc.add(p1);


        p1 = new Paragraph("(企业版)", textFont);
        p1.setLeading(20);
        p1.setAlignment(Element.ALIGN_CENTER);
        doc.add(p1);
            
        p1 = new Paragraph();  
        p1.setLeading(20);
        p1.setAlignment(Element.ALIGN_CENTER);
        ph1 = new Phrase(); 
        Chunk c3 = new Chunk("查询时间:", boldFont) ;
        Chunk c33 = new Chunk("2016-04-01 00:00:00", textFont) ;
        Chunk c4 = new
  • 12
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 25
    评论
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值