RenderToScale

Document.RenderToScale method

Rende una pagina del documento in unGraphics oggetto a una scala specificata.

public SizeF RenderToScale(int pageIndex, Graphics graphics, float x, float y, float scale)
ParametroTipoDescrizione
pageIndexInt32Indice di pagina basato su 0.
graphicsGraphicsL’oggetto su cui effettuare il rendering.
xSingleCoordinata X (in unità mondiali) dell’angolo in alto a sinistra della pagina visualizzata.
ySingleCoordinata Y (in unità mondiali) dell’angolo in alto a sinistra della pagina visualizzata.
scaleSingleScala per il rendering della pagina (1.0 è 100%).

Valore di ritorno

Larghezza e altezza (in unità mondiali) della pagina renderizzata.

Esempi

Mostra come trasformare le singole pagine di un documento in grafici per creare un’immagine con le miniature di tutte le pagine.

Document doc = new Document(MyDir + "Rendering.docx");

// Calcola il numero di righe e colonne che riempiremo con le miniature.
const int thumbColumns = 2;
int thumbRows = doc.PageCount / thumbColumns;
int remainder = doc.PageCount % thumbColumns;

if (remainder > 0)
    thumbRows++;

// Adatta le miniature alle dimensioni della prima pagina.
const float scale = 0.25f;
Size thumbSize = doc.GetPageInfo(0).GetSizeInPixels(scale, 96);

// Calcola la dimensione dell'immagine che conterrà tutte le miniature.
int imgWidth = thumbSize.Width * thumbColumns;
int imgHeight = thumbSize.Height * thumbRows;

using (Bitmap img = new Bitmap(imgWidth, imgHeight))
{
    using (Graphics gr = Graphics.FromImage(img))
    {
        gr.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;

        // Riempi lo sfondo, che per impostazione predefinita è trasparente, di bianco.
        gr.FillRectangle(new SolidBrush(Color.White), 0, 0, imgWidth, imgHeight);

        for (int pageIndex = 0; pageIndex < doc.PageCount; pageIndex++)
        {
            int rowIdx = pageIndex / thumbColumns;
            int columnIdx = pageIndex % thumbColumns;

            // Specifica dove vogliamo che appaia la miniatura.
            float thumbLeft = columnIdx * thumbSize.Width;
            float thumbTop = rowIdx * thumbSize.Height;

            // Rendi una pagina come miniatura, quindi incorniciala in un rettangolo delle stesse dimensioni.
            SizeF size = doc.RenderToScale(pageIndex, gr, thumbLeft, thumbTop, scale);
            gr.DrawRectangle(Pens.Black, thumbLeft, thumbTop, size.Width, size.Height);
        }

        img.Save(ArtifactsDir + "Rendering.Thumbnails.png");
    }
}

Esegue il rendering delle singole pagine in grafica per creare un’immagine con le miniature di tutte le pagine (.NetStandard 2.0).

Document doc = new Document(MyDir + "Rendering.docx");

// Calcola il numero di righe e colonne che riempiremo con le miniature.
const int thumbnailColumnsNum = 2;
int thumbRows = doc.PageCount / thumbnailColumnsNum;
int remainder = doc.PageCount % thumbnailColumnsNum;

if (remainder > 0)
    thumbRows++;

 // Adatta le miniature alle dimensioni della prima pagina.
const float scale = 0.25f;
Size thumbSize = doc.GetPageInfo(0).GetSizeInPixels(scale, 96);

// Calcola la dimensione dell'immagine che conterrà tutte le miniature.
int imgWidth = thumbSize.Width * thumbnailColumnsNum;
int imgHeight = thumbSize.Height * thumbRows;

using (SKBitmap bitmap = new SKBitmap(imgWidth, imgHeight))
{
    using (SKCanvas canvas = new SKCanvas(bitmap))
    {
        // Riempi lo sfondo, che per impostazione predefinita è trasparente, di bianco.
        canvas.Clear(SKColors.White);

        for (int pageIndex = 0; pageIndex < doc.PageCount; pageIndex++)
        {
            int rowIdx = pageIndex / thumbnailColumnsNum;
            int columnIdx = pageIndex % thumbnailColumnsNum;

            // Specifica dove vogliamo che appaia la miniatura.
            float thumbLeft = columnIdx * thumbSize.Width;
            float thumbTop = rowIdx * thumbSize.Height;

            SizeF size = doc.RenderToScale(pageIndex, canvas, thumbLeft, thumbTop, scale);

            // Rendi una pagina come miniatura, quindi incorniciala in un rettangolo delle stesse dimensioni.
            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);
        }
    }
}

Guarda anche