java编辑pdf(itextpdf)

news2024/11/22 13:24:54

        工作上遇到一个小需求,需要在原有的pdf文件上添加一行文字,实现方式如下

引入依赖

        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.13</version>
        </dependency>
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itext-asian</artifactId>
            <version>5.2.0</version>
        </dependency>

样例代码

public class Test {

    public static void main(String[] args) {
        try {
            //读取源文件
            PdfReader pdfReader = new PdfReader("F:/pdf/before.pdf");
            //编辑后的文件
            PdfStamper stamper = new PdfStamper(pdfReader, new FileOutputStream("F:/pdf/after.pdf"));
            //获取第一页也的内容
            PdfContentByte pdfContentByte =stamper.getOverContent(1);
            //开始编辑
            pdfContentByte.beginText();
            //设置字体大小、样式
            BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
            pdfContentByte.setFontAndSize(baseFont, 30);
            //要添加的内容的位置:x-距离左边的像素,y-距离底部的像素
            pdfContentByte.setTextMatrix(50, 300);
            //要添加的类容
            pdfContentByte.showText("我写了啥??????");
            pdfContentByte.endText();
            stamper.close();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }
}

运行效果

before.pdf

after.pdf

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

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

相关文章

qt 远程调试部署运行时出错-1: error: Deploy via rsync: failed to create remote directories:

1、按照《【正点原子】ATK-DLRK3568_Q开发环境搭建V*.pdf》搭建交叉编译环境、远程部署Qt应用程序后&#xff0c;点击qt-creator三角运行&#xff0c;提示“Deploy via rsync: failed to create remote directories:” 2、经查&#xff0c;文档中没有相关问题的提示解决&#…

关闭训练过程中的wandb

训练的过程中反复提醒wandb的账户&#xff0c;自动化执行的话&#xff0c;不是很方便&#xff0c;因此需要关闭这个wandb的功能 提醒的方式是这样的&#xff1a; 解决办法1、注释掉wandb相关的代码&#xff0c;并且添加关闭命令&#xff1a;wandb None 参考&#xff1a; 训…

探究Nginx应用场景

1 静态资源 Nginx是一个流行的Web服务器和反向代理服务器&#xff0c;它可以用于托管静态资源。下面是一个简单的案例&#xff0c;展示了如何使用Nginx来提供静态资源。 假设你有一个名为example.com的域名&#xff0c;并且你希望使用Nginx来托管位于/var/www/html目录下的静…

自定义权限指令与防止连点指令

1.权限指令 // 注册一个全局自定义权限指令 v-permission Vue.directive(permission, {inserted: function(el, binding, vnode) {const {value} binding; // 指令传的值// user:edit:phone,sysData:sampleconst permissions [user:edit:address, sysData:entrust, sysData:…

WebStorm使用Element组件库

文章目录 WebStorm使用Element组件库1. webstorm使用vue文件2. 首先需要安装Element Plus2. 项目完成引入-以日历为例 WebStorm使用Element组件库 1. webstorm使用vue文件 在Test.vue文件中书写模板,并暴露对外接口 <script> export default {name: "Test" }…

第1章_freeRTOS入门与工程实践之课程介绍

本教程基于韦东山百问网出的 DShanMCU-F103开发板 进行编写&#xff0c;需要的同学可以在这里获取&#xff1a; https://item.taobao.com/item.htm?id724601559592 配套资料获取&#xff1a;https://rtos.100ask.net/zh/freeRTOS/DShanMCU-F103 freeRTOS系列教程之freeRTOS入…

VS Code 安装方法

1.安装控制台程序.NET SDK 功能&#xff1a;应用能够正常的运行和构建。 .NET SDK下载地址&#xff1a;下载 .NET(Linux、macOS 和 Windows) 2.安装驱动编辑器vscode vscode下载地址&#xff1a;https://code.visualstudio.com/Download 选择System Installer&#xff0c;…

数据在内存中的存储——练习5

题目&#xff1a; 5.1 #include <stdio.h> unsigned char i 0; int main() {for(i 0;i<255;i){printf("hello world\n");}return 0; }5.2 #include <stdio.h> int main() {unsigned int i;for(i 9; i > 0; i--){printf("%u\n",i);}r…

MCU软核 2. Xilinx Artix7上运行tinyriscv

0. 环境 - ubuntu18 - win10 vivado 2018.3 - git desktop - XC7A35TV12核心板 - ft2232hl小板&#xff08;用于程序烧录&#xff09; 1. git克隆源码 Git Desktop -> File -> Clone repository -> -> URL: https://gitee.com/liangkangnan/tinyriscv/ -> Lo…

Vue3样式绑定

文章目录 Vue3样式绑定1. class 属性绑定1.1 v-bind:class 设置一个对象&#xff0c;从而动态的切换 class1.2 在对象中传入更多属性用来动态切换多个 class1.3 直接绑定数据里的一个对象1.4 绑定一个返回对象的计算属性。这是一个常用且强大的模式1. 5 数据语法1.6 errorClass…

Mental Poker- Part 2

在part-1中&#xff0c;我们梳理了去中心纸牌游戏所面临的挑战&#xff0c;也介绍了一种改进的Barnett-Smart协议&#xff0c;part-2将深入了解该协议背后涉及的算法。 Discrete-log VTMF VTMFs包含4部分&#xff1a;key generation, mask, remask and unmask&#xff0c;这些…

2024年java面试--mysql(4)

系列文章目录 2024年java面试&#xff08;一&#xff09;–spring篇2024年java面试&#xff08;二&#xff09;–spring篇2024年java面试&#xff08;三&#xff09;–spring篇2024年java面试&#xff08;四&#xff09;–spring篇2024年java面试–集合篇2024年java面试–redi…

Matlab 2016安装MinGW-w64-4.9.2

Matlab 2016安装MinGW-w64-4.9.2 项目需求&#xff1a;需要将matlab中的.m文件编译为cpp文件 .dll .h .lib。 我相信大家在对matlab2016安装MinGW-w64出现了各种各样的问题。如&#xff1a;4.9.2安装失败&#xff1b;安装了其他版本但是matlab检测不到&#xff0c;或者其他各种…

stable diffusion安装及使用

最近在看这个&#xff0c;踩了一些坑&#xff0c;现在有点头绪了&#xff0c;记录如下 安装很简单&#xff0c;直接git下载下来&#xff0c;然后进到根目录执行./web-ui.py,第一次启动你没有模型他会帮你下载个默认模型&#xff0c;我有模型了&#xff0c;就先把这个模型放到*/…

【Python】从入门到上头— 使用re模块用于快速实现正则表达式需求(11)

正则表达式语法规则 详见 【Java基础】正则表达式应用 re模块 正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则&#xff0c;凡是符合规则的字符串&#xff0c;我们就认为它“匹配”了&#xff0c;否则&#xff0c;…

服务器上一个域名对应多个前端项目的nginx转发配置

场景&#xff1a; 当有两个前端项目A,B的时候&#xff0c;项目A&#xff08;对应端口8000&#xff09;和项目B&#xff08;对应端口8001&#xff09;分别部署在服务器的不同位置&#xff0c;通过服务器ip端口都能正常访问单独的项目A和项目B&#xff1b;现在要求两个项目共用一…

工作中有许多比较常用的SQL脚本

工作中有许多比较常用的SQL脚本&#xff0c;今天开始分几章分享给大家。 1、行转列的用法PIVOTCREATE table test (id int,name nvarchar(20),quarter int,number int) insert into test values(1,N苹果,1,1000) insert into test values(1,N苹果,2,2000) insert into test va…

整理一下5个全国化的股票十倍杠杆正规平台(2023最大十倍杠杆炒股平台)

在全国范围内&#xff0c;有诸多优秀的杠杆平台可供选择。本文将介绍5个全国化的股票十倍杠杆正规平台&#xff1a;红腾网、广瑞网、一鼎盈、广盛网、富灯网。 1. 红腾网 红腾网是国内的一家知名杠杆交易平台&#xff0c;平台以高效、便捷、安全的特点著称。 2. 广瑞网 广瑞…

拿走吧你,Fiddler模拟请求发送和修改响应数据

模拟伪造请求 方法一&#xff1a;打断点模拟HTTP请求 1、浏览器页面填好内容后&#xff08;不要操作提交&#xff09;&#xff0c;打开fiddler&#xff0c;设置请求前断点&#xff0c;点击菜单fiddler,”Rules”\”Automatic Breakpoints”\”Before Requests” 2、在页面上点…

数字孪生的实用性为何遭受质疑?这篇文章为你解答

数字孪生技术的实用性体现在哪&#xff1f;数字孪生技术不仅是当今科技领域的热点&#xff0c;也是各行各业不断探索和应用的新兴领域。这项技术的实用性在于它的多领域适用性和巨大潜力。然而&#xff0c;目前有许多声音认为数字孪生技术是一项“没用”的技术&#xff0c;仅仅…