private void write(PdfStream pdfStream) { try { boolean userDefinedCompression = pdfStream.getCompressionLevel() != CompressionConstants.UNDEFINED_COMPRESSION; if (!userDefinedCompression) { int defaultCompressionLevel = document != null ? pdfStream.setCompressionLevel(defaultCompressionLevel); boolean toCompress = pdfStream.getCompressionLevel() != CompressionConstants.NO_COMPRESSION; boolean allowCompression = !pdfStream.containsKey(PdfName.Filter) && isNotMetadataPdfStream(pdfStream); fout = def = new DeflaterOutputStream(fout, pdfStream.getCompressionLevel(), 0x8000); updateCompressionFilter(pdfStream); byteArrayStream = new ByteArrayOutputStream(); DeflaterOutputStream zip = new DeflaterOutputStream(byteArrayStream, pdfStream.getCompressionLevel()); if (pdfStream instanceof PdfObjectStream) { PdfObjectStream objectStream = (PdfObjectStream) pdfStream;