Java 中HTTP响应数据生成PDF,PDF文件的读取

 时间:2024-10-13 07:46:07

1、Java 中如何将HTTP响应数据生成PDF?首先选用的IText,导入相关的jar包,我当前用到的如截图所示

Java 中HTTP响应数据生成PDF,PDF文件的读取

2、将HTTP响应数据生成PDF,这一步的话,就比较坑,浪费了好多时间,查了很多资亓歃肿肖料,也是我想把它记录下来的主要原因,废话少说,先说踩的坑1.区分字符流、字节流这里可以百度一下,但是简创饬呱屮言之就是:java中提供了专用于输入输出功能的包Java.io,其中包括: InputStream,OutputStream,Reader,Writer InputStream 和OutputStream,两个是为字节流设计的,主要用来处理字节或二进制对象, Reader和 Writer.两个是为字符流(一个字符占两个字节)设计的,主要用来处理字符或字符串. 所以,PDF 必须要用字节流来处理2.根据响应确定生成的文件pdf connection.getContentType()=application/pdf 即导出为pdf文件3.数据流的处理//FilePath=FilePath+".pdf";//File f =new File(FilePath);//OutputStream out = new BufferedOutputStream(new FileOutputStream(f));// java.io.InputStream is = new BufferedInputStream(connection.getInputStream());// // byte[] flash = new byte[2048];// int len;// while((len=is.read(flash))>0){// //System.out.println(new String(flash));// out.write(flash, 0, flash.length);// } // out.flush();上述方法,用以上方法后,发现导出报表很不稳定,总数报错,或者数据丢失的现象,截图所示,因此上述方法不可取之后咨询开发,对代码进行了优化,代码贴出来用到了ByteArrayOutputStream和iText生成PDF文档类FilePath=FilePath+".pdf"; File f =new File(FilePath); FileOutputStream fo = new FileOutputStream(f); ByteArrayOutputStream baos = new ByteArrayOutputStream(); for(int i;(i=connection.getInputStream().read())!=-1;){ baos.write(i); } baos.flush(); Document doc = new Document(); PdfStream pdfStream=new PdfStream(baos.toByteArray()); PdfWriter pw =null; try { pw = PdfWriter.getInstance(doc, fo); } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } pdfStream.toPdf(pw,fo); pw.flush(); baos.close(); pw.close(); fo.close();4.PDF文件的读取也是从网上找的,两种方法都可以用,代码如下:public static String getPdfFileText(String fileName) throws IOException { PdfReader reader = new PdfReader(fileName); PdfReaderContentParser parser = new PdfReaderContentParser(reader); StringBuffer buff = new StringBuffer(); TextExtractionStrategy strategy; for (int i = 1; i <= reader.getNumberOfPages(); i++) { //strategy = parser.processContent(i, new SimpleTextExtractionStrategy()); //buff.append(strategy.getResultantText()); buff.append(PdfTextExtractor.getTextFromPage(reader, i)); //System.out.println("编号:"+i+" "+PdfTextExtractor.getTextFromPage(reader, i)); } return buff.toString(); }

Java 中HTTP响应数据生成PDF,PDF文件的读取

3、URL请求传入参数,包含中文时出现乱码,我生成的PDF也是乱码,如图。。已解决:需要进行百分号编码和解码

Java 中HTTP响应数据生成PDF,PDF文件的读取

4、读取PDF时,按行读到的txt,源PDF的样式都丢失了,表格类的数据无法精确获取,如图。。。这个问题未解决

Java 中HTTP响应数据生成PDF,PDF文件的读取

5、测试用例循环执行时候报错:Error: java.io.FileNotFoundException: 请求的操作无法在使用用户映射庐舌垩卫区域打开的文件上执行,如图所示Error: java.io.FileNotFoundException:问题出在IO环节:流未关闭。

Java 中HTTP响应数据生成PDF,PDF文件的读取
  • 艾尔登法环古老死亡怨魂怎么获得
  • 艾尔登法环蚂蚁头盾获取方法
  • 艾尔登法环提斯魔法师塔怎么进
  • 艾尔登法环锤矛怎么获得
  • 艾尔登法环战灰战技如何快速购买学习
  • 热门搜索
    小学垃圾分类手抄报 备战期中手抄报 青春期教育手抄报 手抄报的格式 儿童安全手抄报大全 运动与健康手抄报 低碳环保手抄报内容 关于小动物的手抄报 食品安全的手抄报 小学生法制手抄报资料