使用PrintDialog打印FlowDocument 异常 HRESULT:0x8052000C

使用PrintDialog打印FlowDocument 异常 HRESULT:0x8052000C

项目需要,使用FlowDocument 做打印模板
开发过程中突然遇到问题

⬇⬇⬇⬇就是下面这个鬼异常⬇⬇⬇⬇
莫名其妙的异常
mmp,用了几年的东西抛异常了!

开始面向百度、必应、谷歌编程
逛了一圈,几乎没人遇到过这麻烦
最后找到微软的文档
在这里插入图片描述鸡饭:正在读取的标记包含不符合XML Paper Specification的元素或属性。 注意为了表示浮点值,XPS OM使用FLOAT数据类型而不是DOUBLE。 如果XPS文档具有浮点数据不符合FLOAT值的元素,则在反序列化期间遇到该值时将返回此错误。

莫名其妙

开始穷举法,所有可能造成这个异常的地方全部改一遍
最后找到问题所在

!!!千万不要用中文命名FlowDocument中元素的Name属性

编程中慎用中文,血的教训,总有你想不到的问题出现

BUG与你同在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来举一个简单的打印实例。我们假设有一个 WinForm 应用程序,里面有一个按钮,点击按钮后会弹出打印对话框,用户选择打印机和打印选项后可以进行打印预览和打印操作。 首先,在按钮的 Click 事件中添加如下代码: ```csharp private void btnPrint_Click(object sender, EventArgs e) { // 创建一个 PrintDocument 对象 PrintDocument pd = new PrintDocument(); // 打印事件处理程序 pd.PrintPage += new PrintPageEventHandler(PrintPageEventHandler); // 创建一个 PrintDialog 对象 PrintDialog pdlg = new PrintDialog(); // 设置 PrintDialog 对象的属性 pdlg.Document = pd; pdlg.AllowSelection = true; pdlg.AllowSomePages = true; // 如果用户点击了“确定”按钮,进入打印预览 if (pdlg.ShowDialog() == DialogResult.OK) { // 创建一个 PrintPreviewDialog 对象 PrintPreviewDialog ppdlg = new PrintPreviewDialog(); // 设置 PrintPreviewDialog 对象的属性 ppdlg.Document = pd; // 如果用户点击了“打印”按钮,进入打印操作 if (ppdlg.ShowDialog() == DialogResult.OK) { pd.Print(); } } } ``` 上述代码中,我们创建了一个 PrintDocument 对象,并为其添加了打印事件处理程序。接着,创建了一个 PrintDialog 对象,并为其设置了一些属性,比如允许用户选择打印机和打印选项等。如果用户点击了“确定”按钮,就会进入打印预览。在打印预览中,我们创建了一个 PrintPreviewDialog 对象,并为其设置了打印文档。如果用户点击了“打印”按钮,就会进入打印操作,调用 PrintDocument 的 Print 方法即可。 最后,我们需要实现 PrintPageEventHandler 方法,该方法用于绘制打印页面的内容。下面是一个简单的实现: ```csharp private void PrintPageEventHandler(object sender, PrintPageEventArgs e) { // 绘制一些文本和图形 e.Graphics.DrawString("Hello, world!", new Font("Arial", 16), Brushes.Black, new PointF(100, 100)); e.Graphics.DrawRectangle(Pens.Black, new Rectangle(200, 200, 100, 100)); } ``` 上述代码中,我们使用 Graphics 对象绘制了一些文本和图形,这些内容将会被打印出来。 以上就是一个简单的打印实例,通过使用 C# 中的 printDialog,printPreviewDialogprintDocument,我们可以方便地实现打印功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值