2011-10-21 58 views

回答

4

,我發現這個項目,似乎這樣的伎倆: http://pdfbox.apache.org/downloads.html#recent

下面的類編碼和解碼。代碼的評論和建議非常歡迎:

import org.apache.pdfbox.io.ASCII85InputStream; 
import org.apache.pdfbox.io.ASCII85OutputStream; 

import java.io.ByteArrayInputStream; 
import java.io.ByteArrayOutputStream; 
import java.io.IOException; 
import java.io.UnsupportedEncodingException; 
import java.util.ArrayList; 



public class Ascii85Coder { 

public static byte[] decodeAscii85StringToBytes(String ascii85) { 
    ArrayList<Byte> list = new ArrayList<Byte>(); 
    ByteArrayInputStream in_byte = null; 
    try { 
     in_byte = new ByteArrayInputStream(ascii85.getBytes("ascii")); 
    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } 
    ASCII85InputStream in_ascii = new ASCII85InputStream(in_byte); 
    try { 
     int r ; 
     while ((r = in_ascii.read()) != -1) { 
      list.add((byte) r); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    byte[] bytes = new byte[list.size()]; 
    for (int i = 0; i < bytes.length; i++) { 
     bytes[i] = list.get(i); 
    } 
    return bytes; 
} 


public static String encodeBytesToAscii85(byte[] bytes) { 
    ByteArrayOutputStream out_byte = new ByteArrayOutputStream(); 
    ASCII85OutputStream out_ascii = new ASCII85OutputStream(out_byte); 

    try { 
     out_ascii.write(bytes); 
     out_ascii.flush(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    String res = ""; 
    try { 
     res = out_byte.toString("ascii"); 
    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } 
    return res; 
} 
} 
+0

由於PDFbox是開源的,您可以將代碼複製到您的項目中,以免給您的類路徑帶來可能不需要的東西。 –

+0

建議:刪除printStackTrace。要麼處理問題,要麼重新拋出異常。 –

-1

java.net上有Ascii85的實現。

+2

那麼,是不是我提供的鏈接上面,你指定的編解碼器相同? –

+0

@Mat Banik,我已經給出了該頁面的鏈接,你指的是什麼鏈接? –