在一页上打印word文档中的多个页面

时间:2015-04-14 07:50:41

标签: c# .net ms-word office-interop

在一张纸上打印一页文档可以正常工作,但我的目的是在一张A4纸上打印四页。 如果我更改printout方法的printZoomColumn和printZoomRow参数,它会打印出一个空白页面。(虽然页面匹配。我打印出一个5页的文档,并且使用上面的参数,它会打印出2个空白页面。)

我使用Office 2007和Visual Studio 2012.

我的代码是,

public void test5()
{
    try
    {
        // Declaring the object variables we will need later
        object varFileName = filePath;
        object varFalseValue = false;
        object varTrueValue = true;
        object varMissing = Type.Missing;
        object False = false;
        // Create a reference to Microsoft Word application
        Microsoft.Office.Interop.Word.Application varWord =
            new Microsoft.Office.Interop.Word.Application();
        // Creates a reference to a Word document
        varWord.Visible = false;

        Microsoft.Office.Interop.Word.Document varDoc =
            varWord.Documents.Open(ref varFileName, ref varMissing,
               true,
               ref varMissing, ref varMissing, ref varMissing, ref varMissing,
               ref varMissing, ref varMissing, ref varMissing,
               ref varMissing, varFalseValue, ref varMissing, ref varMissing,
               ref varMissing, ref varMissing);
        varDoc.Activate();
        object copies = "1";
        object pages = "";
        object range = Microsoft.Office.Interop.Word.WdPrintOutRange.wdPrintAllDocument;
        object items = Microsoft.Office.Interop.Word.WdPrintOutItem.wdPrintDocumentContent;
        object pageType = Microsoft.Office.Interop.Word.WdPrintOutPages.wdPrintAllPages;
        object oTrue = true;
        object oFalse = false;
        object row = "2";

        varDoc.PrintOut(ref oTrue, ref varFalseValue, ref range,
                ref varMissing, ref varMissing, ref varMissing,
                ref items, ref copies, ref pages, ref pageType,
                ref varFalseValue, ref oTrue, ref varMissing,
                ref varMissing, ref row, ref row, ref varMissing,
                ref varMissing);
        }
    catch (Exception varE)
    {
        MessageBox.Show("Error:\n" + varE.Message, "Error message");
    }
}

在上述来源中,更改打印输出就可以了。

varDoc.PrintOut(ref oTrue, ref varFalseValue, ref range,
                    ref varMissing, ref varMissing, ref varMissing,
                    ref items, ref copies, ref pages, ref pageType,
                    ref varFalseValue, ref oTrue, ref varMissing,
                    ref varMissing, ref varMissing, ref vaMissing, ref varMissing,
                    ref varMissing);

但是,这不是我的意图。我想在一张A4纸上打印文档内的四页。我缺少一些概念吗?

1 个答案:

答案 0 :(得分:1)

我无法使用Office 2007对此进行测试,因为我此处仅安装了2010,但即使在2007年互操作中,大多数(如果不是全部)参数都是可选的,如果您使用VS2012,则c#应该了解可选项参数

document.PrintOut(Background: true, PrintZoomRow: 2, PrintZoomColumn: 2);

所以只需提供您真正关心的参数。我认为您必须提供PrintZoomColumn参数以及每张多页打印工作,来自MSDN:

  

PrintZoomColumn可选Variant希望Word在一个页面上水平放置的页数。可以是1,2,3或4.与PrintZoomRow参数一起使用可在单张纸上打印多个页面。

     

PrintZoomRow可选Variant希望Word在一个页面上垂直放置的页数。可以是1,2或4.与PrintZoomColumn参数一起使用可在单张纸上打印多个页面。