wpf 内容打印一个文本框
wpf content print a textbox
我正在使用 WPF 开发文本编辑器,并尝试使用以下代码来打印文本框的内容:
PrintDialog pd = new PrintDialog();
if ((pd.ShowDialog() == true))
{
RichTextBox richTB = new RichTextBox();
richTB.Document.Blocks.Add(new Paragraph(new Run(TBXEditor.Text)));
//use either one of the below
pd.PrintVisual(richTB as Visual, "printing as visual");
pd.PrintDocument((((IDocumentPaginatorSource)richTB.Document).DocumentPaginator), "printing as paginator");
}
效果不佳。如果我单击一次打印菜单,我得到两张打印件并且没有左边距。行首文字打印不完整
有没有人有更好的解决方案?
您得到了两次打印,因为您调用了两种打印方法(pd.PrintVisual
和 pd.PrintDocument
)。对于保证金,您需要为您的 FlowDocument
设置 Padding
。您可以参考下面的代码,它可以正常工作。
此外,您不需要创建 RichTextBox
并访问其中的 FlowDocument
。相反,您可以创建 FlowDocument
并使用它本身。
PrintDialog printDialog = new PrintDialog();
if (printDialog.ShowDialog() == true)
{
FlowDocument flowDocument = new FlowDocument();
flowDocument.PagePadding = new Thickness(50);
flowDocument.Blocks.Add(new Paragraph(new Run(TBXEditor.Text)));
printDialog.PrintDocument((((IDocumentPaginatorSource)flowDocument).DocumentPaginator), "Using Paginator");
}
我正在使用 WPF 开发文本编辑器,并尝试使用以下代码来打印文本框的内容:
PrintDialog pd = new PrintDialog();
if ((pd.ShowDialog() == true))
{
RichTextBox richTB = new RichTextBox();
richTB.Document.Blocks.Add(new Paragraph(new Run(TBXEditor.Text)));
//use either one of the below
pd.PrintVisual(richTB as Visual, "printing as visual");
pd.PrintDocument((((IDocumentPaginatorSource)richTB.Document).DocumentPaginator), "printing as paginator");
}
效果不佳。如果我单击一次打印菜单,我得到两张打印件并且没有左边距。行首文字打印不完整
有没有人有更好的解决方案?
您得到了两次打印,因为您调用了两种打印方法(pd.PrintVisual
和 pd.PrintDocument
)。对于保证金,您需要为您的 FlowDocument
设置 Padding
。您可以参考下面的代码,它可以正常工作。
此外,您不需要创建 RichTextBox
并访问其中的 FlowDocument
。相反,您可以创建 FlowDocument
并使用它本身。
PrintDialog printDialog = new PrintDialog();
if (printDialog.ShowDialog() == true)
{
FlowDocument flowDocument = new FlowDocument();
flowDocument.PagePadding = new Thickness(50);
flowDocument.Blocks.Add(new Paragraph(new Run(TBXEditor.Text)));
printDialog.PrintDocument((((IDocumentPaginatorSource)flowDocument).DocumentPaginator), "Using Paginator");
}