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

print multiple pages from a word document on one page

在一张纸上打印一页文件效果很好,但我的意图是在一张 A4 纸上打印四页。 如果我更改打印输出方法的 printZoomColumn 和 printZoomRow 参数,它会打印出一个空白页。(虽然页面匹配。我打印了一个 5 页的文档,并且使用上述参数,它打印出 2 个空白页。)

我使用 Office 2007,Visual Studio2012。

我的代码是,

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 纸上打印文档中的四页。有什么我想念的概念吗?

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

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

因此只需提供您真正关心的参数即可。我认为您必须提供 PrintZoomColumn 参数以及每个 Sheet 的多页才能工作,来自 MSDN:

PrintZoomColumn Optional Variant The number of pages you want Word to fit horizontally on one page. Can be 1, 2, 3, or 4. Use with the PrintZoomRow argument to print multiple pages on a single sheet.

PrintZoomRow Optional Variant The number of pages you want Word to fit vertically on one page. Can be 1, 2, or 4. Use with the PrintZoomColumn argument to print multiple pages on a single sheet.