【实例简介】

【实例截图】

【核心代码】

package com.test.main;

import java.io.File;

import java.io.FileOutputStream;

import java.util.ArrayList;

import java.util.List;

import com.itextpdf.text.BaseColor;

import com.itextpdf.text.Document;

import com.itextpdf.text.Element;

import com.itextpdf.text.Font;

import com.itextpdf.text.Image;

import com.itextpdf.text.PageSize;

import com.itextpdf.text.Paragraph;

import com.itextpdf.text.Phrase;

import com.itextpdf.text.Rectangle;

import com.itextpdf.text.pdf.BaseFont;

import com.itextpdf.text.pdf.PdfContentByte;

import com.itextpdf.text.pdf.PdfPCell;

import com.itextpdf.text.pdf.PdfPTable;

import com.itextpdf.text.pdf.PdfReader;

import com.itextpdf.text.pdf.PdfStamper;

import com.itextpdf.text.pdf.PdfWriter;

public class test4 {

public static void buidPDF(String pdfFile, String imageFile, String waterMarkName, int permission) {

try {

File file = File.createTempFile("tempFile", ".pdf"); // 创建临时文件

// 生成PDF

if (createPDFFile(file)) {

waterMark(file.getPath(), imageFile, pdfFile, waterMarkName,

permission); // 添加水印

}

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 创建PDF文件

*

* @param file

* 临时文件

* @return 成功/失败

*/

public static boolean createPDFFile(File file) {

Rectangle rect = new Rectangle(PageSize.A5);

Document document = new Document();

try {

PdfWriter.getInstance(document,

new FileOutputStream("TableCellBorder.pdf"));

document.open();

PdfPTable table = new PdfPTable(3);

PdfPCell cell1 = new PdfPCell(new Phrase("Cell 1"));

cell1.setUseBorderPadding(true);

//

// Setting cell's border width and color

//

cell1.setBorderWidth(5f);

cell1.setBorderColor(BaseColor.BLUE);

table.addCell(cell1);

PdfPCell cell2 = new PdfPCell(new Phrase("Cell 2"));

cell2.setUseBorderPadding(true);

//

// Setting cell's background color

//

cell2.setBackgroundColor(BaseColor.GRAY);

//

// Setting cell's individual border color

//

cell2.setBorderWidthTop(1f);

cell2.setBorderColorTop(BaseColor.RED);

cell2.setBorderColorRight(BaseColor.GREEN);

cell2.setBorderColorBottom(BaseColor.BLUE);

cell2.setBorderColorLeft(BaseColor.BLACK);

table.addCell(cell2);

PdfPCell cell3 = new PdfPCell(new Phrase("Cell 3"));

cell3.setUseBorderPadding(true);

//

// Setting cell's individual border width

//

cell3.setBorderWidthTop(2f);

cell3.setBorderWidthRight(1f);

cell3.setBorderWidthBottom(2f);

cell3.setBorderWidthLeft(1f);

table.addCell(cell3);

table.completeRow();

document.add(table);

} catch (Exception e) {

e.printStackTrace();

} finally {

document.close();

}

return true;

}

public static void waterMark(String inputFile, String imageFile,

String outputFile, String waterMarkName, int permission) {

try {

PdfReader reader = new PdfReader(inputFile);

PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(

outputFile));

BaseFont base = BaseFont.createFont(

"C:/WINDOWS/Fonts/SIMSUN.TTC,1", "Identity-H", true);// 使用系统字体

int total = reader.getNumberOfPages() 1;

Image image = Image.getInstance(imageFile);

// 图片位置

image.setAbsolutePosition(0,88);

image.setRotationDegrees(45);

PdfContentByte under;

int j = waterMarkName.length();

char c = 0;

int rise = 0;

for (int i = 1; i < total; i ) {

rise = 400;

under = stamper.getUnderContent(i);

under.beginText();

under.setFontAndSize(base, 30);

if (j >= 15) {

under.setTextMatrix(200, 120);

for (int k = 0; k < j; k ) {

under.setTextRise(rise);

c = waterMarkName.charAt(k);

under.showText(c "");

}

} else {

under.setTextMatrix(240, 100);

for (int k = 0; k < j; k ) {

under.setTextRise(rise);

c = waterMarkName.charAt(k);

under.showText(c "");

rise -= 18;

}

}

// 添加水印文字

under.endText();

// 添加水印图片

under.addImage(image);

/* // 画个圈

under.ellipse(250, 450, 350, 550);

under.setLineWidth(1f);

under.stroke();*/

}

stamper.close();

} catch (Exception e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

String imageFilePath = "C:\\Users\\admin\\Desktop\\ruituo.png"; // 水印图片路径

String pdfFilePath = "F:\\Download\\itext.PDF"; // 文件生成路径

buidPDF(pdfFilePath, imageFilePath, "", 16);

}

public static String leftPad(String str, int i) {

int addSpaceNo = i-str.length();

String space = "";

for (int k=0; k

space= " " space;

};

String result =space str ;

return result;

}

public static void add(List list,int num){

for(int i=0;i

list.add("A" i);

}

}

public static void add2(List list,int num){

for(int i=0;i

list.add("D" i);

}

}

public static void add1(List list,int num){

for(int i=0;i

list.add("C" i);

}

}

public static String printBlank(int tmp){

String space="";

for(int m=0;m

space=space " ";

}

return space;

}

/**

* 创建一个跨多列的单元格

* @param colspan 所占列数

* @param paragraph 单元格内容文字

* @param align 对齐方式

*/

public static PdfPCell newPdfPCellByColspan(int colspan,Paragraph paragraph,int align){

PdfPTable iTable=new PdfPTable(1);

PdfPCell iCell=new PdfPCell();

iCell.setColspan(colspan);

iCell.setBorder(0);

iCell.addElement(paragraph);

iCell.setHorizontalAlignment(align);

iTable.addCell(iCell);

PdfPCell cell=new PdfPCell(iTable);

return cell;

}

/**

* 创建一个跨多行的单元格

* @param rows 所占行数

* @param paragraph 单元格内容文字

* @param align 对齐方式

*/

public static PdfPCell newPdfPCellByRows(int rows,Paragraph paragraph,int align){

PdfPTable iTable=new PdfPTable(1);

PdfPCell iCell=new PdfPCell();

iCell.setFixedHeight(iCell.getFixedHeight()*rows);

iTable.addCell(iCell);

iCell.addElement(paragraph);

iCell.setHorizontalAlignment(align);

PdfPCell cell=new PdfPCell(iTable);

return cell;

}

}

PDF文件JAVA去水印源码,java pdf增加水印示例源码相关推荐

  1. Java解析PDF文件(PDFBOX、itext解析PDF)导出PDF中的子图片,去除PDF中的水印

    前段时间,为了解析PDF,花了不少时间去学习PDFbox和itext,这两个都是处理PDF的开源库,有java和C#的.作为一个刚开始学习这两个开源库的,感觉百度上的资源还是太少了.我做的是一个关于P ...

  2. PDF文件内部结构分析查看器-java

    PDF文件内部结构分析查看器-java jar包随便下一个pdfbox java -jar D:\Download\jar\pdfbox-2.0.13.jar PDFDebugger jar启动之后将 ...

  3. Tool之Adobe:解决Adobe acrobat pro将PDF文件进行批量保存单页PDF文件(图文教程)

    Tool之Adobe:解决Adobe acrobat pro将PDF文件进行批量保存单页PDF文件(图文教程) 目录 解决Adobe acrobat pro将PDF文件进行批量逐个单独保存单页文件(图 ...

  4. PDF文件如何导出成图片,PDF如何转换成图片

    现在的pdf应用得很广泛,由于它可以不依赖操作系统的语言和字体及显示设备,阅读起来很方便.我们在工作中几乎每天都会使用到PDF文件,有时候我们需要将PDF文件导出成图片格式的文件,这样更方便我们使用. ...

  5. PDF文件太大了怎么办,如何压缩PDF且不改变清晰度

    如何压缩PDF且不改变清晰度?有时候处理大文件并不容易,比如因为附件大小限制,大型的PDF文件可能在共享的时候出现一些问题,这就需要一些方法来减小PDF文件的大小.不过一定程度上减小了PDF文件的大小 ...

  6. PDF文件如何修改背景颜色,PDF文件怎么改部分底色

    正常的使用的PDF文件是没有底色的,是白色的,有时候白色的看着很显单调,有时候改变一下顶部的背景颜色,看起来也舒服不少.那么我们如何在PDF文件修改适合的背景颜色呢?想知道的小伙伴们就跟小编一起来看看 ...

  7. PDF编辑器哪个好,PDF文件怎么拆分成多个PDF

    我们现在使用的PDF文件都是有好几页构成的,但是当我们需要不同范围的PDF文件的时候应该怎么办呢,小伙伴们都知道PDF文件的编辑是需要PDF编辑器的,那么PDF编辑器哪个好呢,小编就以小编使用的一款编 ...

  8. 只读pdf文件怎么编辑?如何把pdf只读改为可编辑

    只读pdf文件怎么编辑?PDF格式应用广泛,算得上是查看和共享文档的最佳格式,但是,如果我们想要修改或编辑文件,PDF文件是无法实现这个功能的,我们只能查看它而并不能对其进行编辑,同时,上面的文字我们 ...

  9. pdf压缩的网站?pdf文件在线压缩?在线压缩pdf文件大小?pdf文档压缩,在线压缩pdf文件大小,压缩pdf大小的方法?

    pdf在线压缩大小?在工作中需要处理大量PDF文件,我们通常要对PDF文件进行压缩处理.那么问题来了,PDF文件该怎么压缩呢?可能很多人都不知道具体的操作方法,今天要分享给大家的正是PDF压缩的方法, ...

最新文章

  1. c++17(17)-异常try catch,operator[],vector at
  2. OpenShift Security (7) - 风险合规评估
  3. php输出字符unicode码,PHP解码unicode编码的中文字符代码分享
  4. 23种设计模式类图总结
  5. slam魔改的支持数据库动态虚拟墙,禁行线costmap_prohibition_layer
  6. RedisSingleUtils 工具类
  7. install-newton部署安装--------计算节点部署安装
  8. SL400在win7系统下硬盘安装Mac OS
  9. 企业微信老是服务器异常,添加好友提示”操作异常”,企业微信需要养号吗?...
  10. 全球与中国网络连接视频门铃对讲机设备市场深度研究分析报告
  11. 大数据面试3分钟自我介绍_大数据面试要注意哪些方面?大数据面试准备三大攻略...
  12. volatile修饰变量java_volatile 关键字(修饰变量)
  13. 2015美国大学计算机科学专业排名,2015年US News美国大学计算机专业排名
  14. vue项目 打包文件大小分析
  15. vue3.0+ts+element-plus多页签应用模板:多级路由缓存
  16. 大气简洁手绘风商务计划书PPT模板
  17. mysql安装简书_MySQL的安装与配置——详细教程
  18. C# 调用大漠插件的方法
  19. 基于R语言的Meta分析【全流程、不确定性分析】方法与Meta机器学习技术应用
  20. Mendeley Desktop无法同步问题

热门文章

  1. JAVA练习 双色球游戏
  2. 如何保证互联网平台服务的可靠性和稳定性?
  3. Axure和墨刀区别
  4. 备案被骗——骗子QQ487845970
  5. 积木开发系列----Workspace的一些设定细节
  6. 读Linear Algebra -- Gilbert Strang
  7. Adobe Premiere基础-素材嵌套(制作抖音结尾头像动画)(九)
  8. matlab的正则表达式讲解[转]
  9. Android 和iOS技术原理差异总结
  10. 跟牛老师一起学WEBGIS——WEBGIS基础(WMS服务)