コード例 #1
0
        /**
         * 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;
            }
        }