【问题标题】:Set the Default Print Page size for Microsoft Word设置 Microsoft Word 的默认打印页面大小
【发布时间】:2012-05-05 18:45:56
【问题描述】:

我正在使用 Microsoft.Office.Interop.Word 处理 vb.net 和 microsoft word,一切都很好。我唯一的问题是我找不到将默认页面大小 printing 设置从“letter”更改为“A4”的方法。 这段代码为 Crystal 报表做的工作,但不是为 Word 做的

Dim pp As New System.Drawing.Printing.PrintDocument For i = 0 To pp.DefaultPageSettings.PrinterSettings.PaperSizes.Count - 1 If pp.DefaultPageSettings.PrinterSettings.PaperSizes.Item(i).Kind = System.Drawing.Printing.PaperKind.A4 Then pp.DefaultPageSettings.PaperSize = pp.DefaultPageSettings.PrinterSettings.PaperSizes.Item(i) Exit For End If Next

【问题讨论】:

  • 观察到这样一个问题是“为什么不使用 Word 进行打印?”。这完全解释了这个问题,Word 对 PrintDocument 一无所知。
  • +1 我找不到方法,但是您能否删除问题中的代码,因为您尝试使用 .Net System.Drawing.Printing 方法设置 Word 默认页面大小令人困惑。 .Net 代码使用 VSTO 与 Word 配合使用。
  • @HansPassant 的另一个观察结果是“问题是每次我想通过 word 打印页面时都不必更改打印页面大小”

标签: vb.net printing ms-word


【解决方案1】:

您应该在 Word 文档实例上更改 PageSetup 界面的 PaperSize。

Imports Microsoft.Office.Interop.Word
....

Dim myWordApp as Application = New Application();  
Dim myWordDoc As Document = myWordApp.Documents.Open("your_file_name_here")
myWordDoc.PageSetup.PaperSize = WdPaperSize.wdPaperA4

【讨论】:

  • 我已经试过了,但它不会改变默认的打印页面大小。即使您手动更改 Word 文档的页面大小,它也会更改打印大小..
  • 其实我得到一个错误:“呼叫被被调用者拒绝。(来自 HRESULT 的异常:0x80010001 (RPC_E_CALL_REJECTED))”
  • 我解决了这个问题。看来它需要 VS 比加载的 word 文档要快。无论如何@JeremyThompson,您的代码有效并更改了页面大小,但是在打印时,默认页面大小不会改变
  • @Haz 我没有发布任何代码(但我很高兴它有效),我让您发布您的代码,表明您已经尝试过史蒂夫的方法不起作用?
  • @JeremyThompson 抱歉,我的意思是 steve 的代码有效,但它不能解决我的问题,因为它没有改变打印页面的大小。我的代码与上面的代码没有任何不同
【解决方案2】:

参考:http://social.msdn.microsoft.com/forums/en-US/vsto/thread/45152591-1f3e-4d1e-b767-ef030be9d9f2

由于页面大小因节而异,因此最好设置 Document.Section 对象的 PageSetup 属性。例如,您可以遍历文档的所有部分:

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
    Application app = Globals.ThisAddIn.Application;
    Word.Document doc = app.ActiveDocument;
    foreach (Section section in doc.Sections)
    {
        section.PageSetup.PaperSize = WdPaperSize.wdPaperA4;
    }
}

在创建或打开文档时添加 locic 以设置纸张大小取决于您,我猜您需要确定正在打开的文档是否故意以非 A4 大小保存。

编辑:这确实有效,我不知道你对ThisAddIn isnt a member or Globals and ActiveDocument isnt a member of Application in VB.NET 的评论是什么意思 - 你不能跳过前两行,这是 VB.Net 版本:

Private Sub ThisAddIn_Startup(sender As Object, e As System.EventArgs)
    Dim app As Application = Globals.ThisAddIn.Application
    Dim doc As Word.Document = app.ActiveDocument
    For Each section As Section In doc.Sections
        section.PageSetup.PaperSize = WdPaperSize.wdPaperA4
    Next
End Sub

您需要做的就是 > Visual Studio > 创建新项目 > Office > Word 2010(或 2007)加载项并粘贴上述代码。这是一个屏幕截图,显示它适用于 A4 和 Letter:

您可能面临的唯一问题是当打印机没有尺寸的纸张时,您会收到此错误:Requested PaperSize is not available on the currently selected printer.

【讨论】:

  • 这看起来应该可以,我需要什么参考资料吗?原因 ThisAddIn 不是 VB.NET 中 Application 的成员或 Globals 和 ActiveDocument 的成员
  • 我没有使用前两行代码,我只是将 doc.Sections 替换为 wordDoc.Sections(我创建的实例),并且没有工作,页面大小正在改变但打印大小没有改变..再次,如果您尝试手动更改页面尺寸,打印尺寸将更改为相同尺寸!
  • 天哪!这与 Microsoft Word 无关,现在我看到了您的原始代码应该做什么。打开一个新问题,包括我从您的问题中编辑的代码,不要提及有关 Word 的任何内容并显示屏幕截图。
  • 当我告诉@Steve 默认页面大小始终设置为“Letter”时,我的意思是打印大小,我应该说“打印”这个词,但我假设你们都理解了来自开始,即使从标题上也很清楚。我不能再问问题了
  • 这不是我正在寻找的确切答案,但考虑到它的努力以及它最接近我将使用它的事实..并且您不需要该代码来更改您指向的大小在屏幕截图上,只需一个简单的 >myWordDoc.PageSetup.PaperSize = WdPaperSize.wdPaperA4 即可完成工作
【解决方案3】:

我正在发布此问题的另一个答案,因为接受的答案不会刷新文档或处理页面方向。所以以防万一有人需要这个,我发现这是一个更好的解决方案......

            Microsoft.Office.Interop.Word.Application app = Globals.ThisAddIn.Application;
            Microsoft.Office.Interop.Word.Document doc = app.ActiveDocument;

            foreach (Section section in doc.Sections)
            {
                if(section.PageSetup.Orientation == WdOrientation.wdOrientLandscape)
                {
                    section.PageSetup.PageWidth = 841.88976378F;
                    section.PageSetup.PageHeight = 595.275590551F;

                }
                else
                {
                    section.PageSetup.PageWidth = 595.275590551F;
                    section.PageSetup.PageHeight = 841.88976378F;

                }

            }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-12
    • 2014-04-27
    • 2013-05-01
    • 1970-01-01
    • 2011-01-21
    • 2016-12-26
    • 2015-01-17
    • 1970-01-01
    相关资源
    最近更新 更多