簡體   English   中英

如何以字符串 Base64 格式存儲 PDF 內容

[英]How to Store PDF Content In String Base64 format

我想在將 PDF 發送到FileOutputStream之前以 Base64 格式存儲它。 我嘗試了下面的代碼。 我嘗試使用帶有匿名內部類的OutputStreamwrite方法,但內容為空。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM