RenderToSize

Document.RenderToSize method

Преобразует страницу документа вGraphics объект указанного размера.

public float RenderToSize(int pageIndex, Graphics graphics, float x, float y, float width, 
    float height)
ПараметрТипОписание
pageIndexInt32Индекс страницы, отсчитываемый от 0.
graphicsGraphicsОбъект, в который выполняется рендеринг.
xSingleКоордината X (в мировых единицах измерения) верхнего левого угла отображаемой страницы.
ySingleКоордината Y (в мировых единицах измерения) верхнего левого угла отображаемой страницы.
widthSingleМаксимальная ширина (в мировых единицах), которую может занимать отображаемая страница.
heightSingleМаксимальная высота (в мировых единицах), которую может занимать отображаемая страница.

Возвращаемое значение

Масштаб, который автоматически рассчитывается для отображаемой страницы в соответствии с указанным размером.

Примеры

Показывает, как визуализировать документ в виде растрового изображения в указанном месте и размере (.NetStandard 2.0).

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

using (SKBitmap bitmap = new SKBitmap(700, 700))
{
    using (SKCanvas canvas = new SKCanvas(bitmap))
    {
        // Примените коэффициент масштабирования 70 % к странице, которую мы будем отображать с помощью этого холста.
        canvas.Scale(70);

        // Смещаем страницу на 0,5 дюйма от верхнего и левого краев страницы.
        canvas.Translate(0.5f, 0.5f);

        // Поворот отображаемой страницы на 10 градусов.
        canvas.RotateDegrees(10);

        // Создаем и рисуем прямоугольник.
        SKRect rect = new SKRect(0f, 0f, 3f, 3f);
        canvas.DrawRect(rect, new SKPaint
        {
            Color = SKColors.Black,
            Style = SKPaintStyle.Stroke,
            StrokeWidth = 3f / 72f
        });

        // Рендеринг первой страницы документа до того же размера, что и прямоугольник выше.
        // Прямоугольник будет обрамлять эту страницу.
        float returnedScale = doc.RenderToSize(0, canvas, 0f, 0f, 3f, 3f);

        Console.WriteLine("The image was rendered at {0:P0} zoom.", returnedScale);

        // Сбрасываем матрицу, а затем применяем новый набор масштабирования и преобразований.
        canvas.ResetMatrix();
        canvas.Scale(5);
        canvas.Translate(10, 10);

        // Создаем еще один прямоугольник.
        rect = new SKRect(0, 0, 50, 100);
        rect.Offset(90, 10);
        canvas.DrawRect(rect, new SKPaint
        {
            Color = SKColors.Black,
            Style = SKPaintStyle.Stroke,
            StrokeWidth = 1
        });

        // Снова визуализируем первую страницу внутри вновь созданного прямоугольника.
        doc.RenderToSize(0, canvas, 90, 10, 50, 100);

        using (SKFileWStream fs = new SKFileWStream(ArtifactsDir + "Rendering.RenderToSizeNetStandard2.png"))
        {
            bitmap.PeekPixels().Encode(fs, SKEncodedImageFormat.Png, 100);
        }
    }
}

Показывает, как преобразовать документ в растровое изображение в указанном месте и размере.

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

using (Bitmap bmp = new Bitmap(700, 700))
{
    using (Graphics gr = Graphics.FromImage(bmp))
    {
        gr.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;

        // Установите для свойства «PageUnit» значение «GraphicsUnit.Inch», чтобы использовать дюймы в качестве
        // единица измерения для любых преобразований и размеров, которые мы определим.
        gr.PageUnit = GraphicsUnit.Inch;

        // Смещаем вывод на 0,5 дюйма от края.
        gr.TranslateTransform(0.5f, 0.5f);

        // Поворот вывода на 10 градусов.
        gr.RotateTransform(10);

        // Рисуем прямоугольник размером 3х3 дюйма.
        gr.DrawRectangle(new Pen(Color.Black, 3f / 72f), 0f, 0f, 3f, 3f);

        // Нарисуйте первую страницу нашего документа с теми же размерами и преобразованием, что и прямоугольник.
        // Прямоугольник будет обрамлять первую страницу.
        float returnedScale = doc.RenderToSize(0, gr, 0f, 0f, 3f, 3f);

        // Это коэффициент масштабирования, который метод RenderToSize применил к первой странице, чтобы она соответствовала указанному размеру.
        Assert.AreEqual(0.2566f, returnedScale, 0.0001f);

        // Установите для свойства «PageUnit» значение «GraphicsUnit.Millimeter», чтобы использовать миллиметры в качестве
        // единица измерения для любых преобразований и размеров, которые мы определим.
        gr.PageUnit = GraphicsUnit.Millimeter;

        // Сбрасываем преобразования, которые мы использовали при предыдущем рендеринге.
        gr.ResetTransform();

        // Применяем другой набор преобразований.
        gr.TranslateTransform(10, 10);
        gr.ScaleTransform(0.5f, 0.5f);
        gr.PageScale = 2f;

        // Создаем еще один прямоугольник и используем его для рамки другой страницы документа.
        gr.DrawRectangle(new Pen(Color.Black, 1), 90, 10, 50, 100);
        doc.RenderToSize(1, gr, 90, 10, 50, 100);

        bmp.Save(ArtifactsDir + "Rendering.RenderToSize.png");
    }
}

Смотрите также