仿百度文库方案[openoffice.org 3+swftools+flexpaper](七) 之
其他方法:使用iText将jpg/jpeg/png转换为pdfiText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。1.在企业的信息系统中,报表处理一直占比较重要的作用,iText--一种生成PDF报表的Java组件,通过在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超级连接显示或下载得到生成的报表,这样就很好的解决了B/S系统的报表处理问题。2.支持文本,表格,图形的操作,可以方便的跟 Servlet 进行结合。 ???? 继续笔者的DocConverter项目。开发环境是MyEclipse 9.0。笔者下载的是iText5.0.4。 新建JPG2PDFUtil.java package com.iori.webapp.util; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import com.lowagie.text.Document; import com.lowagie.text.DocumentException; import com.lowagie.text.Image; import com.lowagie.text.pdf.PdfWriter; public class JPG2PDFUtil { private String inputFileString; private String outputFileString; public JPG2PDFUtil(String inputFile,String outputFile) { this.inputFileString = inputFile; this.outputFileString = outputFile; } void imgtopdf() { //创建一个文档对象 Document doc = new Document(); try { 定义输出文件的位置 PdfWriter.getInstance(doc,new FileOutputStream(outputFileString)); 开启文档 doc.open(); 设定字体 为的是支持中文 BaseFont bfChinese = BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED); Font FontChinese = new Font(bfChinese,12,Font.NORMAL); 向文档中加入图片 /*//以下是多图合成一个pdf,暂时用不到 for(int i=1;i<32;i++) { //取得图片~~~图片格式: Image jpg1 = Image.getInstance("c:/"+i+".jpg"); //原来的图片的路径 //获得图片的高度 float heigth=jpg1.height(); float width=jpg1.width(); System.out.println("heigth"+i+"----"+heigth); System.out.println("width"+i+"-----"+width); //合理压缩,h>w,按w压缩,否则按w压缩 //int percent=getPercent(heigth,width); //统一按照宽度压缩 int percent=getPercent2(heigth,width); //设置图片居中显示 jpg1.setAlignment(Image.MIDDLE); //直接设置图片的大小~~~~~~~第三种解决方案,按固定比例压缩 //jpg1.scaleAbsolute(210.0f,297.0f); //按百分比显示图片的比例 jpg1.scalePercent(percent);//表示是原来图像的比例; //可设置图像高和宽的比例 //jpg1.scalePercent(50,100); doc.add(jpg1); } */ 向文档中加入图片 取得图片~~~图片格式: Image jpg1 = Image.getInstance(inputFileString); 原来的图片的路径 获得图片的高度float heigth=jpg1.height(); float width=jpg1.width(); System.out.println("heigth----"+heigth); System.out.println("width-----"+width); 合理压缩,h>w,按w压缩,否则按w压缩 int percent=getPercent(heigth,width); 统一按照宽度压缩int percent=getPercent2(heigth,width); 设置图片居中显示 jpg1.setAlignment(Image.MIDDLE); 直接设置图片的大小~~~~~~~第三种解决方案,按固定比例压缩 jpg1.scaleAbsolute(210.0f,297.0f); 按百分比显示图片的比例 jpg1.scalePercent(percent);表示是原来图像的比例; 可设置图像高和宽的比例 jpg1.scalePercent(50,100); doc.add(jpg1); 关闭文档并释放资源 doc.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (DocumentException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * 第一种解决方案 * 在不改变图片形状的同时,判断,如果h>w,则按h压缩,否则在w>h或w=h的情况下,按宽度压缩 * @param h * w * @return */ int getPercent(float h,255)">float w) { int p=0; float p2=0.0f; if(h>w) { p2=297/h*100; } else { p2=210/w*100; } p=Math.round(p2); return p; } * 第二种解决方案,统一按照宽度压缩 * 这样来的效果是,所有图片的宽度是相等的,自我认为给客户的效果是最好的 * args */ int getPercent2(float p2=0.0f; p2=530/w*100; p=Math.round(p2); * 第三种解决方案,就是直接压缩,不安像素比例,全部压缩到固定值,如210*297 * * static void main(String[] args) { JPG2PDFUtil pt=new JPG2PDFUtil("c:/temp/ddd.jpg","c:/temp/ddd.pdf"); pt.imgtopdf(); } } 在JPG2PDFUtil.java,右键属性 - >Run as - >Java Application ,输出main的测试结果。 在jsp中执行 新建MyJPG2PDFTest.jsp <%@ page import="java.io.*"%> <%@ page import="java.util.*"%> <%@ page import="com.iori.webapp.util.*"%> <% JPG2PDFUtil pt=new JPG2PDFUtil("c:/temp/333.jpg","c:/temp/333.pdf"); pt.imgtopdf(); %> <!-- 下面这些html可以去掉 --> <html> <head> <title>Simple jsp page</title> </head> <body>Place your content here</body> </html> 在项目DocConverter根目录,右键属性 - >Run as - >MyEclipse Server Application 发布到之前安装的Tomcat 6.0的根目录,然后用url路径访问:Http://localhost:8080/DocConverter/MyDOC2PDFTest.jsp?进行测试。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |