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

news2025/1/9 2:34:23

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.coloradmin.cn/o/1636212.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

netty整合springboot之后自动重连失效,如何解决?

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

【AIGC调研系列】InternVL开源多模态模型与GPT-4V的性能对比

InternVL和GPT-4V都是多模态模型&#xff0c;但它们在性能、参数量以及应用领域上有所不同。 InternVL是一个开源的多模态模型&#xff0c;其参数量为60亿&#xff0c;覆盖了图像/视频分类、检索等关键任务&#xff0c;并在32个视觉-语言基准测试中展现了卓越性能[2]。InternV…

设计模式-01 设计模式单例模式

设计模式-01 设计模式单例模式 目录 设计模式-01 设计模式单例模式 1定义 2.内涵 3.使用示例 4.具体代码使用实践 5.注意事项 6.最佳实践 7.总结 1 定义 单例模式是一种设计模式&#xff0c;它确保一个类只能被实例化一次。它通过在类内部创建类的唯一实例并提供一个全…

c#数据库: 10.调用存储过程查询信息,并显示在窗体上

查询女生信息&#xff0c;并将信息显示在窗体上: 原数据表//右键数据库名,新建查询 ------------- 新建查询窗口,添加新建存储过程Procedure_GetGirls1和查询代码如下 : CREATE PROCEDURE dbo.Procedure_GetGirls1 /*存储过程名称*/ AS SELECT * f…

变电站自动化控制系统应用案例分析

变电站自动化控制系统介绍 变电站自动化控制系统用于大中型企业变电站项目&#xff0c;这类企业变压器多&#xff0c;日耗电量大。把多个变压器集中到一个电器平台上&#xff0c;集中管理分析&#xff0c;优化厂区用电管理&#xff0c;从而达到集中控制、集中分析、集中管理的…

【Unity 自定义组件】

想了解更多游戏开发知识,可以扫描下方二维码,免费领取游戏开发4天训练营课程 在Unity中&#xff0c;自定义组件&#xff08;Custom Component&#xff09;是指开发者根据游戏的具体需求编写的C#脚本&#xff0c;这些脚本可以附加到游戏对象&#xff08;GameObject&#xff09;…

如何远程访问服务器?

在现代信息技术的快速发展下&#xff0c;远程访问服务器已成为越来越多用户的需求。远程访问服务器能够让用户随时随地通过网络连接服务器&#xff0c;实现数据的传输和操作。本文将介绍远程访问服务器的概念&#xff0c;以及一种广泛应用于不同行业的远程访问解决方案——【天…

标准汽车试验铁地板的技术要求

在现代科技化发展的工作中&#xff0c;试验平台被广泛使用。铸铁试验平台&#xff08;试验铁地板&#xff09;又叫试验工作平台&#xff0c;听名字大家也不难想象出来这是一款带有箱式体的台面&#xff0c;这是一种有长方形或者圆形又或者正方形的试验工作台。 铸铁试验平台&a…

QT5制做两个独立窗口

目录 增加第二个窗口 主窗口文件添加一个私有成员为子窗口 定义两个槽函数和 关联按钮和子窗口和主窗口 添加子窗口成员 子窗口处理函数 补充回顾 增加第二个窗口 1、 2、 3 主窗口文件添加一个私有成员为子窗口 在mainwidget.h文件 同时添加两个槽&#xff1b;来处理…

(成品论文22页)24深圳杯数学建模A题1-4问完整代码+参考论文重磅更新!!!!

论文如下&#xff1a; 基于三球定位的多个火箭残骸的准确定位 针对问题一&#xff1a;为了进行单个残骸的精确定位&#xff0c;确定单个火箭残骸发生音爆 时的精确位置和时间&#xff0c;本文基于三球定位模型&#xff0c;考虑到解的存在性和唯一性&#xff0c; 选取了四个监测…

AI大模型日报#0430:疑似GPT4.5模型刷屏、上交实现「蛋白质功能定向进化」、微软紧急撤回WizardLM-2

导读&#xff1a; 欢迎阅读《AI大模型日报》&#xff0c;内容基于Python爬虫和LLM自动生成。目前采用“文心一言”生成了今日要点以及每条资讯的摘要。 《AI大模型日报》今日要点&#xff1a; 在AI大模型领域&#xff0c;多项研究进展和行业应用动态引发关注。一夜之间&#x…

第9篇:创建Nios II工程之读取Switch的值<二>

Q&#xff1a;上一期我们完成了Quartus硬件工程部分&#xff0c;本期我们创建Nios II软件工程这部分。 A&#xff1a;创建完BSP和Nios II Application之后&#xff0c;在source文件main.c中添加代码&#xff1a;system.h头文件中新增了Switch PIO IP的硬件信息&#xff0c;包括…

气象数据nc数据矢量化处理解析及可视化

气象数据可视化是将气象学领域中复杂的数据集转化为图形或图像的过程&#xff0c;以直观展示天气现象、气候模式、趋势和预报结果。气象数据的可视化技术广泛应用于科学研究、气象预报、航空、航海、农业生产、灾害预警系统、城市规划、公众服务等领域。以下是一些关键的气象数…

Stability AI 推出稳定音频 2.0:为创作者提供先进的 AI 生成音频

概述 Stability AI 的发布再次突破了创新的界限。这一尖端模型以其前身的成功为基础&#xff0c;引入了一系列突破性的功能&#xff0c;有望彻底改变艺术家和音乐家创建和操作音频内容的方式。 Stable Audio 2.0 代表了人工智能生成音频发展的一个重要里程碑&#xff0c;为质量…

口袋实验室--使用AD2学习频谱参数测试

目录 1. 简介 2. 频谱相关参数 2.1 频谱相关基本概念 2.1.1 采样时间间隔 2.1.2 采样频率 2.1.3 采样点数 2.1.4 采样时间长度 2.1.5 谱线数 2.1.6 奈奎斯特频率 2.1.7 频谱分辨率 2.1.8 最高分析频率 2.1.9 频谱泄露 2.2 窗函数 2.2.1 AD2的窗函数 2.2.2 测试矩…

Cesium 3dTileset 支持 uv 和 纹理贴图

原理: 使用自定义shader实现uv自动计算 贴图效果: uv效果:

链表算法题总结

链表作为一个基础的数据结构&#xff0c;在开发中经常被使用。 链表往往使用如下的数据结构来表示&#xff0c;struct node 表示链表中的一个节点&#xff0c;data 表示节点的数据&#xff1b;next 表示这个节点指向的下一个节点&#xff0c;如果是链表的尾节点&#xff0c;那…

Vulnhub-DIGITALWORLD.LOCAL: VENGEANCE渗透

文章目录 前言1、靶机ip配置2、渗透目标3、渗透概括 开始实战一、信息获取二、smb下载线索三、制作字典四、爆破压缩包密码五、线索分析六、提权&#xff01;&#xff01;&#xff01; Vulnhub靶机&#xff1a;DIGITALWORLD.LOCAL: VENGEANCE ( digitalworld.local: VENGEANCE …

服务器部署开源大模型完整教程 Ollama+Llama3+open-webui

前言 最近大语言模型大火&#xff0c;正好最近打比赛可能会用得上LLMs&#xff0c;今天就在学校的服务器上面进行一次部署。这样之后就可以直接在内网里面使用学校的LLMs了。 介绍 Ollama&#xff1a;一款可以让你在本地快速搭建大模型的工具 官网&#xff1a;https://olla…

串口协议(例如usart,iic,spi)基础概念汇总

文章目录 同步&#xff0c;异步同步通信&#xff1a;异步通信&#xff1a; 串行&#xff0c;并行串行&#xff1a;并行&#xff1a; 全双工&#xff0c;半双工&#xff0c;单工单工&#xff1a;半双工&#xff1a;全双工&#xff1a; 电平信号&#xff0c;差分信号电平信号&…