代码: 兵马未动,粮草先行

作者: 传说中的汽水枪

如有错误,请留言指正,欢迎一起探讨.

转载请注明出处.

公司要求从阿里云OSS下载pdf文件并且需要添加水印.

因此这里总结一下.

首先添加了一个FileUploadUtil.java文件:

    /**OSSClient*/
private static OSSClient CLIENT; public static InputStream getInputStreamFromOSS(String ossFileName) {
String parentDirectory = ossFileName.substring(0, 8) + "/";
String fileId = "你自己的fileId";
CLIENT = new OSSClient(ENDPOINT, ACCESSKEYID, ACCESSKEYSECRET);
OSSObject ossObject = CLIENT.getObject(BUCKETNAME, fileId + ossFileName);
InputStream inputStream = ossObject.getObjectContent();
return inputStream;
} public static void clientShutdown() {
if (CLIENT != null) {
CLIENT.shutdown();
}
}

在controller层先实现下载文件功能:

    @ResponseBody
@RequestMapping(value = "/downloadFromOSS", method = RequestMethod.GET)
public void downloadFromOSS(String fileName, HttpServletResponse response, HttpServletRequest request) {
try {
String dataString = DateUtil.date2Str(new Date(), "yyyy-MM-dd-HH-mm-ss-SSS");
String destFileName = dataString + ".pdf";
response.setCharacterEncoding("utf-8");
response.setContentType("multipart/form-data");
response.setHeader("Content-Disposition", "attachment;fileName=" + destFileName);
// 获取outputStream
OutputStream outputStream = response.getOutputStream();
// 获取inputStream
InputStream inputStream = FileUploadUtil.getInputStreamFromOSS(fileName);
// 下载文件
byte[] bytes = new byte[2048];
int length;
while ((length = inputStream.read(bytes)) > 0) {
outputStream.write(bytes, 0, length);
}
outputStream.close();
}
catch (Exception e) {
e.printStackTrace();
}
finally {
FileUploadUtil.clientShutdown();
}
}

实现下载并添加水印:

    @ResponseBody
@RequestMapping(value = "/downloadWatermarkFile", method = RequestMethod.GET)
public void downloadWatermarkFile(String fileName, HttpServletResponse response, HttpServletRequest request) {
try {
String dataString = DateUtil.date2Str(new Date(), "yyyy-MM-dd-HH-mm-ss-SSS");
String destFileName = dataString + ".pdf";
response.setCharacterEncoding("utf-8");
response.setContentType("multipart/form-data");
response.setHeader("Content-Disposition", "attachment;fileName=" + destFileName);
// 获取outputStream
OutputStream outputStream = response.getOutputStream();
// 获取inputStream
InputStream inputStream = FileUploadUtil.getInputStreamFromOSS(fileName); // 添加水印的时候,就已经在outputStream写入了
PdfReader reader = new PdfReader(inputStream);
PdfStamper stamper = new PdfStamper(reader, outputStream);
int total = reader.getNumberOfPages() + 1;
PdfContentByte content;
BaseFont base = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
PdfGState gs = new PdfGState();
for (int i = 1; i < total; i++) {
content = stamper.getOverContent(i);// 在内容上方加水印
//content = stamper.getUnderContent(i);//在内容下方加水印
gs.setFillOpacity(0.2f);
content.setGState(gs);
content.beginText();
content.setColorFill(com.itextpdf.text.BaseColor.LIGHT_GRAY);
content.setFontAndSize(base, 50);
content.setTextMatrix(70, 200);
//将文字显示在pdf页面中
// content.showTextAligned(Element.ALIGN_CENTER, "国际财富管理协会(中国)!", 300,350, 55);
//设置文字颜色
content.setColorFill(com.itextpdf.text.BaseColor.BLACK);
//设置文字大小
content.setFontAndSize(base, 8);
//将内容显示在pdf底部
String waterMarkName = "111111";
content.showTextAligned(Element.ALIGN_CENTER, "下载时间:" + waterMarkName + "", 300, 10, 0);
content.endText();
}
stamper.close();
outputStream.close();
}
catch (Exception e) {
e.printStackTrace();
}
finally {
FileUploadUtil.clientShutdown();
}
}

OK 解决问题.

阿里云OSS下载pdf文件,并在pdf文件上添加水印的更多相关文章

  1. 阿里云OSS 服务端签名后直传之分片上传(结合element-ui的upload组件)

    分片上传(结合element-ui的upload组件实现自定义上传) async uploadFree(content){ let data = await this.getOssToken(); / ...

  2. 使用阿里云oss

    写这篇博文的原因是公司有个项目需要用到阿里云来存放用户头像文件.后期软件安装版本也可能需要存进去,然后折腾了两天终于摸熟了一点皮毛,在这里给大家简单介绍下. 一.初识对象存储oss 1.进入阿里云控制 ...

  3. 使用Typora + 阿里云OSS + PicGo 打造自己的图床

    使用Typora + 阿里云OSS + PicGo 打造自己的图床 为什么要打造图床? 让笔记远走高飞 试问以下场景: 我们要把 markdown 笔记放到某博客上,直接进行复制即可.但因你的图片存储 ...

  4. SpringBoot整合阿里云OSS文件上传、下载、查看、删除

    1. 开发前准备 1.1 前置知识 java基础以及SpringBoot简单基础知识即可. 1.2 环境参数 开发工具:IDEA 基础环境:Maven+JDK8 所用技术:SpringBoot.lom ...

  5. Java下载https文件上传到阿里云oss服务器

    Java下载https文件上传到阿里云oss服务器 今天做了一个从Https链接中下载音频并且上传到OSS服务器,记录一下希望大家也少走弯路. 一共两个类: 1 .实现自己的证书信任管理器类 /** ...

  6. django 文件上传(阿里云oss)下载(支持大文件下载)

    1.文件上传 Models 设计 class Upload_File(models.Model): image = models.FileField(upload_to='file/%Y/%m',de ...

  7. wget下载阿里云oss的文件报错403

    问题 在实际工作中,我们为了方便,会将一些脚本储存在云端(阿里云OSS),这样方便我们使用和下载,但是在实际的使用过程中,我们会遇到一些问题. 示例链接:https://djxlsp.oss-cn-s ...

  8. ThinkPHP 文件上传到阿里云OSS上(干货)

    参考:http://www.thinkphp.cn/extend/789.html 1.前往阿里云github下载SDK包:https://github.com/aliyun/aliyun-oss-p ...

  9. angulaijs中的ng-upload-file与阿里云oss服务的结合,实现在浏览器端上传文件到阿里云(速度可以达到1.5M)

    2015-10-26 angularjs结合aliyun浏览器端oos文件上传加临时身份验证例子 在服务端获取sts 源码: public class StsServiceSample { // 目前 ...

随机推荐

  1. dumpe2fs 命令的使用,转储 ext2/ext3/ext4 文件系统信息

    使用man 命令可以查看 dumpe2fs 命令具体的使用的方法: NAME dumpe2fs - dump ext2/ext3/ext4 filesystem information SYNOPSI ...

  2. JavaScript 中的匿名函数((function() {})();)与变量的作用域

    以前都是直接用前端框架Bootstrap,突然想看看Javascript,发现javascript是个非常有趣的东西,这里把刚碰到的一个小问题的理解做下笔录(废话不多说,上代码). /** * Exa ...

  3. pip更新及Requirement already up-to-date解决方法

    pip更新及Requirement already up-to-date解决方法 文:铁乐与猫 2018-9-11 更新命令 将pip更新到最新版本 python -m pip install --u ...

  4. Centos7系统特性之systemd

    1.centos系列的系统启动流程(内核级别的启动流程): POST(加电自检)---> Boot Sequence(BIOS)---> Boot loader (MBR)---> ...

  5. Hadoop2.7.6_04_HDFS的Shell操作与常见问题

    1. HDFS的shell操作 1.1. 支持的命令及参数 [yun@mini05 zhangliang]$ hadoop fs Usage: hadoop fs [generic options] ...

  6. python基础 - 字符串作

    split(sep=None, maxsplip=-1) 从左到右 sep 指定分隔字符串,缺省情况下空白字符串,指定的字符串会被切掉 maxsplit 指定分隔次数,-1 表示遍历 rsplit(s ...

  7. 【洛谷】【数论】P1876 开灯

    [题目描述:] 首先所有的灯都是关的(注意是关!),编号为1的人走过来,把是一的倍数的灯全部打开,编号为二的的把是二的倍数的灯全部关上,编号为3的人又把是三的倍数的灯开的关上,关的开起来--直到第N个 ...

  8. 项目Alpha冲刺 5

    作业描述 课程: 软件工程1916|W(福州大学) 作业要求: 项目Alpha冲刺(团队) 团队名称: 火鸡堂 作业目标: 介绍第五天冲刺的项目进展.问题困难和心得体会 1.团队信息 队名:火鸡堂 队 ...

  9. Arduino IDE for ESP8266 项目(1) 点亮灯+按键LED+pwm

    官方文档 http://esp8266.github.io/Arduino/versions/2.1.0/doc/libraries.html 引脚口说明 http://yfrobot.com/thr ...

  10. ORA-245: In RAC environment from 11.2 onwards Backup Or Snapshot controlfile needs to be in shared location (Doc ID 1472171.1)

    巡检时遇到错误如下: alert日志: Wed Dec 19 01:00:29 2018Errors in file /oracle/base/diag/rdbms/usap/usap1/trace/ ...