wpf分页预览html文件,c# – 使用DocumentPaginator打印时如何打印预览?

我使用从DocumentPaginator派生的类(见下文)从

WPF应用程序打印简单(仅文本)报告.我有这样的一切打印正确,但是如何让它在打印之前进行打印预览?我有一种感觉,我需要使用一个DocumentViewer,但我不知道如何.

这是我的派生类:

public class RowPaginator : DocumentPaginator

{

private int rows;

private Size pageSize;

private int rowsPerPage;

public RowPaginator(int rows)

{

this.rows = rows;

}

public override DocumentPage GetPage(int pageNumber)

{

int currentRow = rowsPerPage * pageNumber;

int rowsToPrint = Math.Min(rowsPerPage, rows - (rowsPerPage * pageNumber - 1));

var page = new PageElementRenderer(pageNumber + 1, PageCount, currentRow, rowsToPrint)

{

Width = PageSize.Width,

Height = PageSize.Height

};

page.Measure(PageSize);

page.Arrange(new Rect(new Point(0, 0), PageSize));

return new DocumentPage(page);

}

public override bool IsPageCountValid { get { return true; } }

public override int PageCount { get { return (int)Math.Ceiling(this.rows / (double)this.rowsPerPage); } }

public override Size PageSize

{

get { return this.pageSize; }

set

{

this.pageSize = value;

this.rowsPerPage = PageElementRenderer.RowsPerPage(this.pageSize.Height);

if (rowsPerPage <= 0)

throw new InvalidOperationException("Page can't fit any rows!");

}

}

public override IDocumentPaginatorSource Source { get { return null; } }

}

PageElementRenderer只是一个简单的UserControl,它显示数据(目前只是一行列表).

以下是我使用行分页的方法

PrintDialog dialog = new PrintDialog();

if (dialog.ShowDialog() == true)

{

var paginator = new RowPaginator(rowsToPrint) { PageSize = new Size(dialog.PrintableAreaWidth, dialog.PrintableAreaHeight) };

dialog.PrintDocument(paginator, "Rows Document");

}

对不起,代码转储,但我不想错过任何相关的事情.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值