Java根据模板动态生成Pdf(添加页码、文件加密、Spire免费版本10页之后无法显示问题、嵌入图片添加公章、转Base64)

Java根据模板动态生成Pdf:添加页码、文件加密、Spire免费版本10页之后无法显示问题、嵌入图片添加公章、转Base64

  • 引言
  • 【Java根据模板动态生成Pdf资源地址】
  • 示例一:动态生成带页码的PDF报告
  • 示例二:加密PDF以保护敏感信息
  • 示例三:应对免费版本限制——Spire.PDF 10页之后内容显示问题
  • 示例四:嵌入图片并添加电子公章
  • 实例五:转换生成的PDF至Base64编码
  • 结语
  • Java根据模板动态生成Pdf示例:


引言

        在众多企业级应用中,生成动态PDF文档是一项常见且关键的任务。这里将详细介绍如何运用Java编程语言,结合模板技术,实现从添加页码、文件加密、处理免费库限制、嵌入图片加盖公章到转换为Base64编码等一系列高级功能。我们将深入探讨多种应用场景,并附上简明易懂的代码片段和详细说明。

【Java根据模板动态生成Pdf资源地址】

       【→→→戳我跳转→】

示例一:动态生成带页码的PDF报告

描述
在长篇报告或者多页合同中,页码的自动添加尤为重要。

// 假设已创建Document对象document并填充内容
document.newPage();
// 设置空页码进行展示
writer.setPageEmpty(false);
PdfImportedPage page = writer.getImportedPage(reader, i);
// 复制好的页面,添加到内容去,触发事件监听
pdfContent.addTemplate(page, 0, 0);

示例二:加密PDF以保护敏感信息

描述
为了保证文档安全,我们可以利用iTextpdf对生成的PDF进行加密。

// spire.pdf.free免费加密源码
public void encrypt(String openPassword, String permissionPassword, EnumSet<PdfPermissionsFlags> permissions, PdfEncryptionKeySize keySize) {if (this.spr  .spr ()) {throw new IllegalStateException(sprPG.spr  ("1T\u001c\u0015\u001cZ\u0006\u0015\u0017[\u0011G\u000bE\u0006\u0015\u0013[RP\u001cV\u0000L\u0002A\u0017QRQ\u001dV\u0007X\u0017[\u0006\u001b&]\u0017\u0015\u0002P\u0000X\u001bF\u0001\\\u001d[RE\u0013F\u0001B\u001dG\u0016\u0015\u001bFR\\\u001cC\u0013Y\u001bQ\\"));} else {this.setUserPassword(openPassword);this.setOwnerPassword(permissionPassword);this.setPermissions(permissions);this.setKeySize(keySize);}
}

示例三:应对免费版本限制——Spire.PDF 10页之后内容显示问题

描述
某些免费版PDF库可能有页数限制。若遇到类似情况,比如Spire PDF免费版超过10页不显示内容的问题,可以通过购买商业授权或选择开源替代方案解决。

// 加密源码
public void setEncryption(byte[] userPassword, byte[] ownerPassword, int permissions, int encryptionType) throws DocumentException {if (this.stamper.isAppend()) {throw new DocumentException(MessageLocalization.getComposedMessage("append.mode.does.not.support.changing.the.encryption.status", new Object[0]));} else if (this.stamper.isContentWritten()) {throw new DocumentException(MessageLocalization.getComposedMessage("content.was.already.written.to.the.output", new Object[0]));} else {this.stamper.setEncryption(userPassword, ownerPassword, permissions, encryptionType);}
}

示例四:嵌入图片并添加电子公章

描述
在合同文档中嵌入公司公章图片,增强文件的合法性和权威性。

// 设置图片资源中的源码
public void setBaseURL(String url) {this.uac.setBaseURL(url);
}// 使用iText的其他示例,仅供参考,资源中有其他示例
Image img = Image.getInstance("company_stamp.png");
img.setAlignment(Image.ALIGN_CENTER);
document.add(img);// 或者精确定位印章位置
PdfTemplate template = writer.getDirectContent().createTemplate(img.getScaledWidth(), img.getScaledHeight());
template.addImage(img, img.getWidth(), 0, 0, img.getHeight(), 0, 0);
// 添加印章到指定坐标
ColumnText.showTextAligned(writer.getDirectContentUnder(), Element.ALIGN_CENTER, new Phrase(""), 0, 0, 0); // 清除当前位置
writer.getDirectContentUnder().addTemplate(template, xPosition, yPosition);

实例五:转换生成的PDF至Base64编码

描述
为了在网络传输或存储时方便处理,有时我们需要将PDF转换为Base64字符串。

// demo示例
try (FileInputStream fis = new FileInputStream("output.pdf")) {byte[] pdfBytes = new byte[fis.available()];fis.read(pdfBytes);String encodedPdf = Base64.getEncoder().encodeToString(pdfBytes);// 现在encodedPdf变量就包含了PDF文件的Base64编码
} catch (IOException e) {// 处理异常
}

结语

        通过以上几个实际的应用场景展示,我们了解了如何在Java中利用模板技术和PDF库有效地处理复杂的文档生成任务。实践中,请您根据实际情况调整上述代码和描述,确保它们与您的具体实现相符。同时,如果您的代码资源中使用的是其他PDF库,请相应替换上述示例代码。

Java根据模板动态生成Pdf示例:

       【Java根据模板动态生成Pdf资源地址→→→戳我跳转】

  • 导出的Pdf 示例
    在这里插入图片描述

  • 页码示例
    在这里插入图片描述

  • Sprire.PDF 免费加密版10页之后失效
    在这里插入图片描述

  • 加密示例
    在这里插入图片描述

  • 公章示例(添加图片)
    在这里插入图片描述

  • 10页后解决方案示例
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/317023.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Matlab使用深度学习的多曝光图像融合

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 在图像处理领域&#xff0c;多曝光图像融合技术是一种重要的技术&#xff0c;它可以将不同曝光条件下…

详解centos8 搭建使用Tor 创建匿名服务和匿名网站(.onion)

1 Tor运行原理&#xff1a; 请求方需要使用&#xff1a;洋葱浏览器&#xff08;Tor Browser&#xff09;或者Google浏览器来对暗&#xff0c;网网站进行访问 响应放需要使用&#xff1a;Tor协议的的Hidden_service 2 好戏来了 搭建步骤&#xff1a; 1.更新yum源 rpm -Uvh h…

代码随想录——双指针与滑动窗口(四)

一.1423. 可获得的最大点数 题目详情 解题思路 这里我们每次只能取最左或最右边的卡牌,第一反应其实是使用双指针&#xff0c;通过局部贪心来解决&#xff0c;但是如果两边相等的话用局部贪心无法来判断到底取哪一边&#xff0c;那我们不妨换一个思路&#xff1a; 我们首先任…

avl excite python二次开发1--python解释器需用内置解释器aws_cmd

avl excite python二次开发1--python解释器需用内置解释器aws_cmd 1、python解释器问题1.1、用外置python解释器&#xff0c;import WSInterface会失败(WSInterface.pyd)1.2、用内置解释器aws_cmd运行py脚本1.3 用内置解释器aws_python执行脚本三级目录 1、python解释器问题 1…

如何打包VUE3项目并且部署到tomcat服务器上运行

创作灵感 最近在学习vue时&#xff0c;发现一件非常尴尬的事情——那就是学了、写了这么久的vue项目&#xff0c;但好像还没有真正的将vue项目打包部署过。 然后在尝试打包并部署vue项目的时候&#xff0c;遇到了一些问题&#xff0c;所以我对这些问题进行了总结&#xff0c;…

【数据结构】为了节省空间,对于特殊矩阵我们可以这样做……

特殊矩阵的压缩存储 导读一、数组与矩阵1.1 数组1.2 数组与线性表1.3 数组的存储结构1.4 矩阵在数组中的存储1.4.1 行优先存储1.4.2 列优先存储 二、特殊矩阵及其压缩存储三、对称矩阵及其存储3.1 方阵与对称矩阵3.2 对称矩阵的存储3.3 压缩存储的手动实现3.3.1 行优先存储3.3.…

上传jar到github仓库,作为maven依赖存储库

记录上传maven依赖包到github仓库问题 利用GitHubPackages作为依赖的存储库踩坑1 仓库地址问题踩坑2 Personal access tokens正确姿势一、创建一个普通仓库&#xff0c;比如我这里是fork的腾讯Shadow到本地。地址是&#xff1a;https://github.com/dhs964057117/Shadow二、生成…

单片机通讯协议

参考&#xff1a;江科大单片机教程 STM32入门教程-2023版 细致讲解 中文字幕_哔哩哔哩_bilibili IIC通讯协议SPI通信协议UARTCANUSB速度100k-400khz4Mhz-线数2 CLK,DATA4CLK,ENB,IO,OI额外设备一主多从一主多从 一般不用自己写&#xff0c;都有相应的库或官方提供相应的&#…

学习 Rust 第 23 天:闭包

Rust 闭包提供了简洁、富有表现力的匿名函数来捕获周围的变量。它们简化了代码&#xff0c;提供了存储、参数传递和函数重构方面的灵活性。它们与泛型的交互增强了灵活性&#xff0c;而捕获模式则促进了有效的所有权和可变性管理。从本质上讲&#xff0c;闭包是 Rust 的基础&am…

c#数据库: 9.删除和添加新字段/数据更新

先把原来数据表的sexy字段删除,然后重新在添加字段sexy,如果添加成功,sexy列的随机内容会更新.原数据表如下: using System; using System.Collections.Generic; using System.Data; using System.Data.Common; using System.Data.SqlClient; using System.Linq; using System.…

安全免费的远程软件有哪些?

远程访问软件&#xff0c;又称远程协助软件或远程控制软件&#xff0c;正在迅速走红。这类软件无论您身处何地&#xff0c;都能轻松实现远程访问和计算机控制。对于个人而言&#xff0c;远程控制工具使工作更加灵活、便捷&#xff1b;而对企业而言&#xff0c;远程访问软件也是…

jenkins转载文本

基于Docker容器DevOps应用方案 企业业务代码发布系统 一、企业业务代码发布方式 1.1 传统方式 以物理机或虚拟机为颗粒度部署部署环境比较复杂&#xff0c;需要有先进的自动化运维手段出现问题后重新部署成本大&#xff0c;一般采用集群方式部署部署后以静态方式展现 1.2 容…

【linuxC语言】进程概念与fork

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、进程的概念二、进程基本函数2.1 fork函数2.2 getpid与getppid函数 三、示例代码总结 前言 在 Linux 系统编程中&#xff0c;进程是计算机中正在执行的程序…

ip ssl证书无限端口网站

IP SSL证书是由CA认证机构颁发的一种特殊数字证书。大部分SSL数字证书都需要用户使用域名进行申请&#xff0c;想要对公网IP地址加密实现https访问就需要申请IP SSL证书。IP SSL证书采用了强大的加密算法&#xff0c;可以有效地防止数据在传输过程中被窃取或篡改&#xff0c;具…

使用 Python 和 DirectShow 从相机捕获图像

在 Python 中使用 OpenCV 是视觉应用程序原型的一个非常好的解决方案,它允许您快速起草和测试算法。处理从文件中读取的图像非常容易,如果要处理从相机捕获的图像,则不那么容易。OpenCV 提供了一些基本方法来访问链接到 PC 的相机(通过对象),但大多数时候,即使对于简单的…

html表格导出为word文档,导出的部分表格内无法填写文字

导出技术实现&#xff1a;fileSaver.jshtml-docx-js 1.npm安装 npm install --save html-docx-js npm install --save file-saver 2.页面引入 import htmlDocx from html-docx-js/dist/html-docx; import saveAs from file-saver;components: {htmlDocx,saverFile, }, 3.页…

【Paddle】PCA线性代数基础 + 领域应用:人脸识别算法(1.1w字超详细:附公式、代码)

【Paddle】PCA线性代数基础及领域应用 写在最前面一、PCA线性代数基础1. PCA的算法原理2. PCA的线性代数基础2.1 标准差 Standard Deviation2.2 方差 Variance2.3 协方差 Covariance2.4 协方差矩阵 The Covariance Matrix2.5 paddle代码demo①&#xff1a;计算协方差矩阵2.6 特…

【记录】Python3| 将 PDF 转换成 HTML/XML(✅⭐⭐⭐⭐pdf2htmlEX)

本文将会被汇总至 【记录】Python3&#xff5c;2024年 PDF 转 XML 或 HTML 的第三方库的使用方式、测评过程以及对比结果&#xff08;汇总&#xff09;&#xff0c;更多其他工具请访问该文章查看。 文章目录 pdf2htmlEX 使用体验与评估1 安装指南2 测试代码3 测试结果3.1 转 HT…

美国言语听力学会(ASHA)关于非处方 (OTC) 助听器的媒体声明(翻译稿)

美国国会于 2021 年 4 月 13 日批准美国听力学会积极提供建议&#xff0c;并一直积极参与制定FDA关于非处方助听器销售的拟议法规。根据2017年通过的立法授权。学院积极参与帮助塑造授权立法&#xff0c;并就即将出台的条例分享了建议。 根据美国卫生与公众服务部NIH / NIDCD的…

Flink checkpoint 源码分析- Checkpoint barrier 传递源码分析

背景 在上一篇的博客里&#xff0c;大致介绍了flink checkpoint中的触发的大体流程&#xff0c;现在介绍一下触发之后下游的算子是如何做snapshot。 上一篇的文章: Flink checkpoint 源码分析- Flink Checkpoint 触发流程分析-CSDN博客 代码分析 1. 在SubtaskCheckpointCoo…