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

devtools/2024/10/18 10:15:07/

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.ppmy.cn/devtools/27852.html

相关文章

Ansible 中的copy 复制模块应用详解

作者主页&#xff1a;点击&#xff01; Ansible专栏&#xff1a;点击&#xff01; 创作时间&#xff1a;2024年4月25日13点40分 Ansible 中的 copy 模块用于将文件或目录从本地计算机或远程主机复制到远程主机上的特定位置。它是一个功能强大的模块&#xff0c;可用于各种文…

hadoop学习---基于hive的航空公司客户价值的LRFCM模型案例

案例需求&#xff1a; RFM模型的复习 在客户分类中&#xff0c;RFM模型是一个经典的分类模型&#xff0c;模型利用通用交易环节中最核心的三个维度——最近消费(Recency)、消费频率(Frequency)、消费金额(Monetary)细分客户群体&#xff0c;从而分析不同群体的客户价值。在某些…

Scala 第三篇 OOP篇

Scala 第三篇 OOP篇 上接&#xff1a;Scala 第二篇 算子篇 前序一、类 1、修饰符2、创建类示例3、类的继承 二、抽象类三、单例对象四、特质 1、动态混入2、抽象类 VS 特质 五、内部类六、样例类七、枚举八、泛型九、隐式类十、包与包对象练习 前序 1、Scala 为纯粹OOP 1.1、…

维修家政按摩到家上门小程序开源版开发

维修家政按摩到家上门小程序开源版开发 智能定位&#xff0c;精准计费——全新上门服务平台功能解析。 全新上门服务平台已经上线&#xff0c;它拥有一系列强大的功能&#xff0c;旨在为用户提供最便捷、最个性化的服务体验。 !](https://img-blog.csdnimg.cn/direct/86195e…

38-3 Web应用防火墙 - 安装配置WAF

首先需要安装Centos 7 虚拟机:Centos7超详细安装教程_centos7安装教程-CSDN博客 安装配置WAF 在桌面环境中,右键点击打开终端,首先执行以下步骤: 1)安装必要的工具: 输入命令: sudo su yum install -y wget epel-release 2)第二步,安装依赖工具,输入以下命令: y…

使用Photoshop压缩图片大小的4种方法

使用Photoshop压缩图片大小&#xff0c;一般可采用下面4种方法&#xff1a; 1.调整图片分辨率&#xff1a; 打开需要压缩的图片文件。 依次点击菜单栏中的“图像”>“图像大小”。 在弹出的对话框中&#xff0c;通过调整分辨率参数来减小文件大小。 2.降低图片品质&#…

蓝桥杯练习系统(算法训练)ALGO-952 简易编辑器

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 你要实现一个简易文本编辑器&#xff0c;每个字符是一个整数&#xff0c;程序要完成一下操作&#xff1a;   P 光标左移&…

1.Neo4j图数据库介绍

背景 1.社交、电商、金融、零售、物联网行业&#xff0c;现实社会组织起了一张庞大复杂的关系网。 2.传统数据库很难处理关系运算。 3.需要一种支持海量复杂数据关系运算的数据库。 图数据库是以图数据结构存储和查询数据&#xff0c;是一种NoSQL数据库&#xff0c;存储更多…