/static/fonts/SIMYOU.TTF’ 字体
/**
* pdf 加水印
*
* @return
*/
public byte[] pdfAddWaterMark(byte[] byes) {
String fileName = UUID.randomUUID().toString() + ".pdf";
String courseFile = "";
try {
// 第二种:获取项目路径 D:\git\daotie\daotie
//生成临时文件 , 读取完删除
File directory = new File("");// 参数为空
courseFile = directory.getCanonicalPath() + "/";
} catch (IOException e) {
e.printStackTrace();
}
byte[] returnBytes = null;
// 待加水印的文件
PdfReader reader = null;
PdfStamper stamper = null;
// ByteArrayOutputStream baos = null;
FileOutputStream os = null;
try {
reader = new PdfReader(byes);
// 加完水印的文件
// baos = new ByteArrayOutputStream();
// stamper = new PdfStamper(reader, baos);
// 加完水印的文件
os = new FileOutputStream(courseFile + fileName);
stamper = new PdfStamper(reader, os);
int total = reader.getNumberOfPages() + 1;
PdfContentByte content;
// BaseFont font = BaseFont.createFont();
BaseFont basefont = BaseFont.createFont("/static/fonts/SIMYOU.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
//这里的字体设置比较关键,这个设置是支持中文的写法
/*BaseFont base = BaseFont.createFont("STSong-Light",
"UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);// 使用系统字体*/
/*//设置透明度
PdfGState gs = new PdfGState();
gs.setFillOpacity(1f);
gs.setStrokeOpacity(1f);*/
PdfContentByte under;
com.itextpdf.text.Rectangle pageRect = null;
// 循环对每页插入水印
for (int i = 1; i < total; i++) {
pageRect = stamper.getReader().getPageSizeWithRotation(i);
// 计算水印X,Y坐标
float x = (float) (pageRect.getWidth() / 1.98);
float y = (float) (pageRect.getHeight() / 2.8);
// 获得PDF最顶层
under = stamper.getOverContent(i);
under.saveState();
// set Transparency
PdfGState gs = new PdfGState();
// 设置透明度为0.2
gs.setFillOpacity(1.f);
under.setGState(gs);
under.restoreState();
under.beginText();
under.setFontAndSize(basefont, pageRect.getHeight() / 17);
under.setColorFill(BaseColor.RED);
// 水印文字成45度角倾斜
System.out.println("width" + pageRect.getWidth());
System.out.println("height" + pageRect.getHeight());
System.out.println("x" + x);
System.out.println("y" + y);
under.showTextAligned(Element.ALIGN_CENTER, "图片仅供预览,不可用于商业用途", x, y, 45);
// 添加水印文字
under.endText();
under.setLineWidth(1f);
under.stroke();
}
// returnBytes = baos.toByteArray();
} catch (IOException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
} finally {
try {
stamper.close();
if (os != null) {
os.close();
}
if (reader != null) {
reader.close();
}
} catch (DocumentException e) {
e.printStackTrace(http://www.amjmh.com/v/BIBRGZ_558768/);
} catch (IOException e) {
e.printStackTrace();
}
}
————————————————
/static/fonts/SIMYOU.TTF’ 字体的更多相关文章
- [转]TrueType(TTF)字体文件裁剪(支持简体中文,繁体中文TTF字体裁剪)
原文入口: TTF字体文件裁剪(支持简体中文,繁体中文TTF字体裁剪) 对于TrueType(TTF)字体格式的介绍可以看: https://www.cnblogs.com/slysky/p/1131 ...
- Android自定义TTF字体
前言: 在Android Design中一个设计手册.在设计手册中有常用的UI图标,图标大小规范等. 其中,有一个TTF字体,以前感觉没什么用.但是我在学习时,常看到有许多开发者使用Google 提供 ...
- 【转】cocos2d-x使用第三方的TTF字体库
步骤一:找一个ttf字体库 步骤二:找到这个ttf字体库的真实名称 打开你的应用 "字体册"(MAC OS系统下),如下图操作): 找到了字体库真实名称,那么修改将其真名作为为此新 ...
- Cocos2d-x教程(28)-ttf 字体库的使用
欢迎增加 Cocos2d-x 交流群: 193411763 转载请注明原文出处:http://blog.csdn.net/u012945598/article/details/37650843 通常为 ...
- iOS上使用自己定义ttf字体
项目中想使用第三方的字体,在stackoverflow上查询解决的方法,也折腾一会,加入成功,示比例如以下: 1.将xx.ttf字体库增加project里面 2.在project的xx-Info.pl ...
- TTF字体基本知识及其在QT中的应用
字体类型 以Windows为例,有4种字体技术: Raster:光栅型,就是用位图来绘制字形(glyph),每个字都以位图形式保存 Vector:矢量型,就是用一系列直线的结束点来表示字形 TrueT ...
- iOS上使用自定义ttf字体
本文转载至 http://blog.csdn.net/allison162004/article/details/38777777 项目中想使用第三方的字体,在stackoverflow上查询解决办法 ...
- php GD 和图像处理函数, 用 STHUPO.TTF 字体向图像写入文本
php GD 和图像处理函数, 用 STHUPO.TTF 字体向图像写入文本 注意: 01) imagettftext() 这个函数不能使用相对路径, 要想使用相对路径要先使用 puten ...
- WPF解析TTF 字体
偶遇需要自己解析 TTF 字体并显示,此做... using System; using System.Collections.Generic; using System.Drawing.Text; ...
随机推荐
- react生态常用库分类
一. web项目 1.脚手架 create-react-app 自动安装react.react-dom 2.核心 react.react-dom 3.路由 react-router.react-rou ...
- 类型(Type)
A data type is homogeneous collection of values,effectiovely presented,equipped with a set of operat ...
- 107、如何配置 Health Check ? (Swarm14)
参考https://www.cnblogs.com/CloudMan6/p/8053323.html 容器状态是UP的,那应用就是健康的吗? 不一定 Docker 只能从容器启动进程的返 ...
- 02 Python数据结构的性能分析
一.列表: - python 的设计者在实现列表数据结构的时候有很多选择.每一个这种选择都可能影响列表操作的性能.为了帮助他们做出正确的选择,他们查看了最常使用列表数据结构的方式,并且优化了实现,以便 ...
- python cv2读取rtsp实时码流按时生成连续视频文件
代码实现 # coding: utf-8 import datetime import cv2 import os ip = '192.168.3.160'.replace("." ...
- leetcode297. 二叉树的序列化与反序列化
代码 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * ...
- Delphi BitBtn组件
- linux下测试web访问及网络相关的命令
curl命令 curl是linux系统命令行下用来简单测试web访问的工具. curl -xip:port www.baidu.com -x可以指定ip和端口,省略写hosts,方便实用 -I ...
- php+ajax远程加载避免重复提交
近日在练习签到送积分功能时,发现可以在一瞬间的时候提交好多次 导致可以重复领取多次积分 除了增加请求限制之外 发现ajax提交没有限制重复提交 遂立此贴为警示 首先上表单代码 <form ons ...
- 浙大数据结构课后习题 练习二 7-2 Reversing Linked List (25 分)
Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elem ...