我讀利用iText現有的PDF(INPUT
):我怎麼可能產生Base64編碼的PDF由iText的的PdfReader閱讀
PdfReader reader = new PdfReader(INPUT);
我用這reader
實例來操縱PDF,但最終的結果需要進行Base64編碼(我需要將它作爲文本BLOB插入到db2數據庫中)。我怎樣才能確保iText的輸出是Base64編碼的?
我讀利用iText現有的PDF(INPUT
):我怎麼可能產生Base64編碼的PDF由iText的的PdfReader閱讀
PdfReader reader = new PdfReader(INPUT);
我用這reader
實例來操縱PDF,但最終的結果需要進行Base64編碼(我需要將它作爲文本BLOB插入到db2數據庫中)。我怎樣才能確保iText的輸出是Base64編碼的?
你的問題不清楚,或者至少含糊不清。
詢問如何在Base64中轉換PdfReader pdfReader?沒有任何意義,這就是爲什麼你的問題不清楚。你的問題可能是你有輸入使用Base64編碼,或者你想要輸出,你想用Base64編碼。這使你的問題變得模糊不清。如果INPUT
是
import com.itextpdf.text.pdf.codec.Base64;
...
PdfReader reader = new PdfReader(Base64.decode(INPUT));
您要使用的操作(路徑)的PDF文件
如果INPUT
是String
表示使用Base64編碼的PDF文件,那麼你可以像這樣解碼結果被編碼爲Base64編碼字符串一個PDF,那麼你就可以做到這一點是這樣的:
import com.itextpdf.text.pdf.codec.Base64;
PdfReader reader = new PdfReader(INPUT);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfStamper stamper = new PdfStamper(reader, baos);
// do stuff with stamper
stamper.close();
String base64 = Base64.encode(baos.toByteArray());
可能有其他的方式來生產的Base64編碼輸出,如使用某種Base64OutputStream
,但我更喜歡使用iText附帶的Base64類。
如果您不需要操作PDF,您甚至不需要iText。你可以簡單地使用這個問題的答案:Out of memory when encoding file to base64
UPDATE:
在這個答案評論,你寫道:
我有這樣的:
byte[] bdata = blob.getBytes(1, (int) blob.length());
InputStream inputStream = blob.getBinaryStream();
String recuperataDaDb = convertStreamToString(inputStream);
byte[] decompilata = Base64.decode(recuperataDaDb);
我想在pdf文件中寫下這個「decompilata」whittext.jar
你有兩個選擇:
[1.]您不需要iText。你可以簡單地寫byte[]
到一個文件如下所述:byte[] to file in Java
FileOutputStream stream = new FileOutputStream(path);
try {
stream.write(bytes);
} finally {
stream.close();
}
[2]你看這個問題的答案:你渴望使用iText的
PdfReader reader = new PdfReader(decompilata);
FileOutputStream fos = new FileOutputStream(pathToFile);
PdfStamper stamper = new PdfStamper(reader, fos);
stamper.close();
我很驚訝。你真的不需要iText來滿足你的要求。所有你需要的是如何編寫Java代碼來執行一些簡單的I/O的教育。
再次提出一個沒有道理的問題。 byte []'的內容是什麼?如果你不回答這個問題,你不應該期待一個答案。也許它就像這裏解釋的一樣簡單:http://stackoverflow.com/questions/4350084/byte-to-file-in-java但是,當然,如果'byte []'不是一個真正的PDF文件(例如它是Base64編碼的),那麼答案會有所不同。 –
我會更新我的答案。 –
你必須澄清,因爲現在你的問題沒有意義。 'PdfReader'不生成PDF,所以解釋你的問題的一種方法是:我怎樣才能使'PdfReader'接受使用base64編碼的INPUT。這個問題很容易回答。'PdfReader'與一個產生PDF的作者類('PdfCopy','PdfStamper',...)結合使用。解釋你的問題的另一種方法是,你想產生一個用base64編碼的PDF。這也很容易實現,但這與第一種解釋完全不同。總而言之,這個問題的質量很低。 –
我使用PdfReader閱讀PDF,我必須將其轉換爲base64才能插入db2中的表中 – Vins
那麼,您爲什麼不首先這麼說呢?請閱讀我的第二個答案。另外:如果你不需要改變PDF,那你爲什麼使用iText來編碼PDF?我重寫了你的問題,但有可能你甚至不需要iText。 –