public override void ToPdf(PdfWriter writer, Stream os) { byte[] b = PdfReader.GetStreamBytesRaw(this); PdfEncryption crypto = null; if (writer != null) { crypto = writer.Encryption; } PdfObject objLen = Get(PdfName.LENGTH); int nn = b.Length; if (crypto != null) { nn = crypto.CalculateStreamSize(nn); } Put(PdfName.LENGTH, new PdfNumber(nn)); SuperToPdf(writer, os); Put(PdfName.LENGTH, objLen); os.Write(STARTSTREAM, 0, STARTSTREAM.Length); if (length > 0) { if (crypto != null && !crypto.IsEmbeddedFilesOnly()) { b = crypto.EncryptByteArray(b); } os.Write(b, 0, b.Length); } os.Write(ENDSTREAM, 0, ENDSTREAM.Length); }
/** * @see com.lowagie.text.pdf.PdfDictionary#toPdf(com.lowagie.text.pdf.PdfWriter, java.io.OutputStream) */ public override void ToPdf(PdfWriter writer, Stream os) { if (inputStream != null && compressed) { Put(PdfName.FILTER, PdfName.FLATEDECODE); } PdfEncryption crypto = null; if (writer != null) { crypto = writer.Encryption; } if (crypto != null) { PdfObject filter = Get(PdfName.FILTER); if (filter != null) { if (PdfName.CRYPT.Equals(filter)) { crypto = null; } else if (filter.IsArray()) { PdfArray a = (PdfArray)filter; if (!a.IsEmpty() && PdfName.CRYPT.Equals(a[0])) { crypto = null; } } } } if (crypto != null && crypto.IsEmbeddedFilesOnly()) { PdfArray filter = new PdfArray(); PdfArray decodeparms = new PdfArray(); PdfDictionary crypt = new PdfDictionary(); crypt.Put(PdfName.NAME, PdfName.STDCF); filter.Add(PdfName.CRYPT); decodeparms.Add(crypt); if (compressed) { filter.Add(PdfName.FLATEDECODE); decodeparms.Add(new PdfNull()); } Put(PdfName.FILTER, filter); Put(PdfName.DECODEPARMS, decodeparms); } PdfObject nn = Get(PdfName.LENGTH); if (crypto != null && nn != null && nn.IsNumber()) { int sz = ((PdfNumber)nn).IntValue; Put(PdfName.LENGTH, new PdfNumber(crypto.CalculateStreamSize(sz))); SuperToPdf(writer, os); Put(PdfName.LENGTH, nn); } else { SuperToPdf(writer, os); } os.Write(STARTSTREAM, 0, STARTSTREAM.Length); if (inputStream != null) { rawLength = 0; ZDeflaterOutputStream def = null; OutputStreamCounter osc = new OutputStreamCounter(os); OutputStreamEncryption ose = null; Stream fout = osc; if (crypto != null) { fout = ose = crypto.GetEncryptionStream(fout); } if (compressed) { fout = def = new ZDeflaterOutputStream(fout, compressionLevel); } byte[] buf = new byte[4192]; while (true) { int n = inputStream.Read(buf, 0, buf.Length); if (n <= 0) { break; } fout.Write(buf, 0, n); rawLength += n; } if (def != null) { def.Finish(); } if (ose != null) { ose.Finish(); } inputStreamLength = (int)osc.Counter; } else { if (crypto == null) { if (streamBytes != null) { streamBytes.WriteTo(os); } else { os.Write(bytes, 0, bytes.Length); } } else { byte[] b; if (streamBytes != null) { b = crypto.EncryptByteArray(streamBytes.ToArray()); } else { b = crypto.EncryptByteArray(bytes); } os.Write(b, 0, b.Length); } } os.Write(ENDSTREAM, 0, ENDSTREAM.Length); }
public override void ToPdf(PdfWriter writer, Stream os) { if (inputStream != null && compressed) { Put(PdfName.FILTER, PdfName.FLATEDECODE); } PdfEncryption crypto = null; if (writer != null) { crypto = writer.Encryption; } if (crypto != null) { PdfObject filter = Get(PdfName.FILTER); if (filter != null) { if (PdfName.CRYPT.Equals(filter)) { crypto = null; } else if (filter.IsArray()) { PdfArray a = ((PdfArray)filter); if (a.Size > 0 && PdfName.CRYPT.Equals(a[0])) { crypto = null; } } } } PdfObject nn = Get(PdfName.LENGTH); if (crypto != null && nn != null && nn.IsNumber()) { int sz = ((PdfNumber)nn).IntValue; Put(PdfName.LENGTH, new PdfNumber(crypto.CalculateStreamSize(sz))); SuperToPdf(writer, os); Put(PdfName.LENGTH, nn); } else { SuperToPdf(writer, os); } PdfWriter.CheckPdfIsoConformance(writer, PdfIsoKeys.PDFISOKEY_STREAM, this); os.Write(STARTSTREAM, 0, STARTSTREAM.Length); if (inputStream != null) { rawLength = 0; ZDeflaterOutputStream def = null; OutputStreamCounter osc = new OutputStreamCounter(os); OutputStreamEncryption ose = null; Stream fout = osc; if (crypto != null && !crypto.IsEmbeddedFilesOnly()) { fout = ose = crypto.GetEncryptionStream(fout); } if (compressed) { fout = def = new ZDeflaterOutputStream(fout, compressionLevel); } byte[] buf = new byte[4192]; while (true) { int n = inputStream.Read(buf, 0, buf.Length); if (n <= 0) { break; } fout.Write(buf, 0, n); rawLength += n; } if (def != null) { def.Finish(); } if (ose != null) { ose.Finish(); } inputStreamLength = (int)osc.Counter; } else { if (crypto != null && !crypto.IsEmbeddedFilesOnly()) { byte[] b; if (streamBytes != null) { b = crypto.EncryptByteArray(streamBytes.ToArray()); } else { b = crypto.EncryptByteArray(bytes); } os.Write(b, 0, b.Length); } else { if (streamBytes != null) { streamBytes.WriteTo(os); } else { os.Write(bytes, 0, bytes.Length); } } } os.Write(ENDSTREAM, 0, ENDSTREAM.Length); }
public override void ToPdf(PdfWriter writer, Stream os) { if (InputStream != null && Compressed) { Put(PdfName.Filter, PdfName.Flatedecode); } PdfEncryption crypto = null; if (writer != null) { crypto = writer.Encryption; } if (crypto != null) { PdfObject filter = Get(PdfName.Filter); if (filter != null) { if (PdfName.Crypt.Equals(filter)) { crypto = null; } else if (filter.IsArray()) { PdfArray a = ((PdfArray)filter); if (a.Size > 0 && PdfName.Crypt.Equals(a[0])) { crypto = null; } } } } PdfObject nn = Get(PdfName.LENGTH); if (crypto != null && nn != null && nn.IsNumber()) { int sz = ((PdfNumber)nn).IntValue; Put(PdfName.LENGTH, new PdfNumber(crypto.CalculateStreamSize(sz))); SuperToPdf(writer, os); Put(PdfName.LENGTH, nn); } else { SuperToPdf(writer, os); } os.Write(Startstream, 0, Startstream.Length); if (InputStream != null) { rawLength = 0; ZDeflaterOutputStream def = null; OutputStreamCounter osc = new OutputStreamCounter(os); OutputStreamEncryption ose = null; Stream fout = osc; if (crypto != null && !crypto.IsEmbeddedFilesOnly()) { fout = ose = crypto.GetEncryptionStream(fout); } if (Compressed) { fout = def = new ZDeflaterOutputStream(fout, CompressionLevel); } byte[] buf = new byte[4192]; while (true) { int n = InputStream.Read(buf, 0, buf.Length); if (n <= 0) { break; } fout.Write(buf, 0, n); rawLength += n; } if (def != null) { def.Finish(); } if (ose != null) { ose.Finish(); } InputStreamLength = osc.Counter; } else { if (crypto != null && !crypto.IsEmbeddedFilesOnly()) { byte[] b; if (StreamBytes != null) { b = crypto.EncryptByteArray(StreamBytes.ToArray()); } else { b = crypto.EncryptByteArray(Bytes); } os.Write(b, 0, b.Length); } else { if (StreamBytes != null) { StreamBytes.WriteTo(os); } else { os.Write(Bytes, 0, Bytes.Length); } } } os.Write(Endstream, 0, Endstream.Length); }