You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF FlowDocument打印第一段未在A4页面居中,仅半宽居中问题求助

问题分析与解决方案

你遇到的问题核心在于Section容器没有占满FlowDocument的整个页面宽度,导致你设置了TextAlignment.Center的Paragraph只是在Section的窄范围内居中,而非整个A4页面的宽度。

为什么会这样?

WPF中,Section默认的HorizontalAlignment是Left,宽度由内部内容自动决定,而不是撑满FlowDocument的页面宽度。所以你的第一段文字看起来像是在“页面一半宽度的中间”——其实它是相对于Section的宽度居中,而Section本身只占据了内容所需的宽度,没有延伸到页面两侧。

解决方案(两种可选)

方案1:移除多余的Section嵌套

如果你的打印内容不需要Section的分组功能,直接将Paragraph添加到FlowDocument的Blocks中即可,这样Paragraph会自动匹配FlowDocument的有效页面宽度(PageWidth减去左右PagePadding):

PrintDialog printDlg = new PrintDialog();
FlowDocument doc = new FlowDocument();
doc.PagePadding = new Thickness(10);
doc.PageWidth = 794; // 修正为更准确的A4宽度(210mm = 794px @96DPI)

// 直接添加第一段到doc.Blocks
Paragraph p = new Paragraph(new Run(Setup.GUI_texts_collection[193] + " " + vInvoice.Id.ToString()));
p.Margin = new Thickness(10);
p.FontSize = 30;
p.FontFamily = new FontFamily("Arial");
p.FontWeight = FontWeights.Bold;
p.TextAlignment = TextAlignment.Center;
doc.Blocks.Add(p);

// 后续段落同样直接添加到doc.Blocks
p = new Paragraph(new Run(this.Type_lbl.Content + ": " + this.TypeComboBox.Text));
p.Margin = new Thickness(5);
p.FontSize = 20;
p.FontFamily = new FontFamily("Arial");
p.FontWeight = FontWeights.Bold;
doc.Blocks.Add(p);

// ... 其余段落代码保持不变,都替换为doc.Blocks.Add(p)

IDocumentPaginatorSource idpSource = doc;
if (printDlg.ShowDialog() == true)
{
    printDlg.PrintDocument(idpSource.DocumentPaginator, "Invoice " + vInvoice.Id.ToString());
}

方案2:让Section撑满页面宽度

如果你需要保留Section(比如后续要添加更多分组内容),只需给Section设置HorizontalAlignment.Stretch,让它占满FlowDocument的可用宽度:

// 创建Section后立即添加这行代码
Section sec = new Section();
sec.HorizontalAlignment = HorizontalAlignment.Stretch; // 关键:让Section撑满页面宽度

// 后续段落添加到sec.Blocks的代码保持不变
p = new Paragraph(new Run(Setup.GUI_texts_collection[193] + " " + vInvoice.Id.ToString()));
// ... 段落属性设置
sec.Blocks.Add(p);

// ... 其余段落代码不变

额外优化点

你代码中创建了FlowDocumentPageViewer docpv但没有使用它,这部分可以直接移除,不会影响打印功能。

内容的提问来源于stack exchange,提问作者Emilius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 11:38:12