DocumentRenderToScale Method |
Namespace: Aspose.Words
public SizeF RenderToScale( int pageIndex, Graphics graphics, float x, float y, float scale )
// The user opens or builds a document Document doc = new Document(MyDir + "Rendering.docx"); // This defines the number of columns to display the thumbnails in const int thumbColumns = 2; // Calculate the required number of rows for thumbnails // We can now get the number of pages in the document int thumbRows = Math.DivRem(doc.PageCount, thumbColumns, out int remainder); if (remainder > 0) thumbRows++; // Lets say I want thumbnails to be of this zoom const float scale = 0.25f; // For simplicity lets pretend all pages in the document are of the same size, // so we can use the size of the first page to calculate the size of the thumbnail Size thumbSize = doc.GetPageInfo(0).GetSizeInPixels(scale, 96); // Calculate the size of the image that will contain all the thumbnails int imgWidth = thumbSize.Width * thumbColumns; int imgHeight = thumbSize.Height * thumbRows; using (Bitmap img = new Bitmap(imgWidth, imgHeight)) { // The user has to provides a Graphics object to draw on // The Graphics object can be created from a bitmap, from a metafile, printer or window using (Graphics gr = Graphics.FromImage(img)) { gr.TextRenderingHint = TextRenderingHint.AntiAliasGridFit; // Fill the "paper" with white, otherwise it will be transparent gr.FillRectangle(new SolidBrush(Color.White), 0, 0, imgWidth, imgHeight); for (int pageIndex = 0; pageIndex < doc.PageCount; pageIndex++) { int rowIdx = Math.DivRem(pageIndex, thumbColumns, out int columnIdx); // Specify where we want the thumbnail to appear float thumbLeft = columnIdx * thumbSize.Width; float thumbTop = rowIdx * thumbSize.Height; SizeF size = doc.RenderToScale(pageIndex, gr, thumbLeft, thumbTop, scale); // Draw the page rectangle gr.DrawRectangle(Pens.Black, thumbLeft, thumbTop, size.Width, size.Height); } img.Save(ArtifactsDir + "Rendering.Thumbnails.png"); } }
// The user opens or builds a document Document doc = new Document(MyDir + "Rendering.docx"); // This defines the number of columns to display the thumbnails in const int thumbColumns = 2; // Calculate the required number of rows for thumbnails // We can now get the number of pages in the document int thumbRows = Math.DivRem(doc.PageCount, thumbColumns, out int remainder); if (remainder > 0) thumbRows++; // Lets say I want thumbnails to be of this zoom const float scale = 0.25f; // For simplicity lets pretend all pages in the document are of the same size, // so we can use the size of the first page to calculate the size of the thumbnail Size thumbSize = doc.GetPageInfo(0).GetSizeInPixels(scale, 96); // Calculate the size of the image that will contain all the thumbnails int imgWidth = thumbSize.Width * thumbColumns; int imgHeight = thumbSize.Height * thumbRows; using (SKBitmap bitmap = new SKBitmap(imgWidth, imgHeight)) { // The user has to provides a Graphics object to draw on // The Graphics object can be created from a bitmap, from a metafile, printer or window using (SKCanvas canvas = new SKCanvas(bitmap)) { // Fill the "paper" with white, otherwise it will be transparent canvas.Clear(SKColors.White); for (int pageIndex = 0; pageIndex < doc.PageCount; pageIndex++) { int rowIdx = Math.DivRem(pageIndex, thumbColumns, out int columnIdx); // Specify where we want the thumbnail to appear float thumbLeft = columnIdx * thumbSize.Width; float thumbTop = rowIdx * thumbSize.Height; SizeF size = doc.RenderToScale(pageIndex, canvas, thumbLeft, thumbTop, scale); // Draw the page rectangle SKRect rect = new SKRect(0, 0, size.Width, size.Height); rect.Offset(thumbLeft, thumbTop); canvas.DrawRect(rect, new SKPaint { Color = SKColors.Black, Style = SKPaintStyle.Stroke }); } using (SKFileWStream fs = new SKFileWStream(ArtifactsDir + "Rendering.CreateThumbnailsNetStandard2.png")) { bitmap.PeekPixels().Encode(fs, SKEncodedImageFormat.Png, 100); } } }