仿百度文庫方案[openoffice.org 3+swftools+flexpaper](七) 之 使用iText將jpg、jpeg、png轉換為pdf


其他,使用iText將jpg/jpeg/png轉換為pdf

  iText是著名的開放源碼的站點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;

}
public 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
*
@param w
*
@return
*/

public int getPercent(float h,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;
}
/**
* 第二種解決方案,統一按照寬度壓縮
* 這樣來的效果是,所有圖片的寬度是相等的,自我認為給客戶的效果是最好的
*
@param args
*/
public int getPercent2(float h,float w)
{
int p=0;
float p2=0.0f;
p2=530/w*100;
p=Math.round(p2);
return p;
}
/**
* 第三種解決方案,就是直接壓縮,不安像素比例,全部壓縮到固定值,如210*297
*
*
@param args
*/
public 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 進行測試。

 

 仿百度文庫方案[openoffice.org 3+swftools+flexpaper](一) 之 tomcat6.0+jdk1.6環境配置

 仿百度文庫方案[openoffice.org 3+swftools+flexpaper](二) 之 安裝openoffice.org

 仿百度文庫方案[openoffice.org 3+swftools+flexpaper](三) 之 使用JODConverter將office文檔轉換為pdf


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM