微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WPF FlowDocument按A4的一半打印对齐内容

如何解决WPF FlowDocument按A4的一半打印对齐内容

我有一个带有代码的打印按钮:

            PrintDialog printDlg = new PrintDialog();

            FlowDocumentPageViewer docpv = new FlowDocumentPageViewer();

            FlowDocument doc = new FlowDocument();
            doc.PagePadding = new Thickness(10);                
            doc.PageWidth = 793;// a4 width in px
           
         
            Section sec = new Section();
            



            Paragraph p = new 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;               
            sec.Blocks.Add(p);

            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;
            sec.Blocks.Add(p);

            p = new Paragraph(new Run(this.Code_lbl.Content + ":  " + vInvoice.Code));
            p.Margin = new Thickness(5);
            p.FontSize = 20;
            p.FontFamily = new FontFamily("Arial");
            p.FontWeight = FontWeights.Bold;
            sec.Blocks.Add(p);

            p = new Paragraph(new Run(this.Date_lbl.Content + ":  " + this.DateTextBox.Text));
            p.Margin = new Thickness(5);
            p.FontSize = 20;
            p.FontFamily = new FontFamily("Arial");
            p.FontWeight = FontWeights.Bold;
            sec.Blocks.Add(p);

            p = new Paragraph(new Run(this.Sender_lbl.Content + ":  " + this.SenderComboBox.Text));
            p.Margin = new Thickness(5);
            p.FontSize = 20;
            p.FontFamily = new FontFamily("Arial");
            p.FontWeight = FontWeights.Bold;
            sec.Blocks.Add(p);

            p = new Paragraph(new Run(this.Receiver_lbl.Content + ":  " + this.ReceiverComboBox.Text));
            p.Margin = new Thickness(5);
            p.FontSize = 20;
            p.FontFamily = new FontFamily("Arial");
            p.FontWeight = FontWeights.Bold;
            sec.Blocks.Add(p);

            p = new Paragraph(new Run(this.From_stock_lbl.Content + ":  " + this.From_stockComboBox.Text));
            p.Margin = new Thickness(5);
            p.FontSize = 20;
            p.FontFamily = new FontFamily("Arial");
            p.FontWeight = FontWeights.Bold;
            sec.Blocks.Add(p);

            p = new Paragraph(new Run(this.To_stock_lbl.Content + ":  " + this.To_stockComboBox.Text));
            p.Margin = new Thickness(5);
            p.FontSize = 20;
            p.FontFamily = new FontFamily("Arial");
            p.FontWeight = FontWeights.Bold;
            sec.Blocks.Add(p);

            p = new Paragraph(new Run(this.Cash_lbl.Content + ":  " + this.Paid_by_cashTextBox.Text));
            p.Margin = new Thickness(5);
            p.FontSize = 20;
            p.FontFamily = new FontFamily("Arial");
            p.FontWeight = FontWeights.Bold;
            sec.Blocks.Add(p);

            p = new Paragraph(new Run(this.Bank_lbl.Content + ":  " + this.Paid_by_bankTextBox.Text));
            p.Margin = new Thickness(5);
            p.FontSize = 20;
            p.FontFamily = new FontFamily("Arial");
            p.FontWeight = FontWeights.Bold;
            sec.Blocks.Add(p);

            p = new Paragraph(new Run(this.Debt_lbl.Content + ":  " + this.DebtTextBox.Text));
            p.Margin = new Thickness(5);
            p.FontSize = 20;
            p.FontFamily = new FontFamily("Arial");
            p.FontWeight = FontWeights.Bold;
            sec.Blocks.Add(p);

            p = new Paragraph(new Run(this.Total_amount_lbl.Content + ":  " + this.Total_amountTextBox.Text));
            p.Margin = new Thickness(5);
            p.FontSize = 20;
            p.FontFamily = new FontFamily("Arial");
            p.FontWeight = FontWeights.Bold;
            sec.Blocks.Add(p);

            
            //// Create first Paragraph  
            doc.Blocks.Add(sec);




            doc.Name = "FlowDoc";
            IDocumentPaginatorSource idpSource = doc;


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

但是结果是我得到了文档Printed result

所以,为什么p.TextAlignment = TextAlignment.Center;不要将第一段移到文档的中心。它看起来像放在文档一半的中央。 我做错了什么? 预先感谢您的帮助

解决方法

页面似乎被设置为两列。您的标题将居于两列的第一列。

我能够通过添加该行来对其进行修复

            doc.ColumnWidth = doc.PageWidth;

之后

            doc.PageWidth = 793;// a4 width in px

ColumnWidth属性的documentation指出默认值为NaN,这将导致仅显示一列,但似乎是一个NaN值不起作用,我不确定为什么。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?