使用的工具是pdfbox免费 java版
他也可以添加图片,可以看他的api自己调用
pdfbox 也有c#版,但是在使用的时候有一个中文乱码的问题没解决,所以c#不建议用这个,可以用itextsharp
PDF添加文本或者图片_huxiansheng__的博客-优快云博客
下载地址:链接: https://pan.baidu.com/s/1vZ-gE3QYcrAldymViOd_VA 提取码: c2c1 复制这段内容后打开百度网盘手机App,操作更方便哦
代码:
package com.sendy.boot.util;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDType0Font;
import java.awt.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class PDFAddTextBox {
public static void main(String[] args) throws IOException {
//得到本地的文件
File file = new File("C:\\Users\\Administrator\\Desktop\\test01.pdf");
//这个是一个字体,添加文本的时候会出现中文不能添加的问题
//我自己下载了一个ttf字体,也可以直接用自己windows里自带的
//必须是ttf字体
File file2 = new File("C:\\Users\\Administrator\\Desktop\\simfang.ttf");
//读取pdf文件
PDDocument document = PDDocument.load(file);
InputStream in = new FileInputStream(file2);
//加载字体
PDFont font = PDType0Font.load(document,file2);
//遍历pdf每一页
for(int i=0;i<document.getNumberOfPages();i++){
//得到第i页
PDPage page = document.getPage(i);
//得到操作页面的流
PDPageContentStream contentStream = new PDPageContentStream(document, document.getPage(i), PDPageContentStream.AppendMode.APPEND, false);
//开始页面流
contentStream.beginText();
//设置字体和大小
contentStream.setFont(font, 12);
//要显示的位置
contentStream.newLineAtOffset(5, 5);
//设置要显示的文本的颜色
contentStream.setNonStrokingColor(Color.black);
String text = "明日之星创作";
//显示文本
contentStream.showText(text);
//结束页面流
contentStream.endText();
//关闭页面流
contentStream.close();
}
//保存pdf并声称一个新的pdf
document.save(new File("C:\\Users\\Administrator\\Desktop\\bronze05.pdf"));
//关闭文档流
document.close();
}
}