iTextを使用して、内部でPDFでZIPファイルをダウンロードするには、HttpServletResponseを返す必要があります。これは私のコードです:私は、ZIPファイルをダウンロードするとき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();
が、これはすべてのPDFファイルが破損して来て、大きさせずに...私は私が間違ってやっているのか分からないが、文書があるようですインスタンス化されていません。
あなたの郵便番号をどんなファイルでも試してみてください。あなたのコメントも間違っています。アプリケーション/ zipはそれがPDFであることを示していません:) –