java代码实现pdf文档下载

楼主试了半天,想用controller直接实现来着,但一直都得不到文件

@Controller
@RequestMapping("/reportDownload")
public class ReportDownloadController extends BaseController{

private static Logger logger=Logger.getLogger(ReportDownloadController.class);

@RequestMapping("/downReport")
public HttpServletResponse busReport(HttpServletRequest request,BigDecimal modelId,BigDecimal planId,HttpServletResponse response) throws IOException {
    UtilReport util = new UtilReport();
    String fileDownloadName = null;
    String fileDisplayName = null;
    try {           
        IsReport isReport = util.initReport(modelId, planId,request);
        fileDownloadName = isReport.getRptFileName();
        fileDisplayName = isReport.getRptName();

// fileDisplayName = URLEncoder.encode(fileDisplayName, "UTF-8");
fileDisplayName = new String(fileDisplayName.getBytes("UTF-8"),"ISO-8859-1");
} catch (Exception e) {
System.out.println("报告不存在");
e.printStackTrace();
}
OutputStream outp = null;
BufferedInputStream bins = null;
FileInputStream in = null;
BufferedOutputStream bous = null;
try {

in = new FileInputStream(new File(fileDownloadName));
bins = new BufferedInputStream(in);

byte[] b = new byte[bins.available()];
bins.read(b);
bins.close();
response.reset();
response.addHeader("Content-Disposition", "attachment;filename=" + fileDisplayName);
response.addHeader("Content-Length", "" + new File(fileDownloadName).length());
outp = response.getOutputStream();
bous = new BufferedOutputStream(outp);
response.setContentType("application/octet-stream");
bous.write(b);
bous.flush();
bous.close();
} catch (Exception e) {
System.out.println("文件下载失败!");
e.printStackTrace();
} finally {
if (in != null) {
in.close();
in = null;
}
if (outp != null) {
outp.close();
outp = null;
}
if (bins != null) {
bins.close();
bins = null;
}
if (bous != null) {
bous.close();
bous = null;
}
}

    return response;
}

6个回答

图片说明

和下载word文档的类似!若需要请私信!

weixin_42399875
weixin_42399875 大神,求教
9 个月之前 回复
weixin_44138568
爱❤️ 我需要
一年多之前 回复

和普通的下载是一样的,设置好你的filename io流啥的都一样的 看你用的是springmMVC 查查他的下载就行了

和下载普通的文件一样,设置好你要下载的文件的输出流等信息就可以!

跟下载普通文件一样的

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Python+OpenCV计算机视觉

Python+OpenCV计算机视觉

java实现下载pdf文件太慢

java实现在下载pdf文件的时候会对其进行解密(文件是加密的,下载需要解密), 这个解密的过程占用了大量的下载时间,导致文件一直下载太慢,根本就下载不下来, 这个问题怎么解决?

java实现pdf下载文件太慢了怎么办

在用java实现下载pdf文件的时候,文件太大下载不下来怎么办,这些pdf文件还是加密的,在下载的过程还需要解密,所以导致文件下载不下来,怎么解决?

用Java实现 对PDF文件大小的控制。

如题,通过代码可以将现有的PDF,比如100m大小的文件缩小到80m,不是压缩成zip或者rar. 在网上找了很多,一点代码都没有可以参考的。求大神指点

java 如何保存上传的pdf文件

前台jsp页面上传pdf文件,后台想保存到本地目录,java后台改如何实现?

java实现pdf转word文件(需带图片)

需带上图片;可以在liunx系统运行....................................................................

java 代码将PDF 文件转十六进制字符串以0x开头输出

java 代码将PDF 文件转十六进制字符串以0x开头输出,诸位大神谢谢

用Java代码把URL转成PDF

有没有使用Java代码把URL转成PDF的逻辑代码,还请各位大神指导

java 生成pdf 压缩 文件大小

java使用itext生成pdf文件,文件大小压缩,比如大小34M变成1M或更小,

java 生成pdf 压缩 文件大小

java 生成pdf 压缩 文件大小 java使用itext生成pdf文件,文件大小压缩,比如大小34M变成1M或更小,大神

java如何显示PDF文件在页面中去展现

第一种是用户可以直接点击www.sales.com/wkyrpt/wkyrptServlet?instantiate=EcomApp&action=salview 直接跳转到一个JSP,这个JSP来显示PDF。这个PDF是在网页上显示。 第二种是在页面中有一个link,点击link进入到EcomApp这个Java中去判断是否满足权限。然后通过PDF的路径去显示PDF。 怎么实现,代码参考谢谢?

使用java或者调用外部程序实现cad的dwg文件转PDF

各位亲,有哪位大神做过使用java或者调用外部程序实现cad的dwg文件转PDF,请指教指教!

求:Java实现ceb格式转成pdf格式

Java实现ceb格式转成pdf格式,现在急需用到此功能,求看到的大神给个思路或者建议

java调用Adobe打印pdf文档?

java可以用jacob调用ms word打印word文档,有谁知道如何调用Adobe进行pdf文档的打印?主要目的是希望把pdf文档转换为tif文件,再发传真。当然,所谓的打印都是调用虚拟打印机的,输出为tif文件。 只要能把pdf文档转换为tif文件都可以!欢迎大家讨论!!

libreOffice将文档转换pdf的java代码

public String getLinuxOfficeHome() { String osName = System.getProperty("os.name"); if (Pattern.matches("Linux.*", osName)) { return "/opt/libreoffice5.3/program/soffice"; } else if (Pattern.matches("Windows.*", osName)) { return "C:\\LibreOffice\\program\\soffice.exe"; } return null; } /** * libreOffice调用命令启动及转换 * @param sourceFile * @return */ public int libreOffice2PDF(String sourceFile) { File inputFile = new File(sourceFile); if (!inputFile.exists()) { return -1;//文件不存在 } String OpenOffice_HOME = getLinuxOfficeHome(); String path = sourceFile.substring(0,sourceFile.lastIndexOf(File.separator)); // 启动OpenOffice的服务 String command = OpenOffice_HOME + " --convert-to pdf:writer_pdf_Export --outdir "+path+" "+sourceFile; Process pro = null; log.error(command); try { pro = Runtime.getRuntime().exec(command); InputStream in = pro.getErrorStream(); while (in.read() != -1) { System.out.println(in.read()); } in.close(); } catch (IOException e) { e.printStackTrace(); return -2; } pro.destroy(); log.debug(sourceFile+":转换成功"); return 0; }

java读取pdf文件出现中文乱码

代码如下,读取pdf文件时,出现中文字符乱码的情况,求大神解决。。 ![图片说明](https://img-ask.csdn.net/upload/201512/01/1448957510_127034.png) package read; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import com.linuxense.javadbf.DBFField; import com.linuxense.javadbf.DBFReader; public class readDbf { public static void main(String[] args){ String filePath = "e:/20151201.DBF"; read(filePath); } public static void read(String filePath){ InputStream in = null; try { //读取pdf文件 in = new FileInputStream(filePath); //根据输入流,读取一个dbfreader实例,用来读取dbf文件信息 DBFReader reader = new DBFReader(in); //获取DBF文件中字段的个数 int couNum = reader.getFieldCount(); //输出字段的个数 System.out.println("字段个数为:"+couNum); //取出字段信息 for(int i =0;i<couNum;i++){ DBFField field = reader.getField(i); //解决字段信息乱码 String fieldName = new String(field.getName().getBytes("??"),"utf-8"); //输出字段信息 System.out.print(fieldName+" "); } System.out.println(); //取出pdf文件中的数据 Object[] rowValues; while((rowValues = reader.nextRecord())!=null){ for(int i =0;i<rowValues.length;i++){ System.out.print(rowValues[i]+" "); } System.out.println(); } } catch (Exception e) { e.printStackTrace(); }finally{ try { in.close(); } catch (IOException e) { e.printStackTrace(); } } } }

java pdf打水印如何制止工具去掉水印

java给pdf文件打上明水印,但是使用市面上的一些工具就能把这些水印给去掉,有没有办法能 制止把水印去掉呢。之前是想了一种方式,pdf打水印,然后把pdf文件转成图片格式,但是文件 就会存在失真现象

java 编写的下载文件代码,在谷歌上下载文件出现~变成-

项目上有个功能,是将上传的文件再下载下来,主要实现就是java那一套,将数据写进输出流,通过response返回,response的头设置为: response.setHeader("Content-Disposition", "attachment; filename=\"" + encodeFileName + "\";filename*=utf-8'')" + encodeFileName; 这里的encodeFileName是经过UTF-8编码将文件名转为URL编码后的值。 实践时碰到一个问题,当上传的文件命名为~.txt时,在谷歌浏览器上下载的文件名就会变成-.txt,在ie及火狐不会有这种问题; 后来百度说是谷歌浏览器自身编码的问题,然后修改谷歌浏览器高级设置内的编码为utf-8后,还是未能修复。 求各路大神相助

用JAVA添加pdf空白页???

请问各位大神,我怎么在我已经存在的pdf中使用java代码在最后一页添加一个空白页啊

2019 Python开发者日-培训

2019 Python开发者日-培训

150讲轻松搞定Python网络爬虫

150讲轻松搞定Python网络爬虫

设计模式(JAVA语言实现)--20种设计模式附带源码

设计模式(JAVA语言实现)--20种设计模式附带源码

YOLOv3目标检测实战:训练自己的数据集

YOLOv3目标检测实战:训练自己的数据集

java后台+微信小程序 实现完整的点餐系统

java后台+微信小程序 实现完整的点餐系统

三个项目玩转深度学习(附1G源码)

三个项目玩转深度学习(附1G源码)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

2019 AI开发者大会

2019 AI开发者大会

玩转Linux:常用命令实例指南

玩转Linux:常用命令实例指南

一学即懂的计算机视觉(第一季)

一学即懂的计算机视觉(第一季)

4小时玩转微信小程序——基础入门与微信支付实战

4小时玩转微信小程序——基础入门与微信支付实战

Git 实用技巧

Git 实用技巧

Python数据清洗实战入门

Python数据清洗实战入门

使用TensorFlow+keras快速构建图像分类模型

使用TensorFlow+keras快速构建图像分类模型

实用主义学Python(小白也容易上手的Python实用案例)

实用主义学Python(小白也容易上手的Python实用案例)

程序员的算法通关课:知己知彼(第一季)

程序员的算法通关课:知己知彼(第一季)

MySQL数据库从入门到实战应用

MySQL数据库从入门到实战应用

机器学习初学者必会的案例精讲

机器学习初学者必会的案例精讲

手把手实现Java图书管理系统(附源码)

手把手实现Java图书管理系统(附源码)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

.net core快速开发框架

.net core快速开发框架

玩转Python-Python3基础入门

玩转Python-Python3基础入门

Python数据挖掘简易入门

Python数据挖掘简易入门

微信公众平台开发入门

微信公众平台开发入门

程序员的兼职技能课

程序员的兼职技能课

Windows版YOLOv4目标检测实战:训练自己的数据集

Windows版YOLOv4目标检测实战:训练自己的数据集

HoloLens2开发入门教程

HoloLens2开发入门教程

微信小程序开发实战

微信小程序开发实战

Java8零基础入门视频教程

Java8零基础入门视频教程

Python可以这样学(第一季:Python内功修炼)

Python可以这样学(第一季:Python内功修炼)

相关热词 c# 按行txt c#怎么扫条形码 c#打包html c# 实现刷新数据 c# 两个自定义控件重叠 c#浮点类型计算 c#.net 中文乱码 c# 时间排序 c# 必备书籍 c#异步网络通信
立即提问