繁体   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