gpt4 book ai didi

c# - WPF:打印的 FlowDocument 上的字体不会更改

转载 作者:太空狗 更新时间:2023-10-29 17:57:58 24 4
gpt4 key购买 nike

我正在尝试打印富文本框的内容。我通过以下方式做到这一点:

  1. FlowDocument 中获取一个 TextRange
  2. 使用 TextRange 创建一个较小字体的新 FlowDocument
  3. 将这个新的 FlowDocument 发送到打印机。

我的问题是字体似乎没有改变。我希望它减小到 8 号。相反,它保持固定尺寸。这是我的代码:

private void button_Print_Click(object sender, RoutedEventArgs e)
{
IDocumentPaginatorSource ps = null;
FlowDocument fd = new FlowDocument();
PrintDialog pd = new PrintDialog();
Paragraph pg = new Paragraph();
Style style = new Style(typeof(Paragraph));
Run r = null;
string text = string.Empty;

// get the text
text = new TextRange(
this.richTextBox_Info.Document.ContentStart,
this.richTextBox_Info.Document.ContentEnd).Text;

// configure the style of the flow document
style.Setters.Add(new Setter(Block.MarginProperty, new Thickness(0)));
fd.Resources.Add(typeof(Paragraph), style);

// style the paragraph
pg.LineHeight = 0;
pg.LineStackingStrategy = LineStackingStrategy.BlockLineHeight;
pg.FontFamily = new FontFamily("Courier New");
pg.TextAlignment = TextAlignment.Left;
pg.FontSize = 8;

// create the paragraph
r = new Run(text);
r.FontFamily = new FontFamily("Courier New");
r.FontSize = 8;
pg.Inlines.Add(r);

// add the paragraph to the document
fd.Blocks.Add(pg);
ps = fd;

// format the page
fd.PagePadding = new Thickness(50);
fd.ColumnGap = 0;
fd.ColumnWidth = pd.PrintableAreaWidth;

// print the document
if (pd.ShowDialog().Value == true)
{
pd.PrintDocument(ps.DocumentPaginator, "Information Box");
}
}

我想补充一点,当流文档位于富文本框内时,更改字体对流文档来说效果很好。但是,当我以编程方式执行此操作时(如上所示),我遇到了问题。

最佳答案

我尝试了你的代码,发现当我删除这一行然后将 r.FontSize 更改为 50 时,它似乎工作正常。

pg.LineHeight = 0;

关于c# - WPF:打印的 FlowDocument 上的字体不会更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38745924/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com