예제 #1
0
        internal IndirectObject StreamObject(BaseStream stream)
        {
            StreamObject   obj       = new StreamObject(stream);
            IndirectObject reference = IndirectObject(obj);

            obj.Length = IndirectObject(new IntegerNumberObject());
            return(reference);
        }
예제 #2
0
        private bool WriteObject(StreamObject obj)
        {
            if (obj == null)
            {
                return(false);
            }


            var options = new DictionaryObject()
                          .Set("Length", obj.Length)

                          /*
                           * .Set("Filters", new ArrayObject()
                           *   .Add(new NameObject("ASCII85Decode"))
                           *   .Add(new NameObject("LZWDecode")))
                           */
            ;

            WriteObject(options);
            WriteLine().WriteLine("stream");

            /*
             * StringWriter w = new StringWriter();
             * PdfOutput inner = new PdfOutput(w);
             * inner.WriteStream(obj.Value);
             * string raw = w.ToString();
             *
             * // byte[] compressed = LZW.Encode(raw);
             * var lzwByteStream = LZW.ToByteStream(raw);
             *
             * w = new StringWriter();
             *
             * Ascii85.Encode(lzwByteStream, w);
             *
             * int start = _writer.Position;
             * _writer.Write(w);
             * _writer.WriteLine();
             * int length = _writer.Position - start;
             * // */

            // /*
            int start = _writer.Position;

            WriteStream(obj.Value);
            int length = _writer.Position - start;

            // */

            Write("endstream");

            obj.Length.Get <IntegerNumberObject>().Value = length;

            return(true);
        }