文件下载:从服务器上下载,自动给下载的PDF添加水印(一)

/**
* 文件下载:从服务器上下载,自动给下载的PDF添加水印
*
* @param pathName 文件名
* @param response
* @param request
/
@RequestMapping("/getPrinting")
public void getPrinting(String pathName, HttpServletResponse response, HttpServletRequest request) {
try {
//isValidFilename():文件名称验证
if (!FileUtils.isValidFilename(pathName)) {
throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", pathName));
}
//下载的文件名
String realFileName = System.currentTimeMillis() + pathName.substring(pathName.indexOf("_") + 1);
/
*
* 响应参数
* setFileDownloadHeader():下载文件名重新编码
/
response.setCharacterEncoding("utf-8");
response.setContentType("multipart/form-data");
response.setHeader("Content-Disposition","attachment;fileName=" + FileUtils.setFileDownloadHeader(request, realFileName));
//资源路径
String inputFile = AppConfig.getDownloadPath() + pathName;
String outputFile = AppConfig.getDownloadPath() + realFileName;
/
*
* 生成有水印的文件,放在原文件同目录:
* waterMark(String inputFile,String outputFile,String "水印"):封装在FileUtils工具类的加水印方法
* inputFile:原PDF文件路径
* outputFile:生成带水印的PDF文件路径
/
FileUtils.waterMark(inputFile, outputFile, "今天是2020年10月24日!");
/
*
* 将指定文件下载:outoutFile
* writeBytes(String filePath, OutputStream os):输出指定文件的byte数组
* 可以修改参数 outputFile 为 inputFile ,即下载没有水印的原文件
*/
FileUtils.writeBytes(outputFile, response.getOutputStream());
if (null != outputFile) {
// 删除在服务器上生成的带水印的PDF
FileUtils.deleteFile(outputFile);
}
} catch (Exception e) {
log.error("下载文件失败", e);
}
}

posted @ 2021-10-08 14:15  长歌→  阅读(291)  评论(0编辑  收藏  举报