/// <summary>Prepares the PDF-object structure.</summary> private void PrepareObjIds() { if (bHideToolBar || bHideMenubar || bHideWindowUI || bFitWindow || bCenterWindow || bDisplayDocTitle || nonFullScreenPageMode != NonFullScreenPageMode.UseNone) { pdfIndirectObject_ViewerPreferences = new PdfIndirectObject_ViewerPreferences(this); } // iObjEncoding = iObjId++; // search all fonts and prepare the pages StringBuilder sb = new StringBuilder(50); foreach (Page page in report.enum_Page) { } // pages pdfIndirectObject_Pages = new PdfIndirectObject_Pages(this); foreach (Page page in report.enum_Page) { PdfIndirectObject_Page pdfIndirectObject_Page = (PdfIndirectObject_Page)page.oRepObjX; PrepareObjIdsForContainer(pdfIndirectObject_Page, page); pdfIndirectObject_Page.pdfIndirectObject_PageContents = new PdfIndirectObject_PageContents(this, page); } foreach (ImageData imageData in report.ht_ImageData.Values) { imageData.oImageResourceX = new PdfIndirectObject_ImageJpeg(this, imageData); } }
//------------------------------------------------------------------------------------------01.02.2006 /// <summary>Writes the object to the buffer.</summary> internal override void Write() { StartObj(); Dictionary_Start(); Dictionary_Key("Type"); Name("Pages"); Dictionary_Key("Count"); Number(report.iPageCount); Dictionary_Key("Kids"); ArrayStart(); foreach (Page page in report.enum_Page) { PdfIndirectObject_Page pdfIndirectObject_Page = (PdfIndirectObject_Page)page.oRepObjX; IndirectReference(pdfIndirectObject_Page); } ArrayEnd(); Dictionary_End(); EndObj(); }
//----------------------------------------------------------------------------------------------------x /// <summary>Prepares the PDF-object structure for a container.</summary> /// <param name="pdfPageData"></param> /// <param name="iObjId"></param> /// <param name="container"></param> private void PrepareObjIdsForContainer(PdfIndirectObject_Page pdfPageData, Container container) { foreach (RepObj repObj in container) { if (repObj is Container) { PrepareObjIdsForContainer(pdfPageData, (Container)repObj); } else if (repObj is RepArcBase) { pdfPageData.bProcSet_PDF = true; } else if (repObj is RepImage) { // RepImage repImage = (RepImage)repObj; // ImageFormat imageFormat = repImage.imageData.image.RawFormat; // if (Object.Equals(imageFormat, ImageFormat.Jpeg)) { // pdfPageData.bProcSet_ImageC = true; // } // else if (Object.Equals(imageFormat, ImageFormat.Tiff)) { // pdfPageData.bProcSet_ImageB = true; // } // else { // Debug.Fail("unknown image type: send image to [email protected]"); // } RepImage repImage = repObj as RepImage; repImage.imageData.stream.Position = 0; //Added By TechnoGuru - [email protected] - http://www.borie.org/ //To support tiff file //I reload Image from stream to be more scalable //(Dont't have like that lots of image object on memeory #if !WindowsCE using (Image image = Image.FromStream(repImage.imageData.stream)) { if (image.RawFormat.Equals(ImageFormat.Tiff) && image.PixelFormat.Equals(PixelFormat.Format1bppIndexed)) { pdfPageData.bProcSet_ImageI = true; // CHANGED } else if (image.RawFormat.Equals(ImageFormat.Tiff) || image.RawFormat.Equals(ImageFormat.Jpeg)) { pdfPageData.bProcSet_ImageC = true; } else { Debug.Fail("unknown image type: send image to [email protected]"); } } #endif } else if (repObj is RepLine) { pdfPageData.bProcSet_PDF = true; } else if (repObj is RepRect) { pdfPageData.bProcSet_PDF = true; } else if (repObj is RepString) { FontProp fontProp_String = ((RepString)repObj).fontProp; PdfFontPropData pdfFontPropData = (PdfFontPropData)fontProp_String.fontPropData; if (pdfFontPropData.pdfIndirectObject_Font == null) { pdfFontPropData.pdfIndirectObject_Font = new PdfIndirectObject_Font(this, fontProp_String); } pdfPageData.RegisterFontProp(fontProp_String); pdfPageData.bProcSet_Text = true; } else { throw new ReportException("unknown report object type [" + repObj.GetType().FullName + "]"); } } }