2009年9月28日 星期一

用Java 將pdf轉成 image (part II)

這裡要來說一些我的使用心得,雖然有些套件可以成功的將pdf轉存成image,
但,遇上中文,似乎就束手無策了,上網google了好久,目前是一個無解的狀況,
或許,有哪位路人看到這篇,有解決的方法!非常感激。


方法一:尋找iText 是否有相關方法
目的: iText是否可以直接輸出 image
結果: 無相關函式
原因: iText很單純的只能將資料輸出成 PDF 和rtf (一種文字格式)的檔案,
也可將 xml和html 輸出成 PDF檔案。iText 方法未果。
==============================


方法二:尋找PDF相關套件
目的: 將pdf內容轉存成image
==============================
套件1. PDFRenderer.jar
==============================
結果: 可以將PDF轉成image,但會有中文失真問題
原因: 使用PDFRederner 有些PDF中文不會失真,有些PDF會失真,
不會失真的PDF是用latext產生的,字型都是自訂的。後來發現,
使用PDFRenderer可以把字抓到,但是在畫成image時,會失真。

嘗試解決方法:在產生iText時,把字體一併嵌入,可以解決此狀況?
結果:失敗。
==============================
套件2. PDFBox(version: PDFBox v0.7.3.jar)
==============================
結果: 程式執行不成功,會出現「type not implemented yet 」的錯誤訊息。
原因: 在執行時會出現「type not implemented yet 」的錯誤訊息,
原因出在 「convertToImage」這一行code,一開始看以為 讀取中文檔有問題,
嘗試的解決問題,並上網google,結果竟然是因為 PDFBox的convertToImage是在beta階段,
在jar檔底下是有convertToImage 這段code,但是在BufferedImage裏面 有一種type 還沒實作,
這個type在0.73版裡沒有被實作出來(目前則未有0.74版出來),所以,此問題目前無解。
==============================
套件3. XPDF.jar
==============================
結果: 不適用
原因: XPDF的功能為「從PDF把文字抓取出來另存文字檔」及
「從PDF把圖片抓取出來另存成圖檔」,無法把整頁的PDF轉為image。


以上。

2009年8月24日 星期一

JAVA2 SE5 中文 API

點我前往
1. JAVA2 SE5 中文 API
2. JAVA2 SE5 中文 API

二個好像是一樣的,但網址不一樣XD

內容是大陸那邊翻譯的,可以參考參考。

以上。

2009年8月21日 星期五

下載servlet.jar的網頁

下載servlet.jar所有版本的網頁:

點我前往網頁下載servlet.jar

---

哈哈,老實說,下載後,第一時間我還不太會用,因為是zip檔,應該另外包成jar檔就行了吧!

2009年8月20日 星期四

HTML語法教學網站

這是一些學習HTML語法不錯的網站,可以參考參考。

1.【網頁研習室】:HTML介紹的非常詳細,若對HTML語法不熟悉,可以到此看看。


---
以上將不定期更新。

更新日期:2009/08/20

2009年8月13日 星期四

用Java 將pdf轉成 image (part I)

此篇將講述 如何用java把 pdf轉成image。

一般而言,大家會最直覺的使用 Adobe Acrobat 開啟pdf,然後另存新檔,把檔案另存成 image。

原本以為,iText套件可以將 文字、圖檔…等資料轉成 pdf檔,也可以再把pdf轉成圖檔,google之後,找不到相關範例。

在此篇,會介紹一個好用的套件 PDFRenderer 來教導如何將 PDF 轉為圖檔。

=> 點我下載套件PDF Renderer(官網): a 100% Java PDF renderer and viewer


點我前往觀看 PDFRenderer api

範例程式引述(點我前往完整觀看程式):
範例1:How do I show a PDF in my Swing Application

範例2:How do I draw a PDF into an Image?
---
import com.sun.pdfview.PDFFile;
import com.sun.pdfview.PDFPage;
import java.awt.Image;
import java.awt.Rectangle;
import java.io.*;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import javax.swing.*;

/**
* An example of drawing a PDF to an image.
*
* @author joshua.marinacci@sun.com
*/
public class ImageMain {

public static void setup() throws IOException {

//load a pdf from a byte buffer
File file = new File("test.pdf");
RandomAccessFile raf = new RandomAccessFile(file, "r");
FileChannel channel = raf.getChannel();
ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size());
PDFFile pdffile = new PDFFile(buf);

// draw the first page to an image
PDFPage page = pdffile.getPage(0);

//get the width and height for the doc at the default zoom
Rectangle rect = new Rectangle(0,0,
(int)page.getBBox().getWidth(),
(int)page.getBBox().getHeight());

//generate the image
Image img = page.getImage(
rect.width, rect.height, //width & height
rect, // clip rect
null, // null for the ImageObserver
true, // fill background with white
true // block until drawing is done
);

//show the image in a frame
JFrame frame = new JFrame("PDF Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new JLabel(new ImageIcon(img)));
frame.pack();
frame.setVisible(true);
}

public static void main(final String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
ImageMain.setup();
} catch (IOException ex) {
ex.printStackTrace();
}
}
});
}
}
---

主題3:How do I draw a PDF directly to my own Graphics2D object?

網站上的範例寫得很詳細,還不錯理解唷 ^ ^~

以上。

2009年7月31日 星期五

[文章欣賞] 如果讓我重做一次研究生

文章網址:點我前往觀看整篇文章
---

文章簡述:

如果讓我重做一次研究生


王汎森 院士
中央研究院歷史語言研究所


這個題目我非常喜歡,因為這個題目,對大家多少都有實際的幫助。如果下次我必須再登台演講,我覺得這個題目還可以再發揮一兩次。我是台大歷史研究所畢業的,所以我的碩士是在台大歷史研究所,我的博士是在美國普林斯頓大學取得的。我想在座的各位有碩士、有博士,因此我以這兩個階段為主,把我的經驗呈現給各位。

我從來不認為我是位有成就的學者,我也必須跟各位坦白,我為了要來做這場演講,在所裡碰到剛從美國讀完博士回來的同事,因為他們剛離開博士生的階段,比較有一些自己較獨特的想法,我就問他:「如果你講這個問題,準備要貢獻什麼?」結合了他們的意見,共同醞釀了今天的演講內容,因此這裡面不全是我一個人的觀點。雖然我的碩士論文和博士論文都出版了,但不表示我就是一個成功的研究生,因為我也總還有其他方面仍是懵懵懂懂。我的碩士論文是二十年前時報出版公司出版的,我的博士論文是英國劍橋大學出版的。你說有特別好嗎?我不敢亂說。我今天只是綜合一些經驗,提供大家參考。

[文章欣賞] 140的威力

文章網址:點我前往觀看整篇文章
---
文章簡述:

一句話、一百四十個字、或三十秒的力量有多大?

在金融海嘯後,這是目前看起來最具希望、最熱門的商業趨勢。這股趨勢,則由正夯的社群網站、微網誌所造成,如Facebook、Twitter等。

從美國總統歐巴馬(Barack Obama) 、奇異(GE)前執行長傑克‧威爾許(Jack Welch),到戴爾電腦、星巴克咖啡,都搶搭這個趨勢。

《時代》雜誌(Time)描述:「它將如搜尋引擎Google,影響我們未來十年的生活。」

轉碼用軟體 - convertz

下載網址:點我前往下載
---
軟體:convertz v8.02

描述:中文簡繁內碼轉換器
一個簡單易用而且功能強大的中文內碼轉換工具,支持GBK、Big5、HZ、Shift-JIS、JIS、EUC-JP、Unicode Little Endian、Unicode Big Endian、及 UTF-8 編碼,讓您輕鬆的對純文字檔案、檔案/資料夾名稱、剪貼簿文字、及 MP3 ID3 標籤在上述編碼之間進行轉換。

功能:
* 提供繁/簡體中文及英文介面,適用於繁/簡體或其它版本的視窗。
* 支援 Big5/GBK/HZ/Unicode/UTF-8檔案在上述各種內碼間自由轉換。
* 可預覽轉換前/後的文章內容和結果。
* 支援剪貼簿內碼轉換,可於程式主視窗、工具列圖示的右按選單、或用熱鍵行使此功能。
* 部份簡體字可同時對應數個繁體字(例如:〔干、幹、乾〕〔劃、劃〕〔裡、裡〕〔發、髮〕〔郁、鬱〕〔松、鬆〕〔余、餘〕等字),程式能於轉碼的同時自動修正這些別字。使用者可自行編輯程式內建的『詞彙校正列表』去提高辨識率。
* 自動更新 HTML 檔案 標籤內的 charset 數值。
* 文字轉換轉送:可在文字輸入方塊內鍵入中文字,然後將轉碼結果輸出到指定程式。
* Command line 支援。
* 支持 CF_HTML 轉換,在 Office, IE, Outlook 等文件做剪貼簿文字轉碼時可以保留文件式樣。
* 可以將統一碼數字記法 (xxxx;) 還原成目標編碼的文字。
* 支持Mp3/APE/OGG 檔案 ID3/APE/OGG 標籤的編碼轉碼。

JB9設定struts的選單

此篇並非在教從頭設定struts的教學

而是,開啟一個原本就有的 project時,左邊的選單內,struts的圖示不見了,該怎麼把它叫出來。

1. 點選「sample.jpx」右鍵 「Properties」
2. 選擇 「Paths」的「Required Libraries」中的「Struts(->自行訂義的lib選單)」
->「Edit」
3. 在lib: Struts,選擇 [Framework]
4. [Framework]中的[Framework]選項要選擇:Struts
5. 到WebApp圖示(一隻手上面一個地球)的右鍵「Properties」
->「WebApp」->「JSP/Servlet Frameworks」
-> 把「Struts 1.X」打勾 -> 「ok」

就可以成功在選單中看到struts了。

2009年7月17日 星期五

[html語法]使用 iframe,也可以有邊框

範例語法:

<-d-i-v style="

width:100%;height:400px;

background-color:white; overflow-x:hidden;

overflow-y:auto; "> 內容


說明:

with: 寬度%

height: 高度%

overflow-x: 設定值為 hidden(不出現捲軸) or auto(出現捲軸)

overflow-y: 設定值為 hidden(不出現捲軸) or auto(出現捲軸)



2009年7月16日 星期四

Java - javaworld@tw 發問與學習的好地方

javaworld@tw: http://www.javaworld.com.tw/jute/

初學者可以到各大「精華區」先看看。^___^

2009年7月15日 星期三

Java - String.getBytes()的中文編碼問題

因為放到server上一直出現亂碼,但又不是db和網頁的問題,找了一下是程式中關於getByte()的問題。

當然,網路上也有許多解決方法。
Ref : http://www.webjx.com/exam/java-2263.html ([說明]網頁教學網 -String.getBytes()的中文編碼問題 )

以下,為簡單的測試,用java檔跑的。
---
String a= "我是誰123";
try{
System.out.println(new String(a.getBytes("Big5"), "ISO-8859-1"));
System.out.println(a.getBytes("Big5"));
System.out.println(new String(a.getBytes(), "Big5"));
System.out.println(new String(a.getBytes("Big5"), "Big5"));
System.out.println(a);
}catch (Exception ex){
ex.printStackTrace();
}
---

輸出的結果:

§??O??123
[B@1fb8ee3
我是誰123
我是誰123
我是誰123
---
為了讓中文不論在哪個語系的網頁中讓中文字顯示正常,似乎只要用 System.out.println(new String(a.getBytes(), "Big5")); 即可。(不過沒放在別的語系試過)...XD

以上。

2009年7月14日 星期二

JavaScript 教學與其他 - 酷必網

有些 JavaScript 很常用到的小功能

密碼保護網頁 -網址: http://www.study-area.org/coobila/tutorial_265.html
---
這個網頁的主站發表了很多關於程式、網頁的教學,有興趣可以點去觀看 酷必網

內容如下:
學習網頁

由淺入深, 包含html, css, javascript, vbscript, frontpage, dreamweaver, xml等教學

學習Scripting與資料庫

包含ASP/ASP.NET, PHP, SQL, Windows Script等教學

學習美工

包含Photoshop, PhotoImpact, Flash與GIF Animator等教學.
----
以上。

html語法教學網頁

有基本的html語法教學,覺得寫得很完整,來紀錄一下,免得之後又一直在 google。^____^

1. 網頁研習室 - 網址: http://www.webpage.idv.tw/study/


<將會錄續更新>

JSP - 取得網頁的絕對路徑

寫 jsp時,想取得絕對路徑時,可以用以下的方法,還不錯用 ^___^

String strAbsPath =null;
//取得檔案的絕對路徑
strAbsPath=application.getRealPath(request.getRequestURI());
out.println("
strAbsPath 1 : " + strAbsPath );

//取得檔案所在位置的資料絕對路徑
strAbsPath=new java.io.File(application.getRealPath(request.getRequestURI())).getParent();
out.println("
strAbsPath 2 : " + strAbsPath );
out.println("
");

//strAbsPath 1 : E:\installTool\Tomcat 5.5\webapps\ROOT\dataMining\index.jsp
//strAbsPath 2 : E:\installTool\Tomcat 5.5\webapps\ROOT\dataMining