1 Star 1 Fork 0

alexgaoyh/pap-base

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
PdfBoxRemoveTextWatermark.java 3.23 KB
一键复制 编辑 原始数据 按行查看 历史
alexgaoyh 提交于 2023-07-03 15:48 +08:00 . add: pdf remove text watermark.
//package com.pap.base.util.pdf;
//
//import org.apache.pdfbox.contentstream.operator.Operator;
//import org.apache.pdfbox.cos.COSName;
//import org.apache.pdfbox.pdfparser.PDFStreamParser;
//import org.apache.pdfbox.pdfwriter.ContentStreamWriter;
//import org.apache.pdfbox.pdmodel.PDDocument;
//import org.apache.pdfbox.pdmodel.PDPage;
//import org.apache.pdfbox.pdmodel.common.PDStream;
//import org.apache.pdfbox.pdmodel.font.PDFont;
//import org.apache.pdfbox.pdmodel.font.PDType0Font;
//
//import java.io.File;
//import java.io.OutputStream;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
///**
// * 使用 pdfbox 移除 pdf文件中的 文字水印
// * 思路: 获取到 pdf 中的所有元素, 之后判断 元素是否是水印相关(op.getName().equals("gs")),如果是的话,将其删除(tokens.remove(tokens.size() - 1);)
// *
// * <dependency>
// * <groupId>org.apache.pdfbox</groupId>
// * <artifactId>pdfbox</artifactId>
// * <version>2.0.28</version>
// * </dependency>
// */
//public class PdfBoxRemoveTextWatermark {
//
// /**
// * @param inputPdfFilePath 输入pdf文件路径
// * @param outputFdfFilePath 输出pdf文件路径
// * @param fontPath simfang.ttf
// * @throws Exception
// */
// public static void removeTextWatermark(String inputPdfFilePath, String outputFdfFilePath, String fontPath) throws Exception {
// {
// File file = new File(inputPdfFilePath);
// PDDocument pd = PDDocument.load(file);
// // 需要的字体文件
// Map<COSName, PDFont> oldfont = new HashMap<COSName, PDFont>();
// COSName fontName = null;
// PDType0Font targetfont = PDType0Font.load(pd, new File(fontPath));
// for (PDPage page : pd.getPages()) {
// PDFStreamParser pdfsp = new PDFStreamParser(page);
// pdfsp.parse();
// List<Object> tokens = pdfsp.getTokens();
// for (int j = 0; j < tokens.size(); j++) {
// //创建一个object对象去接收标记
// Object next = tokens.get(j);
// if (next instanceof Operator) {
// Operator op = (Operator) next;
// if (op.getName().equals("gs")) {
// tokens.remove(tokens.size() - 1);
// }
// }
// }
// PDStream updatedStream = new PDStream(pd);
// OutputStream out = updatedStream.createOutputStream();
// ContentStreamWriter tokenWriter = new ContentStreamWriter(out);
// tokenWriter.writeTokens(tokens);
// out.close();
// oldfont.forEach((k, v) -> {
// page.getResources().put(k, targetfont);
// });
// page.setContents(updatedStream);
// }
// pd.save(outputFdfFilePath);
// pd.close();
// }
// }
//
// public static void main(String[] args) throws Exception {
// removeTextWatermark("alexgaoyh.pdf",
// "removed-text-watermark-alexgaoyh.pdf",
// "d:\\simfang.ttf");
// }
//}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/alexgaoyh/pap-base.git
git@gitee.com:alexgaoyh/pap-base.git
alexgaoyh
pap-base
pap-base
v1

搜索帮助