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"x3" 的矩形。
        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");
    }
}

也可以看看