[英]How to Store PDF Content In String Base64 format
我想在將 PDF 發送到FileOutputStream
之前以 Base64 格式存儲它。 我嘗試了下面的代碼。 我嘗試使用帶有匿名內部類的OutputStream
的write
方法,但內容為空。
package com.hmkcode;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import com.itextpdf.html2pdf.HtmlConverter;
public class App
{
public static final String HTML = "<h1>Hello</h1>"
+ "<p>This was created using iText</p>"
+ "<a href='hmkcode.com'>hmkcode.com</a>";
public static void main( String[] args ) throws FileNotFoundException, IOException {
HtmlConverter.convertToPdf(HTML, new FileOutputStream("string-to-pdf.pdf"));
System.out.println( "PDF Created!" );
}
}
您可以簡單地使用java.util.Base64.Encoder
類的wrap
方法來獲取一個OutputStream
,它對寫入的任何內容執行 Base64 編碼:
FileOutputStream fos = new FileOutputStream("pdf-base64.txt");
OutputStream base64os = Base64.getEncoder().wrap(fos);
HtmlConverter.convertToPdf(HTML, base64os);
請注意,文檔說要關閉 Base64 輸出流:
建議在使用后及時關閉返回的輸出流,在此期間會將所有可能的剩余字節刷新到底層輸出流。 關閉返回的輸出流將關閉底層輸出流。
convertToPdf
自動關閉輸出流,但如果您以不同的方式創建 PDF,請確保調用base64os.close()
。
如果出於某種原因您想先創建 PDF,然后再進行 Base64 編碼,您可以使用許多 Base64 編碼實現中的一種。 例如,使用java.util.Base64.Encoder
:
// Create PDF
ByteArrayOutputStream baos = new ByteArrayOutputStream();
HtmlConverter.convertToPdf(HTML, baos);
// Generate Base64 encoded version of PDF
byte[] base64encoded = Base64.getEncoder().encode(baos.toByteArray());
// Write Base64 data to file
FileOutputStream fos = new FileOutputStream("pdf-base64.txt");
fos.write(base64encoded);
fos.close();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.