Example #1
0
            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;
 }