c#interop.word-打印输出-随机更改的打印机设置

c#interop.word-打印输出-随机更改的打印机设置,c#,printing,ms-word,interop,office-interop,C#,Printing,Ms Word,Interop,Office Interop,我在互操作方面遇到了一个非常奇怪的问题 我开发了一个小程序,可以打开Microsoft.Office.Interop.Word.Application,并使用它打印文档: object[] oWordDialogParams = { printerName, true }; string[] argNames = { "Printer", "DoNotSetAsSysDefault" }; object wordBasic = wordApplicatio

我在互操作方面遇到了一个非常奇怪的问题

我开发了一个小程序,可以打开Microsoft.Office.Interop.Word.Application,并使用它打印文档:

object[] oWordDialogParams = { printerName, true };
string[] argNames = { "Printer", "DoNotSetAsSysDefault" };
object wordBasic = wordApplication.WordBasic;
try
{
  wordBasic.GetType().InvokeMember("FilePrintSetup"
  , BindingFlags.InvokeMethod
  , null
  , wordBasic
  , oWordDialogParams
  , null
  , null
  , argNames);
}
catch (Exception e)
{
  Logger.Instance.Log("failed to set printer");
}
doc.Activate(); 
wordApplication.PrintOut(Background: ref backgroundPrint, FileName: ref sourceFile);
一切正常(我会说95%的时间),我能够看到正确的打印队列,最重要的是,打印机设置是默认的打印机设置(即:打印机首选项中没有发生任何事情):

但是,在少数情况下,文档在没有扩展名的情况下被传递到打印机(本例中为docx)并且打印机设置被更改(例如,纸张大小被设置为字母)

请注意:

  • 在我的代码中,FileName:ref sourceFile始终正确设置了扩展名,但是(随机!)它出现在打印队列中,没有扩展名发生这种情况时,也意味着打印机设置更改为非默认设置

  • 完全相同的文件重印作品罚款(!)

我的工作对象是:

  • 框架4.0
  • 互操作12.0
  • windows server 2008 R2
  • 打印机使用HP通用打印驱动程序

谢谢大家宝贵的帮助

Word文档可以有单独的打印设置,如果设置,则会覆盖这些设置。如果打开Word,然后转到文件>打印>页面设置>纸张(选项卡),这是设置纸张大小设置的位置。这些设置也可以在Document.PageSetup下的对象模型中找到。至于扩展,我不确定这是怎么回事。我已经检查了这些设置,它们是正确的。而且,同样的文件转载打印精细!