/** * Constructs a <CODE>PdfIndirectObject</CODE>. * * @param number the object number * @param generation the generation number * @param object the direct object */ internal PdfIndirectObject(int number, int generation, PdfObject obj, PdfWriter writer) { this.writer = writer; this.number = number; this.generation = generation; type = obj.Type; isStream = (obj.Type == PdfObject.STREAM); PdfEncryption crypto = writer.Encryption; if (crypto != null) { crypto.setHashKey(number, generation); } try { bytes = new MemoryStream(); byte[] tmp = DocWriter.getISOBytes(number.ToString()); bytes.Write(tmp, 0, tmp.Length); bytes.WriteByte((byte)32); tmp = DocWriter.getISOBytes(generation.ToString()); bytes.Write(tmp, 0, tmp.Length); if (!isStream) { bytes.Write(STARTOBJ, 0, STARTOBJ.Length); tmp = obj.toPdf(writer); bytes.Write(tmp, 0, tmp.Length); bytes.Write(ENDOBJ, 0, ENDOBJ.Length); } else { stream = (PdfStream)obj; } } catch (IOException ioe) { throw ioe; } }