internal IndirectObject StreamObject(BaseStream stream) { StreamObject obj = new StreamObject(stream); IndirectObject reference = IndirectObject(obj); obj.Length = IndirectObject(new IntegerNumberObject()); return(reference); }
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); }