打印带有可打印区域边距的word文档

时间:2011-11-01 09:00:12

标签: c# windows printing

我有一个代码,我打印word文档。 在示例文档中,有一个带有图片的部分,用户修改了边距。

当我执行代码时,我收到以下消息:

  

第1部分的边距设置在可打印区域之外。

处理文档后,它开始假脱机并抛出此promt enter image description here 如何关闭通知对话框?

到目前为止

我的代码:

        Process printJob = new Process();
        printJob.StartInfo.Verb = "PrintTo";
        printJob.StartInfo.Arguments = printerName;
        printJob.StartInfo.ErrorDialog = false;
        printJob.StartInfo.CreateNoWindow = true;
        printJob.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        printJob.StartInfo.FileName = path;
        printJob.StartInfo.UseShellExecute = true;
        printJob.StartInfo.Verb = "print";
        printJob.Start();

可变路径>是文件名路径

1 个答案:

答案 0 :(得分:7)

http://word.mvps.org/faqs/macrosvba/OutsidePrintableArea.htm

根据这个,您需要关闭后台打印,然后关闭Application.DisplayAlerts。

修改

您无法使用Process执行此操作。 “print”动词使用/ x / dde告诉Word打印:

  

/ x从操作shell启动Word的新实例(例如,在Word中打印)。此Word实例仅响应一个DDE请求,并忽略所有其他DDE请求和多实例。如果要在操作环境中启动Word的新实例(例如,在Windows中),建议您使用/ w开关,它将启动一个功能完整的实例。

要取消该消息,您需要进行互操作:

  1. 添加对Microsoft.Office.Interop.Word
  2. 的引用
  3. 制作Print(string path)方法:
  4. Application wordApp = new Application();
    wordApp.Visible = false;
    
    //object missing = Type.Missing;
    
    wordApp.Documents.Open(path); //for VS 2008 and earlier - just give missing for all the args
    
    wordApp.DisplayAlerts = WdAlertLevel.wdAlertsNone;
    wordApp.ActiveDocument.PrintOut(false); //as before - missing for remaining args, if using VS 2008 and earlier
    
    wordApp.Quit(WdSaveOptions.wdDoNotSaveChanges); //ditto