internal PdfStream GetFormXObject(int pageNumber, int compressionLevel)
{
PdfDictionary page = reader.GetPageNRelease(pageNumber);
PdfObject contents = PdfReader.GetPdfObjectRelease(page.Get(PdfName.CONTENTS));
PdfDictionary 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);
PdfImportedPage impPage = importedPages[pageNumber];
dic.Put(PdfName.BBOX, new PdfRectangle(impPage.BoundingBox));
PdfArray 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;
}