gpt4 book ai didi

java - 生成内含 PDF 的 ZIP

转载 作者:行者123 更新时间:2023-12-01 17:56:22 26 4
gpt4 key购买 nike

我需要返回 HttpServletResponse 来使用 iText 下载包含 PDF 的 ZIP 文件。这是我的代码:

           String fileName = "Acreditaciones.zip";

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ZipOutputStream zos = new ZipOutputStream(baos);

for(int i = 0; i < numAcre; i++){
zos.putNextEntry(new ZipEntry("Acreditaciones" + String.valueOf(i+1) + ".pdf"));

Document document = new Document();
PdfWriter.getInstance(document, baos);

//Abrimos el documento para insertarle contenido
document.open();

//TODO: Coger la URL de los parametros de la BD y cifrar el id del perceptor o la columna que lo identifique
//Creamos imagen con codigo QR
BarcodeQRCode barcodeQRCode2 = new BarcodeQRCode(URL + UtilsSeguridad.cifrar("80004244D"), 1000, 1000, null);
Image codeQrImage2 = barcodeQRCode2.getImage();
codeQrImage2.setAlignment(Image.RIGHT);
codeQrImage2.scaleAbsolute(70, 70);
document.add(codeQrImage2);

document.close();
zos.closeEntry();
}

zos.finish();
zos.close();

response.setHeader("Content-Disposition", "attachment; filename=\""+ fileName + "\";");
// Indicamos que es un PDF
response.setContentType("application/zip");
// El tamaño del contenido es igual al del ByteArrayOutputStream
response.setContentLength(baos.size());
// Inyectamos el ByteArrayOutputStream al ServletOutputStream
ServletOutputStream os = response.getOutputStream();
baos.writeTo(os);
os.flush();
os.close();
FacesContext.getCurrentInstance().responseComplete();

当我下载 ZIP 文件时,所有 PDF 都已损坏并且没有大小...我不知道我做错了什么,但似乎文档没有被实例化。

最佳答案

替换以下行:

PdfWriter.getInstance(document, baos);

用这两行:

PdfWriter writer = PdfWriter.getInstance(document, zos);
writer.setCloseStream(false);

不要忘记告诉 writer 实例不要关闭底层流,否则关闭 document 实例也会关闭 ZipOutputStream ,并且您将无法添加新条目。

关于java - 生成内含 PDF 的 ZIP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44494403/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com