C# 阻止 Adob​​e Reader 窗口在尝试打印文档时出现

2023-11-27

由于我现在无法进入的原因,我需要在尝试打印文档时阻止 Adob​​e Reader 窗口打开。在我之前从事此工作的开发人员设置了以下标志,尽管我不太确定它们的用途 -

if (RegistryManager.GetAcrobatVersion() >= 9.0f)
    printerArg = "\"" + printerName + "\"";
else
    printerArg = printerName;

Process myProc = new Process();
myProc.StartInfo.FileName = fileName;
myProc.StartInfo.Verb = "printto";
myProc.StartInfo.UseShellExecute = true;
myProc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
myProc.StartInfo.CreateNoWindow = true;
myProc.StartInfo.Arguments = "\"" + printerName + "\"";


bool result = myProc.Start();


if (myProc.WaitForInputIdle())
{
    if (!myProc.HasExited)
    {
        myProc.WaitForExit(Convert.ToInt32(5000));
        myProc.Kill();
    }
}
myProc.Close();

任何帮助深表感谢!

Thanks,
Teja.


虽然我无法具体回答你的问题,但我发现我无法做到这一点,因为 Adob​​e 在版本 9 或 10 中更改了 Reader,这样你就无法抑制打印对话框,而且窗口本身仍然不断出现,由于我的用户都安装了不同版本的 Reader,因此我无法让任何内容始终如一地工作。如果您想尝试,请查看 Reader 的 API - 您需要添加对正确 COM 库的引用,然后从那里开始。痛苦。

我最终通过运行 PDF 完全放弃了 Adob​​e幽灵脚本。以下是我为完成这项工作而创建的帮助程序类。gsExePath应该是这样的C:\Program Files\gs\gs8.71\bin\gswin32c.exe.

public class GSInterface
{
    public string GhostScriptExePath { get; private set; }

    public GSInterface(string gsExePath)
    {
        this.GhostScriptExePath = gsExePath;
    }

    public virtual void CallGhostScript(string[] args)
    {
        var p = new Process();
        p.StartInfo.FileName = this.GhostScriptExePath;
        p.StartInfo.Arguments = string.Join(" ", args);
        p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

        p.Start();
        p.WaitForExit();
    }


    public void Print(string filename, string printerName)
    {
        this.CallGhostScript(new string[] {
            "-q",
            "-sDEVICE=mswinpr2",
            "-sPAPERSIZE=a4",
            "-dNOPAUSE",
            "-dNoCancel",
            "-dBATCH",
            "-dDuplex",
            string.Format(@"-sOutputFile=""\\spool\{0}""", printerName),
            string.Format(@"""{0}""", filename)
        });
    }
}

以下内容应打印到 Windows 默认打印机:

var printerName = new System.Drawing.Printing.PrinterSettings().PrinterName;
var gs = new GSInterface(gsExePath);
gs.Print(filename, printername);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 阻止 Adob​​e Reader 窗口在尝试打印文档时出现 的相关文章

随机推荐

  • 允许所有远程连接,MySQL

    我一直在使用 SQL Server 现在在一个项目中使用 MySQL 使用 SQL Server 如果我们的开发人员知道主机 用户名和密码 他们就可以连接到本地计算机上的远程数据库 不过 对于 MySQL 为了让开发人员能够从本地计算机进行
  • 在类构造函数中包含参数是否可以接受?

    我正在编写一个 ruby gem 它对于计算文本中单词的出现次数很有用 我选择在类构造函数中放置 3 个参数 代码可以工作 但我想重构它以使其美观 根据您的经验 作为 API 读取 维护 使用一个带有没有参数的构造函数和大量 setter
  • OpenCV:FFMPEG:编解码器不支持标签 0x34363268/'h264'

    像在 Mac OS 10 13 6 上一样安装 opencv 后 conda install c conda forge ffmpeg conda install c conda forge opencv 并使用fourcc cv2 Vid
  • OCaml 类型推断算法如何工作?

    我目前正在学习 OCaml 我很好奇 OCaml 如何进行类型推断 我知道这是通过一个称为统一的过程完成的 我尝试阅读已发表论文中的算法 但符号让我失望 谁能为我描述一下分步过程 实际上 可以说统一是算法的实现细节 类型系统只是一组规则 这
  • 使用 ng-click 在 angularJs 中添加和删除类

    我正在尝试如何使用 ng Click 添加课程 我已经将我的代码上传到plunker中点击这里 查看角度文档 我无法弄清楚应该完成的确切方法 下面是我的代码片段 有人可以引导我走向正确的方向吗 div class block div 控制器
  • 将矩导入 Angular 会出现错误

    我收到以下错误 Module node modules moment moment has no exported member default 当我使用 import as moment from moment import defaul
  • 如何在 SQLAlchemy 中加载 SQLite3 扩展?

    我构建了一个 SQLite 扩展 即 so 库 我想使用 SQLAlchemy 在我的应用程序中使用它 它是一个 Flask 应用程序 但我不认为 Flask 在这里发挥作用 该扩展可以从 CLI 加载并且似乎可以工作 sqlite3 SQ
  • P0522R0如何破码?

    今天我正在阅读 clang 的 C 17 支持页面 我注意到一些奇怪的事情 特点将模板模板参数与兼容的参数相匹配 P0522R0 被标记为部分 因为它必须通过开关激活 他们的笔记says 尽管是缺陷报告的解决方案 但该功能在所有语言版本中默
  • 取消设置字中的最高有效位 (int32) [C]

    如何取消设置一个字的最高有效位 例如 0x00556844 gt 0x00156844 有一个 builtin clz在 gcc 中 但它只计算零 这对我来说是不需要的 另外 我应该如何替换 msvc 或 intel c 编译器的 buil
  • SQL 查询获取结果集最后一行中所有列值的总和以及行总和(分组依据)

    有人可以帮我编写一个查询来获取 TCS 和 TRS 吗 ID Jan Feb Mar TRS 1 4 5 6 15 2 5 5 5 15 3 1 1 1 3 TCS 10 11 12 TCS 总列总和 和TRS 总行总和 分别是新的列和行
  • setTimeout 是使用 javascript 执行异步函数的好解决方案吗?

    在网上搜索有关异步函数的信息 我发现很多文章使用 setTimeout 来完成这项工作 window setTimeout function console log second 0 console log first Output fir
  • 绘制金字塔图

    我需要画一个金字塔图 如所附的 我找到了一个使用 R 但不是 ggplot 的示例here 任何人都可以给我一些使用 ggplot 执行此操作的提示吗 谢谢 我用了一些解决方法 而不是使用 geom bar 而是使用了 geom liner
  • Pandas read_csv 指定 AWS 配置文件

    熊猫 v1 0 5 使用s3fs用于连接 AWS S3 并读取数据的库 默认情况下 s3fs 使用在以下位置找到的凭据 aws credentials文件输入default轮廓 如何指定 pandas 在从 S3 读取 CSV 时应使用哪个
  • SQLAlchemy 重复键更新

    有没有一种优雅的方式来做INSERT ON DUPLICATE KEY UPDATE在 SQLAlchemy 中 我的意思是语法类似于inserter insert execute list of dictionaries ON DUPLI
  • 是否可以创建一个特征来回答类型是否来自 std?

    After 这个问题通过利用 ADL 我们可以创建一个特征来回答传递的类型是否来自我们的命名空间 include
  • Doxygen 分组

    我对 doxygen 中的页面和组有疑问 我有一个项目 我在其中使用 defgroup 和 ingroup cmd 对类等进行分组 到目前为止这工作正常 现在我想使用 Markdown 页面向项目添加特殊文档 这些页面应出现在专用模块 组
  • 在 Cocoa 中生成随机字母数字字符串

    我想调用一个方法 向其传递长度并让它生成一个随机字母数字字符串 是否有任何实用程序库可能具有大量此类功能 这是一个快速而肮脏的实现 没有经过测试 NSString letters abcdefghijklmnopqrstuvwxyzABCD
  • Maven、javadoc:包没有源文件

    我正在写一个专家package具有目录结构 frtex pom xml frtex src main java some files java frtex src main java utils some other files java
  • 对象转储器类

    我正在寻找一个可以以类似于以下格式输出对象及其所有叶值的类 User Name Gordon Age 60 WorkAddress Street 10 Downing Street Town London Country UK HomeAd
  • C# 阻止 Adob​​e Reader 窗口在尝试打印文档时出现

    由于我现在无法进入的原因 我需要在尝试打印文档时阻止 Adob e Reader 窗口打开 在我之前从事此工作的开发人员设置了以下标志 尽管我不太确定它们的用途 if RegistryManager GetAcrobatVersion gt