`
Charlie_1989
  • 浏览: 13254 次
文章分类
社区版块
存档分类
最新评论

20141218_输出PDF错误之byte[]

 
阅读更多

问题描述:当浏览器端使用Active控件如(AIP、iwebPDF)请求打开后台PDF文件时,Java后台处理请求的方法处理如下:

response.setCharacterEncoding("UTF-8");

String filePath = request.getParameter("fileName");

File file = new File(filePath);

try {

if (!file.exists()) {

response.sendError(404, "文件没有找到!");

return null;

}

FileInputStream in = new FileInputStream(file);

OutputStream out = response.getOutputStream();

byte[] b = new byte[1024 * 8];

while ((in.read(b)) != -1) {

out.write(b);

}

out.flush();

in.close();

out.close();

} catch (IOException e) {

e.printStackTrace();

}

return null;

前台传了文件在服务器的全路径,存数据库也是存全路径。

红色字体行,从内存申请8K字节内存作为缓存,把文件流转成文件流响应输出到客户端,问题很容易出现PDF缓冲到客户端不完整,表现为显示有问题,另存为处理后的文件异常,打开关闭后提示“是否保存修改…”

解决办法是把8K改成1K,即1024问题就没在出现。

原因分析:还没找到!!!

其他解决方案:

intlen=0;//字节长度

while((len=in.read(b))>0){//将读取到的长度记录下来

out.write(b,0,len);//读取了多长的字节就写入多长的字节

}

分享到:
评论

相关推荐

    eclipse_ssh_jasperreports输出PDF等

    【标题】"Eclipse SSH JasperReports 输出PDF等" 在Java Web开发中,Eclipse、SSH(Spring、Struts和Hibernate)框架的组合是常见的选择,而JasperReports则是一个强大的报表生成工具,能够帮助开发者创建复杂的...

    byteofpython_chn.pdf

    “Byte of Python”通常是一本介绍Python编程的书籍,中文版的"byteofpython_chn.pdf"可能包含Python基础、编程环境搭建、基本语法、函数、模块、错误和异常处理、面向对象编程、输入/输出操作、正则表达式、网络...

    HeadFirstJava_CH_PDF_深入浅出_Java 清晰版

    1. 基本数据类型:Java有八种基本数据类型,包括整型(byte, short, int, long)、浮点型(float, double)、字符型(char)和布尔型(boolean)。 2. 引用数据类型:包括类、接口和数组,它们都是对象的引用,而...

    java 把PDF转换成BASE64

    byte[] pdfBytes = Files.readAllBytes(filePath); ``` 2. **转换为BASE64**:Java 8及以上版本提供了`java.util.Base64`工具类,可以方便地进行BASE64编码。 ```java String base64String = Base64.getEncoder()....

    A-Byte-of-Python-英文.pdf

    总之,《A Byte of Python》是Python初学者的理想起点,通过这本书,你可以系统地学习Python编程,掌握基础,进阶到更复杂的编程技巧,从而开启你的编程之旅。同时,借助书栈(BookStack.CN)这样的平台,你可以更轻松...

    个人计算机简称PC机,这种计算机属于___.pdf

    - "Byte"(字节)是计算机存储容量的基本单位。字节由八位(bit)组成,用来表示一个字符或者数据的基本形式。 - "DCPU"可能指的是个人计算机中使用的中央处理器(Central Processing Unit,CPU),它是计算机硬件...

    A Byte of Python.pdf

    《A Byte of Python》是一本深受初学者喜爱的Python编程入门书籍。这本书以其简洁明了的语言,详尽的示例,以及对Python基础知识的全面覆盖,为想要学习Python编程的人提供了一个良好的起点。以下是该书可能涵盖的...

    WF-700B_中文使用说明书_.pdf

    - **BYTE2**:包含多种状态位,如启动位、错误指令位、故障位及硬币数据段等,用于报告硬币器的状态和数据。 综上所述,WF-700B接口板是一种专为投币控制应用设计的产品,通过其内置的RS232接口和一系列先进的功能...

    浅谈Java的输入输出流.pdf

    - 主要有三个基本的方法:`read()`、`read(byte[] b)` 和 `read(byte[] b, int off, int len)`,分别用于读取单个字节、读取字节到数组以及读取指定长度的字节到数组中。 - 对于 `OutputStream` 类,提供了一组...

    svg to pdf svg2pdf

    5. **命令行使用**:`svg2pdf`通常提供命令行接口,用户可以通过指定SVG文件和输出PDF文件路径来执行转换,如`svg2pdf input.svg output.pdf`。在开发环境中,这可以集成到自动化脚本或构建流程中。 6. **代码示例*...

    byte-of-python-chinese-edition.pdf

    异常处理部分则让读者了解在编程过程中可能会遇到的错误以及如何妥善处理这些错误。标准库的学习则是为了让读者能够利用Python自带的丰富库函数,完成更多高级功能,而无需重新发明轮子。 值得一提的是,本书还提供...

    vueCli3.0文件上传后,后端返回流,前端转换成pdf预览的3种方式

    值得注意的是,安全性和用户体验也是需要考虑的因素,例如,确保用户能够在预览时正确导航PDF,以及处理可能出现的错误情况。对于大型项目,可能还需要考虑性能优化,如分页加载、懒加载等策略。

    Java中输入输出.pdf

    它们都是以字节“byte”为对象做输入与输出的。 三、Reader 和 Writer 类 Reader 类和 Writer 类是 Java 中输入输出流的另外两种类。它们是以字符“char”为对象做输入与输出的。Reader 类用于读取字符数据,而 ...

    iText截取PDF

    描述中提到的内存泄露问题,指的是在处理大型PDF文件时,使用PdfReader类直接读取文件可能导致的内存溢出错误。标签“IText”代表了这一知识点的技术范畴。 在iText中,一个PDF文件可以被转换成多个页面,而iText...

    Java面试宝典2013_PDF版.pdf

    39. 下面的程序代码输出的结果是多少? 文档未给出具体的代码内容,无法进行点评。 40. final, finally, finalize的区别。 final用于声明常量或者禁止子类继承,finally是try-catch语句中用来确保代码总是被执行...

    PDFConvert,PDF转图片 C#代码

    private static extern int gsapi_run_pdf_page(IntPtr instance, int pdffile, int page, byte[] image, int width, int height, int dpi); // ... public void ConvertPdfToJpeg(string pdfFilePath, string ...

    URL转换为PDF的Java实现

    在IT行业中,转换URL到PDF是一项常见的需求,例如为了保存网页内容、制作电子文档或进行离线阅读。Java作为一种广泛使用的编程语言,提供了多种...在实际应用中,可能还需要考虑性能优化、错误处理以及PDF质量等问题。

    itext生成PDF图片文档

    我们可以使用`try-catch`语句来捕捉异常,并输出错误信息。 ```java try { // 生成PDF文档的代码 } catch (DocumentException de) { System.out.println(de.getMessage()); } catch (IOException ioe) { System....

    byte-of-python.pdf

    从读者的反馈来看,《A Byte of Python》被广泛认为是初学者的最佳入门教程之一,它不仅内容丰富而且深入浅出,使用了易于理解的示例来阐述概念。 在学习本书的过程中,读者应准备好随时实践,并尝试理解每一个概念...

    python_lib基础库.pdf

    2. byteorder:byteorder是一个指示器,表示本地字节顺序的类型。大端序平台的值是'big',小端序平台的值是'little'。不同的平台有不同的字节顺序,Python提供了这个变量来帮助开发者适应不同的平台。 3. builtin_...

Global site tag (gtag.js) - Google Analytics