当前位置: 首页 > news >正文

公司网站的维护汕头网站制作网页

公司网站的维护,汕头网站制作网页,wordpress多少钱,东莞横沥网站制作目录 前言一、引入依赖二、整体思路与步骤三、代码实现(完整例子)1、创建一个接口2、创建自定义事件处理器3、创建一个实现类4、写一个控制器调用接口5、启动springboot项目,浏览器调用接口前言 iTextPDF 是一个用于创建和操作 PDF 文档的 Java 库。它功能强大,支持生成、修…

目录

  • 前言
    • 一、引入依赖
    • 二、整体思路与步骤
    • 三、代码实现(完整例子)
      • 1、创建一个接口
      • 2、创建自定义事件处理器
      • 3、创建一个实现类
      • 4、写一个控制器调用接口
      • 5、启动springboot项目,浏览器调用接口

前言

  iTextPDF 是一个用于创建和操作 PDF 文档的 Java 库。它功能强大,支持生成、修改、加密、签名 PDF 文件,二维码、条形码生成等操作,本文使用iTextPDF的8.0.5版本,总结了利用iTextPDF技术来实现pdf生成的各种操作,如果大家在项目中有pdf生成的需求可以按照此篇文章的例子来实现。

一、引入依赖

  在pom文件中引入如下依赖
1、itextpdf核心包

<dependency><groupId>com.itextpdf</groupId><artifactId>itext-core</artifactId><version>8.0.5</version><type>pom</type>
</dependency>

2、中文字体支持包

<dependency><groupId>com.itextpdf</groupId><artifactId>font-asian</artifactId><version>8.0.5</version>
</dependency>

3、二维码和条形码包

<dependency><groupId>com.itextpdf</groupId><artifactId>barcodes</artifactId><version>8.0.5</version>
</dependency>

4、加密相关包(如无pdf加密可以不引入)

<dependency><groupId>com.itextpdf</groupId><artifactId>kernel</artifactId><version>8.0.5</version>
</dependency>
<dependency><groupId>com.itextpdf</groupId><artifactId>bouncy-castle-adapter</artifactId><version>8.0.5</version>
</dependency>

二、整体思路与步骤

  一般情况下我们生成的pdf大概包含标题、正文、页眉、页脚、字体、背景、水印、表格、加密等这些元素,由于生成的pdf可能存在多页,所以像是页眉、页脚、背景、水印这些元素需要每一页都存在,特别是页脚中的页码数字还需要随着页数增加自动填充,iTextPDF 提供了一个IEventHandler(事件处理器)接口,我们通过实现这个接口就可以自定义实现上述效果,可以在每一页插入元素。
  整体的pdf生成思路如下:

1、创建ByteArrayOutputStream输出流对象,用于存放数据
2、创建WriterProperties配置项对象,此配置可以设置pdf加密等内容
3、创建PdfDocument文档对象并且添加流对象和配置对象
4、创建自定义事件处理器并添加,用于处理页眉页脚等内容
5、创建字体PdfFont对象,用于pdf文档统一字体
6、创建PageSize页面尺寸对象,用于设置pdf尺寸,一般也就是A4
7、通过PdfDocument对象创建Document文档对象并且设置尺寸
8、通过Document文档对象设置字体、创建标题、段落、表格等等我们业务所需要的内容
9、上述步骤处理完毕后数据就已经存在于ByteArrayOutputStream输出流中,然后将流响应到浏览器下载

三、代码实现(完整例子)

  根据上述步骤进行详细代码编写,本篇文章通过实现一个接口实现pdf生成并响应到浏览器下载的效果,这也是常见的开发需求,如果大家在项目中有遇到的可以直接看这个例子,只需要根据自己的业务删减修改即可。

1、创建一个接口

  创建一个生成pdf接口PdfService,创建一个生成pdf的方法generatePdf传入一个响应对象用于后续调用时候响应到浏览器下载

import javax.servlet.http.HttpServletResponse;/*** @Author: 你住过的屋檐* @aphorism You are lucky to have someone to help you.No one to help you, is just fate.No one should do anything for you, because life is your own, you are responsible for yourself*/
public interface PdfService {
/*** 生成pdf* @param response*/void generatePdf(HttpServletResponse response);
}

2、创建自定义事件处理器

  事件处理器中处理页眉、页脚、二维码、条形码、背景等内容,下面代码中每一处都有详细的说明,大家一看就可以明白

import com.itextpdf.barcodes.Barcode128;
import com.itextpdf.barcodes.BarcodeQRCode;
import com.itextpdf.barcodes.qrcode.EncodeHintType;
import com.itextpdf.barcodes.qrcode.ErrorCorrectionLevel;
import com.itextpdf.io.image.ImageData;
import com.itextpdf.io.image.ImageDataFactory;
import com.itextpdf.kernel.colors.ColorConstants;
import com.itextpdf.kernel.events.Event;
import com.itextpdf.kernel.events.IEventHandler;
import com.itextpdf.kernel.events.PdfDocumentEvent;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.geom.AffineTransform;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfPage;
import com.itextpdf.kernel.pdf.canvas.PdfCanvas;
import com.itextpdf.kernel.pdf.extgstate.PdfExtGState;
import com.itextpdf.kernel.pdf.xobject.PdfFormXObject;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Div;
import com.itextpdf.layout.element.Image;
import lombok.Data;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.HashMap;
import java.util.Map;/*** @Author: 你住过的屋檐* @aphorism You are lucky to have someone to help you.No one to help you, is just fate.No one should do anything for you, because life is your own, you are responsible for yourself* 该类实现了给pdf添加背景图、水印,条形码、二维码,页码功能,大家有需要自行看代码,注释写的很详尽*/
@Data
public class PdfHeaderFooter implements IEventHandler {@Overridepublic void handleEvent(Event event) {if (event instanceof PdfDocumentEvent) {PdfDocumentEvent e = (PdfDocumentEvent) event;//获取pdf文档对象PdfDocument pdfDocument = e.getDocument();//获取当前文档的
http://www.dtcms.com/a/530083.html

相关文章:

  • 图书馆网站建设方案设计论文湖南网站建设推荐
  • 柳州做网站的企业外包做网站需要多少钱
  • 做淘宝货源网站网站主页设计模板
  • 做网站的公司怎样收费12380网站建设情况
  • 减少网站跳出率目前好的推销网站
  • 苏州网站建设运营推广咸鱼网站交易付款怎么做
  • 做网站开发前景如何谈一谈对网站开发的理解
  • 南乐网站建设电话wordpress 5发布
  • 平顶山营销型网站建设清远最新通知
  • 江苏网站推广商标设计网站推荐
  • 建设企业网站需注意什么中国建设劳动学会网站
  • 服务器网站打开慢建设银行人才招聘官方网站
  • 网页设计制作网站html代码杭州网络科技公司排名
  • 上传到网站的根目录中四川成都旅游必去十大景点推荐
  • 宝塔建设网站上海的网站开发公司电话
  • 怎么看网站是否织梦门户网站建设滞后
  • 深喉咙企业网站官方网站建设需求规格说明书
  • 做相亲网站犯法吗vs2015做网站的后端
  • 新源网站建设手机网站模板源码
  • Linux中文件路径解析函数path_walk的实现
  • 群辉wordpress东莞市网络优化推广服务机构
  • 网站建设的安全威胁wordpress customize.php
  • 学做快餐的视频网站传奇网页版游戏开服表
  • 镇江网站搜索排名云主机网站如何备份
  • 学校网站设计及代码国内最好的摄影网站
  • 公文写作网站公司宣传册设计模板
  • 民权做网站哪家好wordpress ip_hash失效
  • 计算机网络自顶向下方法2——网络、ISP连接结构介绍
  • 速卖通网站怎样做店面的二维码百度网站广告怎么做
  • 【笔记】修复 ComfyUI 启动报错 KeyError: ‘luts‘ 和 KeyError: ‘tensorrt‘