package com.hcsoft.lotrelease.util;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.imageio.ImageIO;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Element;
import com.itextpdf.text.Image;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfGState;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
public class Test {
public static void main(String[] args) throws Exception, IOException {
Long start = System.currentTimeMillis(), end = null;
//生成图片
//graphicsGeneration();
//添加水印
PdfaddSy();
end = System.currentTimeMillis() - start;
System.out.println("===> Reading pdf times: " + (end / 1000));
}
/**
* 添加水印
*
* @throws Exception
*/
public static void PdfaddSy() throws Exception {
// 待加水印的文件
PdfReader reader = new PdfReader("D:\\aa1\\YBH012520161.pdf");
// 加完水印的文件
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("D:\\aa1\\abc.pdf"));
int total = reader.getNumberOfPages() + 1;
PdfContentByte content;
// 设置字体
String ttfpath = "D:\\Workspaces\\MyEclipse 10\\jianybz\\webapp\\upload\\userCachetPath\\simhei.ttf";
BaseFont base = BaseFont.createFont(ttfpath, BaseFont.IDENTITY_H,BaseFont.EMBEDDED);
// 水印文字
String waterText = "中检院标准接收";
// 高度
// 循环对每页插入水印
int pageNum = reader.getNumberOfPages();
Rectangle pageRectangle = reader.getPageSize(pageNum);
float x = pageRectangle.getWidth() / 2;
float y = pageRectangle.getHeight() / 2;
for (int i = 1; i < total; i++) {
// 水印的起始
content = stamper.getOverContent(i);// 获得PDF最顶层
content.saveState();
PdfGState gs = new PdfGState();
gs.setFillOpacity(0.5f);// 设置透明度为0.2
content.setGState(gs);
content.beginText();
content.setColorFill(BaseColor.GRAY);
content.setFontAndSize(base, 40);
content.showTextAligned(Element.ALIGN_CENTER, waterText, x, y, 35);// 水印文字成35度角倾斜
content.endText();
Image image = Image.getInstance("c:/1.jpg");
image.setAbsolutePosition(0, 0);
image.scaleToFit(200, 200);
content.addImage(image);
content.restoreState();// 注意这里必须调用一次restoreState 否则设置无效
}
stamper.close();
}
/**
* 生成图片
*
* @return
* @throws Exception
*/
public static String graphicsGeneration() throws Exception {
// 实际数据行数+标题+备注
int imageWidth = 490;
int imageHeight = 130;
BufferedImage image = new BufferedImage(imageWidth, imageHeight,BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = (Graphics2D) image.getGraphics();
g2d.setColor(Color.WHITE);
g2d.fillRect(0, 0, imageWidth, imageHeight);
// ---------- 增加下面的代码使得背景透明 -----------------
// image =
// g2d.getDeviceConfiguration().createCompatibleImage(imageWidth,
// imageHeight, Transparency.TRANSLUCENT);
// g2d.dispose();
// g2d = image.createGraphics();
// ---------- 背景透明代码结束 -----------------
g2d.setColor(new Color(220, 240, 240));
g2d.setStroke(new BasicStroke(3.0f));
// 画横线
g2d.setColor(Color.red);
g2d.drawLine(10, 10, imageWidth - 10, 10);
g2d.drawLine(10, imageHeight - 10, imageWidth - 10, imageHeight - 10);
// 画竖线
g2d.setColor(Color.red);
g2d.drawLine(10, 10, 10, imageHeight - 10);
g2d.drawLine(imageWidth - 10, 10, imageWidth - 10, imageHeight - 10);
// 设置字体
Font font = new Font("华文楷体", Font.BOLD, 25);
g2d.setFont(font);
// 写入内容
g2d.setColor(Color.black);
font = new Font("华文楷体", Font.BOLD, 25);
g2d.setFont(font);
g2d.drawString("人员:李某某", 12, 45);
g2d.drawString("部门:综合业务处", 12, 100);
g2d.drawString("下载次数:3次", 270, 45);
g2d.drawString("时间:2018-10-15", 270, 100);
String path = "C:/1.jpg";
ImageIO.write(image, "jpg", new File(path));
return path;
}
}