从 WPF Web 浏览器静默打印 HTML

2023-12-09

我必须从 WPF 中的 WebBrowser 静默打印 HTML 文档。我已经通过该代码不默默地完成了它:

mshtml.IHTMLDocument2 doc = WebBrowser1.Document as mshtml.IHTMLDocument2;
doc.execCommand("Print", true, null);

现在我想跳过打印对话框。 请帮忙。


对于使用 WPF WebBrowser 进行静默打印,以下代码对我有用:

    private void PrintCurrentPage()
    {
        // document must be loaded for this to work
        IOleServiceProvider sp = WebBrowser1.Document as IOleServiceProvider;
        if (sp != null)
        {
            Guid IID_IWebBrowserApp = new Guid("0002DF05-0000-0000-C000-000000000046");
            Guid IID_IWebBrowser2 = new Guid("D30C1661-CDAF-11d0-8A3E-00C04FC9E26E");
            const int OLECMDID_PRINT = 6;
            const int OLECMDEXECOPT_DONTPROMPTUSER = 2;

            dynamic wb; // should be of IWebBrowser2 type
            sp.QueryService(IID_IWebBrowserApp, IID_IWebBrowser2, out wb);
            if (wb != null)
            {
                // this will send to the default printer
                wb.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, null, null);
            }
        }
    }
    [ComImport, Guid("6D5140C1-7436-11CE-8034-00AA006009FA"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    private interface IOleServiceProvider
    {
        [PreserveSig]
        int QueryService([MarshalAs(UnmanagedType.LPStruct)] Guid guidService, [MarshalAs(UnmanagedType.LPStruct)]  Guid riid, [MarshalAs(UnmanagedType.IDispatch)] out object ppvObject);
    }

注:答案的灵感来自这个 SO 问答

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 WPF Web 浏览器静默打印 HTML 的相关文章

  • 创建 DirectoryEntry 实例以供测试使用

    我正在尝试创建 DirectoryEntry 的实例 以便可以使用它来测试将传递 DirectoryEntry 的一些代码 然而 尽管进行了很多尝试 我还是找不到实例化 DE 并初始化它的 PropertyCollection 的方法 我有
  • 更改 WPF 应用程序清单?

    我已经发布给微软的评论 http connect microsoft com VisualStudio feedback ViewFeedback aspx FeedbackID 420920WPF 中的对话框未启用 VisualStyle
  • Func 方法参数的首选命名约定是什么?

    我承认这个问题是主观的 但我对社区的观点感兴趣 我有一个缓存类 它采用类型的缓存加载器函数Func
  • FFMPEG Seeking 带来音频伪影

    我正在使用 ffmpeg 实现音频解码器 在读取音频甚至搜索已经可以工作时 我无法找到一种在搜索后清除缓冲区的方法 因此当应用程序在搜索后立即开始读取音频时 我没有任何工件 avcodec flush buffers似乎对内部缓冲区没有任何
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • 如何针对 Nancy 中的 Active Directory 进行身份验证?

    这是一篇过时的文章 但是http msdn microsoft com en us library ff650308 aspx paght000026 step3 http msdn microsoft com en us library
  • c 中的错误:声明隐藏了全局范围内的变量

    当我尝试编译以下代码时 我收到此错误消息 错误 声明隐藏了全局范围内的变量 无效迭代器 节点 根 我不明白我到底在哪里隐藏或隐藏了之前声明的全局变量 我怎样才能解决这个问题 typedef node typedef struct node
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • c# Asp.NET MVC 使用FileStreamResult下载excel文件

    我需要构建一个方法 它将接收模型 从中构建excel 构建和接收部分完成没有问题 然后使用内存流导出 让用户下载它 不将其保存在服务器上 我是 ASP NET 和 MVC 的新手 所以我找到了指南并将其构建为教程项目 public File
  • HttpClient 像浏览器一样请求

    当我通过 HttpClient 类调用网站 www livescore com 时 我总是收到错误 500 可能服务器阻止了来自 HttpClient 的请求 1 还有其他方法可以从网页获取html吗 2 如何设置标题来获取html内容 当
  • 为什么模板不能位于外部“C”块内?

    这是一个后续问题一个答案 https stackoverflow com questions 4866433 is it possible to typedef a pointer to extern c function type wit
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • 我的 strlcpy 版本

    海湾合作委员会 4 4 4 c89 我的程序做了很多字符串处理 我不想使用 strncpy 因为它不会终止 我不能使用 strlcpy 因为它不可移植 只是几个问题 我怎样才能让我的函数正常运行 以确保它完全安全稳定 单元测试 这对于生产来
  • 将日期参数传递给对 MVC 操作的 ajax 调用的安全方法

    我有一个 MVC 操作 它的参数之一是DateTime如果我通过 17 07 2012 它会抛出一个异常 指出参数为空但不能有空值 但如果我通过01 07 2012它被解析为Jan 07 2012 我将日期传递给 ajax 调用DD MM
  • 如何构建印度尼西亚电话号码正则表达式

    这些是一些印度尼西亚的电话号码 08xxxxxxxxx 至少包含 11 个字符长度 08xxxxxxxxxxx 始终以 08 开头 我发现这个很有用 Regex regex new Regex 08 0 9 0 9 0 9 0 9 0 9
  • ListDictionary 类是否有通用替代方案?

    我正在查看一些示例代码 其中他们使用了ListDictionary对象来存储少量数据 大约 5 10 个对象左右 但这个数字可能会随着时间的推移而改变 我使用此类的唯一问题是 与我所做的其他所有事情不同 它不是通用的 这意味着 如果我在这里
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz
  • 将变量分配给另一个变量,并将一个变量的更改反映到另一个变量中

    是否可以将一个变量分配给另一个变量 并且当您更改第二个变量时 更改会瀑布式下降到第一个变量 像这样 int a 0 int b a b 1 现在 b 和 a 都 1 我问这个问题的原因是因为我有 4 个要跟踪的对象 并且我使用名为 curr
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反
  • 将 viewbag 从操作控制器传递到部分视图

    我有一个带有部分视图的 mvc 视图 控制器中有一个 ActionResult 方法 它将返回 PartialView 因此 我需要将 ViewBag 数据从 ActionResult 方法传递到 Partial View 这是我的控制器

随机推荐

  • 通过单击子图显示整个图像

    我裁剪了图像的某些部分 并将它们显示在带有子图的一张图中 次要情节的数量不确定 我从文件中读取图像然后裁剪它们 我的目标是 当我单击或双击子图时 我想在新图中看到整个图像 我想举一个例子来澄清我的问题 如果我单击第一个子图 我想在新图中看到
  • 使用 Xamarin Forms 在每个页面上显示不同的工具栏按钮

    我的 Xamarin Forms 应用程序中有 2 个页面 我的第一页工具栏中有 4 个图标 我的第二页是登录页面 工具栏中有一个勾号和一个叉号 除非将其设为导航页面 否则我无法让登录页面显示任何图标 我还必须在调用 PushAsync 之
  • 使用 Xcode 6 中的自动布局约束模拟宽高比匹配行为

    我想使用自动布局以让人想起 UIImageView 宽高比内容模式的方式调整视图的大小和布局 我在 Interface Builder 的容器视图内有一个子视图 子视图有一些我希望尊重的固有宽高比 容器视图的大小在运行时之前是未知的 如果容
  • 如何在sqlite中存储json数据

    我很难将数据以 JSON 格式存储到我的 Rails 应用程序的 sqlite 数据库中 我已经搜索了如何在我的 sqlite 数据库中将数据存储为 JSON 但没有看到很多有前途的替代方案 谁能指导我如何做到这一点 您需要从 JSON 生
  • 如何通过 Bash 脚本检查文件是否存在?

    我正在尝试克隆一个存储库并在通过 bash 脚本完成后对其进行测试 我已经根据以下内容编写了测试代码Bash Shell 检查文件是否存在 bin bash echo TRY TO INIT INFER Clone Infer INFER
  • Android如何创建堆栈类型的图像背景

    我正在开发一个应用程序 我需要在其中创建相册并将其显示在 GridView 中 现在我只是在没有任何背景的情况下显示它们 但我需要专辑封面的背景 以便它看起来像一堆照片 背景是这样的 我尝试了这个 但不起作用 首先我创建了一个像这样的单一背
  • 在asp.net MVC中DropDownList设置所选项目

    我注意到在我看来是 ASP NET MVC 中的一个错误 或者只是我做错了什么 我目前使用的是 1 0 所以也许这个问题将在 2 0 版本中得到解决 但无论如何 我们开始吧 当我的视图模型有一个与下拉列表声明的 id 名称相同的属性时 所选
  • 强制 R 将科学记数法写为带上标的 n.nn x 10^-n

    假设我有两个花车 a lt 8 9384920e 24 b lt 0 00293892837 我想在图表上以 10 基科学记数法四舍五入到两位小数显示它们中的任何一个 可能使用paste 但在 10 之后采用上标格式 8 94 x 10 2
  • 如果文件是在过去一小时内创建的,则从 FTP 下载文件

    我需要从 FTP 上的特定文件夹下载文件 但仅限于创建时间在过去一小时内的文件 所以基本上我需要列出该文件夹中的所有文件 然后仅下载时间戳与执行时间相差超过一小时的文件 关于如何解析 FTP 上文件的时间戳有什么想法吗 我无法使用任何第 3
  • 使用 vanilla Javascript 查找具有部分属性的 DOM 元素

    假设我有一个网站 我想使用循环遍历其 DOM 元素的脚本 并指出这些元素的属性包含指定文本的一部分 我成功创建了一个简单的循环 可以找到 DOM 元素的每个所需属性并从中创建数组 现在我想将数组属性值与其所属的 DOM 元素配对 并且还能够
  • Android 锁定全屏

    Android 可以锁定全屏吗 基本上隐藏吐司 隐藏主页 后退 开关 隐藏通知栏 使其从底部或顶部滑动不起作用 致力于一个将从中受益匪浅的想法 我知道这样做很不好 但它针对的是非常年幼的孩子 他们随机点击 拖动 偶尔会意外地将手机语言更改为
  • 如何停止与 canvas imageData 的 alpha 预乘?

    有没有办法停止画布数据的 Alpha 通道的预乘 或者解决方法 我想生成一个图像 在本例中是一些随机的 rgba 值 并将画布保存为图像 在第二步中 我想使用 imageData 将原始图像与生成的图像进行比较 但是由于生成图像中 rgba
  • 何时在 GUI 应用程序中调用 thread.join

    import wx import json import queue from collections import namedtuple import threading class MyDialog wx Frame def init
  • Sublime Text 构建:找不到指定的文件

    我已经通过 Package Control 安装了 CoffeeScript 插件 当我尝试构建 test coffee 时 它 给了我这个 Error 2 The system cannot find the file specified
  • 在 XZ 平面上拖动对象

    我正在开发一个增强现实应用程序 我希望能够在空间中拖动一个对象 我在 SO 中找到的解决方案存在问题 建议使用projectPoint unprojectPoint 是它们沿着XY plane 我试图使用屏幕上的手指移动作为偏移x and
  • npm run script 导致 Windows Script Host 错误

    我尝试使用 npm 来缩小 javascript 这是我的 package json name name1 version 1 0 0 description scripts minifyjs minifyJs minifycss mini
  • 如何阻止 PHP 中的无限递归函数耗尽所有可用内存并最终导致笔记本电脑崩溃?

    我这里有一个简单的无限递归代码
  • 使用 TokenRegex 以所需格式获取输出

    我正在使用 TokensRegex 进行基于规则的实体提取 它运行良好 但我无法以所需的格式获得输出 以下代码片段为我提供了以下句子的输出 本月早些时候 特朗普针对丰田 威胁要对其实施制裁 如果世界上最大的汽车制造商生产卡罗拉 它将收取高额
  • bash 中的浮点除法

    我正在尝试将用户输入的任何数字转换为小数点后两位 例如 What is the total cost in cents 2345 output 23 45 这是我到目前为止的代码 percentage 20 cannot change nu
  • 从 WPF Web 浏览器静默打印 HTML

    我必须从 WPF 中的 WebBrowser 静默打印 HTML 文档 我已经通过该代码不默默地完成了它 mshtml IHTMLDocument2 doc WebBrowser1 Document as mshtml IHTMLDocum