如何使用iTextPDF生成内存PDF字节而非创建实际文件
生成内存中的PDF字节数组(不创建实际文件)
直接用ByteArrayOutputStream替代FileOutputStream即可,iText的HtmlConverter.convertToPdf方法支持接收任意OutputStream实现,包括内存流。
修改后的完整代码如下:
import com.itextpdf.html2pdf.HtmlConverter; import java.io.ByteArrayOutputStream; import java.io.IOException; 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 IOException { // 使用内存输出流替代文件输出流 ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); HtmlConverter.convertToPdf(HTML, outputStream); // 将内存流转换为字节数组 byte[] pdfBytes = outputStream.toByteArray(); System.out.println("PDF字节数组已生成,长度:" + pdfBytes.length); // 后续可以用pdfBytes做任何操作:比如返回给HTTP响应、存入数据库等 } }
关键说明:
ByteArrayOutputStream会把PDF内容写入内存缓冲区,不会在文件系统创建任何实际文件- 调用
outputStream.toByteArray()就能得到完整的PDF字节数组 - 生成的字节数组可直接用于各类场景,无需落地到磁盘
内容的提问来源于stack exchange,提问作者Vish
相关产品推荐
相关产品推荐

