手机网站 文件上传,塑料公司网站建设方案,外贸网站建设经验,沈阳鸿晟服装有限公司的案例前言#xff1a;以前出过两期用itext填充pdf的文章#xff0c;有人说那个会那字体加入到pdf中#xff0c;导致pdf占用内存过大#xff0c;那么今天就来分享一期另外的方法。 java使用itext生成pdf1、导包2、直接贴代码#xff0c;然后大家看注释3、效果1、导包
depen…前言以前出过两期用itext填充pdf的文章有人说那个会那字体加入到pdf中导致pdf占用内存过大那么今天就来分享一期另外的方法。
java使用itext生成pdf1、导包2、直接贴代码然后大家看注释3、效果1、导包
dependencygroupIdcom.itextpdf/groupIdartifactIditextpdf/artifactIdversion5.5.13.2/version
/dependency2、直接贴代码然后大家看注释
import cn.hutool.core.date.DateUtil;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfWriter;import javax.imageio.ImageIO;
import java.io.*;public class Demo2 {public static void main(String[] args) {Demo2.pdf();}public static void pdf() {PdfContentByte waterMar;try {//文档对象 实现A4纸页面Document document new Document(PageSize.A4);//document.setMarginMirroring(true);//设置文档的页边距就是距离页面边上的距离分别为左边距右边距上边距下边距document.setMargins(70, 70, 20, 10);//这个是生成破pdf的位置以及名称String fileName C:\\Users\\Desktop\\ System.currentTimeMillis() .pdf;PdfWriter pdfWriter PdfWriter.getInstance(document, new FileOutputStream(fileName));//打开文档document.open();// 加载字体因为我们标题和正文可能用的不是同一种字体所以我们创建两种字体//有其他需求的就可以创建更多的字体//字体都是电脑自带的如果你想要的电脑没有就去网上下载//创建标题字体BaseFont title BaseFont.createFont(c://windows//fonts//simhei.ttf, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);//创建正文字体BaseFont bf BaseFont.createFont(c://windows//fonts//simfang.ttf, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);//上面是基础的字体代表使用哪一种字体下面设置的是字体的字号粗细等等属性//使用上面的title 字体 加粗这个是标题字体Font titleFont new Font(title, 22, Font.BOLD);//使用字体正文字体Font font new Font(bf, 16);// 这个是我们动态填充的字体Font.UNDERLINE带下划线的Font underlineFont new Font(bf, 16, Font.UNDERLINE); // -------------------设置 二维码图片 ----------------// 加入水印waterMar pdfWriter.getDirectContentUnder();// 开始设置水印图片waterMar.beginText();ByteArrayOutputStream out new ByteArrayOutputStream();//QrCodeUtils.createQrCodeBufferdImage这个方法就是将网址变成二维码图片ImageIO.write(QrCodeUtils.createQrCodeBufferdImage(https://www.baidu.com,100, 100), png, out);byte[] b out.toByteArray();Image itextimage Image.getInstance(b);// 水印图片位置 第一个参数为x轴第二个参数为y轴itextimage.setAbsolutePosition(120, 410);// 附件加上水印图片waterMar.addImage(itextimage);//结束设置waterMar.endText();waterMar.stroke();// -------------------设置 段落 ----------------//这里面可以设置段落和短语块如果是那种固定文字的段落就可以用段落//如果我们需要生成的段落里有需要动态填充的就用块一点一点的拼起来直到达到我们的效果//段落Paragraph p null;p new Paragraph(哈哈哈哈哈哈哈哈哈哈哈哈哈哈, titleFont);p.setLeading(30);p.setAlignment(Element.ALIGN_CENTER);//设置对齐方式这个是居中对齐document.add(p);p new Paragraph(哈哈哈哈哈哈哈, titleFont);p.setLeading(30);p.setAlignment(Element.ALIGN_CENTER);//设置对齐方式document.add(p);p new Paragraph();//短语Phrase ph new Phrase();//块ph.add(new Chunk(哈哈哈哈哈哈哈, font));ph.add(new Chunk(2022 , underlineFont));//年份ph.add(new Chunk(第, font));ph.add(new Chunk(100 , underlineFont));// 号数ph.add(new Chunk(号, font));p.add(ph);p.setSpacingBefore(20);//段落与段落的间距我们一个ph就组成一个段落p.setAlignment(Element.ALIGN_RIGHT);//设置对齐方式右对齐p.setLeading(20);//行间距document.add(p);p new Paragraph();ph new Phrase();ph.add(new Chunk(哈哈哈哈哈哈哈, underlineFont));//机构名称p.add(ph);//设置和上行的间隔p.setSpacingBefore(10);//p.setLeading(20);document.add(p);p new Paragraph();ph new Phrase();ph.add(new Chunk( 哈哈哈哈哈哈哈, font));ph.add(new Chunk(哈哈哈哈哈哈哈1, underlineFont));//项目名称ph.add(new Chunk(哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈2, font));ph.add(new Chunk(哈哈哈哈哈哈哈3, underlineFont));//医院名称ph.add(new Chunk(哈哈哈哈哈哈哈4, font));ph.add(new Chunk(哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈5, underlineFont));//建设项目名称ph.add(new Chunk(哈哈哈哈哈哈哈哈哈哈哈哈哈哈6, font));ph.add(new Chunk(哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈7, underlineFont));//号ph.add(new Chunk(哈哈哈哈哈哈哈8, font));//ph.setMultipliedLeading(20);p.add(ph);p.setSpacingBefore(5);p.setLeading(30);document.add(p);p new Paragraph();ph new Phrase();ph.add(new Chunk( 哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈9, font));ph.add(new Chunk(哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈10, underlineFont));//项目名称ph.add(new Chunk(哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈11, font));p.add(ph);p.setSpacingBefore(5);p.setLeading(30);document.add(p);p new Paragraph();ph new Phrase();ph.add(new Chunk( 哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈12。, font));p.add(ph);p.setSpacingBefore(5);p.setLeading(30);document.add(p);p new Paragraph();ph new Phrase();ph.add(new Chunk( 此复, font));p.add(ph);p.setSpacingBefore(5);p.setLeading(30);document.add(p);p new Paragraph();ph new Phrase();ph.add(new Chunk(哈哈哈哈哈哈哈哈哈哈哈哈哈哈13, font));p.add(ph);p.setSpacingBefore(5);p.setAlignment(Element.ALIGN_RIGHT);//设置对齐方式p.setLeading(30);document.add(p);p new Paragraph();ph new Phrase();String date DateUtil.now();ph.add(new Chunk(date.substring(0, 4) , underlineFont));//年ph.add(new Chunk(年, font));ph.add(new Chunk(date.substring(5, 7) , underlineFont));//月ph.add(new Chunk(月, font));ph.add(new Chunk(date.substring(8, 10) , underlineFont));//日ph.add(new Chunk(日, font));p.add(ph);p.setSpacingBefore(5);p.setAlignment(Element.ALIGN_RIGHT);//设置对齐方式p.setLeading(30);document.add(p);document.close();pdfWriter.close();System.out.println(创建成功);} catch (Exception e) {e.printStackTrace();}}
}3、效果 怎么样是不是超级简单呢只需要简单的调试就可以达到我们所需要的效果简直yyds。