打印转换后的 XML

2024-03-27

由于情况超出了我的控制范围,我将用自制的 XML 报告替换所有的 Crystal 报告,这些报告运行得非常好。对于大多数弹出 Crystal Reports 查看器的报表,以下代码可以在 IE 中很好地打开它们,并通过 XSLT 样式表将其转换为 HTML。

ProcessStartInfo psi = new ProcessStartInfo(reportFilename)
{
   UseShellExecute = true
};

using (Process p = new Process {StartInfo = psi})
{
    p.Start();
}

问题是有些报告只是直接打印到打印机,从不向用户显示报告,而这在 CR 中工作得很好。我不知道如何使用上面的代码来做到这一点。

如果可能的话,我不想专门启动 IE 进程,但我保证它们运行的​​是 Windows,所以这不是硬性要求。另外,以这种方式直接打印是通过 XSL 将 XML 转换为 HTML 并打印它,还是只打印实际的 XML 文本?

EDIT:我已经尝试添加:

Verb = "Print"

到 ProcessStartInfo 对象,但最终会抛出一个异常:

"No application is associated with the specified file for this operation"

再次编辑:指定 IE 作为要启动的 exe 再次加载 XML 就好了,但不提供“打印”操作。在 JavaScript 块中添加“window.print()”是可行的,但需要在允许脚本运行后手动单击打印按钮,因为 IE 会阻止它。

编辑第三个:我的老板告诉我不用担心,他们可以从 IE 打印。我还是想弄清楚这个问题。我尝试过命令行“print.exe”,但它只将原始 XML 打印到打印机。尝试使用 PrintDocument 进行 XslCompiledTransform,但这也不是我想要的。


终于想通了我刚刚创建了一个不可见的 WebBrowser 控件,该控件执行 IE 渲染,并在 DocumentCompleted 上调用其 Print() 方法。使用默认打印机设置,效果非常好。

private static void PrintReport(string reportFilename)
{
    WebBrowser browser = new WebBrowser();

    browser.DocumentCompleted += browser_DocumentCompleted;

    browser.Navigate(reportFilename);
}

private static void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    WebBrowser browser = sender as WebBrowser;

    if (null == browser)
    {
        return;
    }

    browser.Print();

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

打印转换后的 XML 的相关文章

随机推荐

  • 将 jEditable 与 ASP.NET MVC 结合使用(POST)

    我明白使用 jEditable http www appelsiini net projects jeditable http www appelsiini net projects jeditable 您可以进行就地编辑并将更改的信息发布
  • AnnotationClassLoader的configureRoute()的实现

    在我的 Symfony 3 2 应用程序中 我创建了一个自定义路由器 该路由器扩展自Symfony Bundle FrameworkBundle Routing Router 根据需要 它实现了getRouteCollection meth
  • 如何通过构造函数正确初始化两个类之间的父子引用

    我有两节课 第一类是Parent 其中有一个对象列表 Child 每一个Child参考了他的Parent班级 问题是如何通过构造函数来实现这个引用 public sealed class Child public Child string
  • 如何在magento中创建pdf?

    我想在 magento 中创建后端 管理中产品列表的 pdf 我不知道该怎么做 而且我在互联网上找到的东西也没有那么有帮助 希望有人能帮助我 gr edit class Wouterkamphuisdotcom Web Adminhtml
  • 我可以通过 S3 中的特定文件上传触发 ECS/Fargate 任务吗?

    我知道我可以在上传文件时触发任务 每个https docs aws amazon com AmazonCloudWatch latest events CloudWatch Events tutorial ECS html https do
  • CSS提交按钮和输入文本的宽度不一样

    尽管我准确地制作了提交按钮和输入文本 width 60 但是当我运行应用程序时 它们的宽度不同 loginClass width 40 height 40 margin auto auto loginClass ul li list sty
  • ms access - vba:编译错误:预期:=

    我有一个子程序如下 Public Sub updateStagesTable sName As String percentageValue As Double stageName sName sSQL INSERT INTO Stages
  • 手臂 g++ 中缺少一些东西

    我安装了 CodeSourcery g 工具链并尝试编译一个简单的 hello world 程序 include
  • 我的 PDO 构造错误 - Php

    这是6号线的抱怨声 Warning PDO construct expects parameter 2 to be string array given 伴随着第 7 行错误 Fatal error Call to a member fun
  • 二维数组的按行 numpy.isin [重复]

    这个问题在这里已经有答案了 我有两个数组 A np array 3 1 4 1 1 4 B np array 0 1 5 2 4 5 2 3 5 是否可以使用numpy isin二维数组按行排列 我想检查一下是否A i j is in B
  • 使用用户定义的运行时属性的 UILabel 的cornerRadius 不起作用

    我尝试使用将cornerRadius添加到UILabelUser Defined Runtime Attributes但它没有按预期工作 cornerRadius 没有设置 我想知道我在哪里犯了错误 我附上了它的截图 帮我解决一下 It i
  • JavaScript 中的构造函数和继承

    这是关于 JavaScript 中的 继承 假设我创建一个构造函数 Bird 和另一个名为 Parrot 的构造函数 通过将 Bird 的实例分配给 Parrot 的原型来 继承 Bird 的属性 如以下代码所示 function Bird
  • 使用前缀路由时 url 中的 CakePHP3.x 控制器名称

    我正在尝试在 CakePHP3 中使用前缀路由 我将以下几行添加到 config routes php Router prefix admin function routes All routes here will be prefixed
  • Prefuse:向 GraphView 演示添加边权重

    我正在使用 prefuse 可视化工具包 工具包中的 GraphView 演示非常出色 提供了各种控件来可视化数据 我能够为我的数据集生成 GraphML 并使用 GraphView 对其进行可视化 我希望拥有的另一件事是使用权重或颜色编码
  • Elasticsearch:使用 Java 添加手动映射

    我无法更改映射 有人能帮我找到代码中的错误吗 我根据几个教程找到了更改映射的标准方法 但是 当我尝试调用映射结构时 在手动创建映射后只会出现一个空白映射结构 但是插入一些数据后就会出现映射规范 因为ES当然使用默认的映射规范 更具体的请看下
  • Php $_POST方法获取textarea值

    我正在使用 php 使用 post 方法获取 textarea 值 但得到一个奇怪的结果 让我向你展示我的代码
  • 在没有 VSDBCMD 的情况下部署 VS2010 数据库项目?

    自首次引入 Visual Studio 2010 的数据库项目以来 我们一直在多个内部或单一客户项目中使用它们 到目前为止 它们对我们来说运行良好 现在 我们第一次将它们与 盒装 产品一起使用 该产品需要打包才能安装在任意客户站点 到目前为
  • 可靠的WebSocket连接状态检测

    我一直在寻找实现可靠的 WebSocket 连接恢复机制 经过一番调查 我发现一种方法是将心跳发送到服务器 ping pong 并检查我是否收到整个pong在有限的时间内 因此 如果连接实际上已断开或速度非常慢 则会被视为断开连接 if a
  • 如何修复IntelliJ IDEA方法参数自动完成?

    我正在使用 IntelliJ IDEA 15 我注意到 默认情况下 Eclipse 在编写需要多个参数的方法调用时提供了更方便的自动完成功能 Eclipse 会自动填充默认参数 并允许您通过按快速浏览它们Tab IntelliJ 不这样做
  • 打印转换后的 XML

    由于情况超出了我的控制范围 我将用自制的 XML 报告替换所有的 Crystal 报告 这些报告运行得非常好 对于大多数弹出 Crystal Reports 查看器的报表 以下代码可以在 IE 中很好地打开它们 并通过 XSLT 样式表将其