internal ByteStore(PrStream str) { var bb = new ByteBuffer(); var level = 100; serObject(str, level, bb); _b = bb.ToByteArray(); }
/// <summary> /// Gets the content stream of a page as a PdfStream object. /// @since 2.1.3 (the method already existed without param compressionLevel) /// </summary> /// <param name="pageNumber">the page of which you want the stream</param> /// <param name="compressionLevel">the compression level you want to apply to the stream</param> /// <returns>a PdfStream object</returns> internal PdfStream GetFormXObject(int pageNumber, int compressionLevel) { var page = reader.GetPageNRelease(pageNumber); var contents = PdfReader.GetPdfObjectRelease(page.Get(PdfName.Contents)); var dic = new PdfDictionary(); byte[] bout = null; if (contents != null) { if (contents.IsStream()) { dic.Merge((PrStream)contents); } else { bout = reader.GetPageContent(pageNumber, File); } } else { bout = new byte[0]; } dic.Put(PdfName.Resources, PdfReader.GetPdfObjectRelease(page.Get(PdfName.Resources))); dic.Put(PdfName.TYPE, PdfName.Xobject); dic.Put(PdfName.Subtype, PdfName.Form); var impPage = (PdfImportedPage)ImportedPages[pageNumber]; dic.Put(PdfName.Bbox, new PdfRectangle(impPage.BoundingBox)); var matrix = impPage.Matrix; if (matrix == null) { dic.Put(PdfName.Matrix, Identitymatrix); } else { dic.Put(PdfName.Matrix, matrix); } dic.Put(PdfName.Formtype, One); PrStream stream; if (bout == null) { stream = new PrStream((PrStream)contents, dic); } else { stream = new PrStream(reader, bout); stream.Merge(dic); } return(stream); }
/// <summary> /// Translate a PRStream to a PdfStream. The data part copies itself. /// </summary> protected PdfStream CopyStream(PrStream inp) { var outp = new PrStream(inp, null); foreach (PdfName key in inp.Keys) { var value = inp.Get(key); outp.Put(key, CopyObject(value)); } return(outp); }
public PrStream(PrStream stream, PdfDictionary newDic) { reader = stream.reader; offset = stream.offset; length = stream.Length; Compressed = stream.Compressed; CompressionLevel = stream.CompressionLevel; StreamBytes = stream.StreamBytes; Bytes = stream.Bytes; objNum = stream.objNum; objGen = stream.objGen; if (newDic != null) { Merge(newDic); } else { Merge(stream); } }
public PrStream(PrStream stream, PdfDictionary newDic, PdfReader reader) : this(stream, newDic) { this.reader = reader; }