Blueimp 論壇首頁
  首頁  | 討論區  | 最新話題  | 搜尋  | XML  |  登入

此話題中所有文章數: 1 [ 話題狀態: 一般 ]
上一話題 此文章已經觀看 14388 次 而且有 0 篇回應 下一話題
會員大頭照
男寶寶 jieh 《騎士團團長》
文章: 6881
v3.8.8

Tiff to PDF

在公司想把一堆文件弄起來管理,不過這堆須整合的文件來源有人工亂丟、掃瞄機和傳真伺服器,最佳的整合終端介面就是讓 user 能在 web 上看到所有檔案。

很多公文都是 tif,不過最近漸漸 PDF 也盛行了,但是這些周邊喜歡用 tif 檔案,本公司預算都用不到 Client PC,在 windwos 2000 就記憶體不足了 ="= 256m 想夠用也很難,更別說想升級到 win xp...

windows 2000 用 IE6 無法正常把檔案交給 imaging 軟體開啟,user GG叫說存檔後開啟不方便!只好搬出 java 囉...

首先你要先有 iText.jar http://www.lowagie.com/iText/
只要把以下的 java code 抓回去用,就能開開心心地把 Tif 轉 PDF 了。



import java.io.*;

import com.lowagie.text.*;
import com.lowagie.text.pdf.*;
import com.lowagie.text.pdf.codec.*;

public class TiffToPDF {

public static void main(String[] args) {
if (args.length < 1) {
System.out.println("Usage: Tiff2Pdf file1.tif [file2.tif ... fileN.tif]");
System.exit(1);
}

String tiff, pdf;
for (int i = 0; i < args.length; i++) {
tiff = args;
pdf = tiff.substring(0, tiff.lastIndexOf('.') + 1) + "pdf";
Document document = new Document(PageSize.LETTER, 0, 0, 0, 0);
int pages = 0, comps = 0;
try {
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(pdf));
document.open();
PdfContentByte cb = writer.getDirectContent();
RandomAccessFileOrArray ra = null;
try {
ra = new RandomAccessFileOrArray(tiff);
comps = TiffImage.getNumberOfPages(ra);
} catch (Throwable e) {
System.out.println("Exception in " + tiff + " " + e.getMessage());
continue;
}

System.out.println("Processing: " + tiff);
for (int c = 0; c < comps; ++c) {
try {
Image img = TiffImage.getTiffImage(ra, c + 1);
if (img != null) {
System.out.println("page " + (c + 1));
img.scalePercent(7200f / img.getDpiX(), 7200f / img.getDpiY());
document.setPageSize(new Rectangle(img.scaledWidth(), img.scaledHeight()));
img.setAbsolutePosition(0, 0);
cb.addImage(img);
document.newPage();
++pages;
}
} catch (Throwable e) {
System.out.println("Exception " + tiff + " page " + (c + 1) + " " + e.getMessage());
}
}
ra.close();
document.close();
} catch (Throwable e) { e.printStackTrace(); }

System.out.println("done...");

}
}
}


事情好簡單,重點就上面這樣幾行而已,剩下就是整合應用囉~
----------------------------------------
支持小惡魔
BTC : 19tn3RnCuwZVukXAwyhDWZD4uBgUZoGJPx
LTC : LTFa17pSvvoe3aU5jbmfcmEpo1xuGa9XeA
知識跟八卦一樣,越多人知道越有價值;知識最好的備份方法,散播!
藍色小惡魔(林永傑): 臉書
----------------------------------------
[編輯文章 2 次, 最後修改: jieh 於 2009/12/27 下午 01:41:55]

[2009/7/2 下午 11:48:45]   [返迴此篇文章頂端 ]  回到頂端