Почему при нажатии кнопки «Печать» в Word и «Document.Printout» происходит другое поведение? - PullRequest
0 голосов
/ 23 апреля 2019

Я пытаюсь напечатать документ Word в Visual Studio.Когда я создаю документ, я вижу, что параметры страницы правильные, поскольку я их установил, и я могу вручную распечатать его из Word без проблем.Если я пытаюсь распечатать его с помощью метода .PrintOut, он игнорирует размер страницы, заданный мной, когда он идет на принтер.Интересно, что когда у нас был один драйвер на сервере, код работал.Когда мы разбили его на два разных драйвера, один для черного и белого и один для цветного, ни один из них не работал.

Я попытался устранить неполадки в существующей программе, создав шаблон для используемой программы, а такжесоздание нового приложения с использованием примера, предоставленного Microsoft, и оно ведет себя так же.Если это что-то значит, я пытаюсь печатать на Xerox WorkCentre 7845.

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    Dim oWord As Word.Application
    Dim oDoc As Word.Document
    Dim oTable As Word.Table
    Dim oPara1 As Word.Paragraph, oPara2 As Word.Paragraph
    Dim oPara3 As Word.Paragraph, oPara4 As Word.Paragraph
    Dim oRng As Word.Range
    Dim oShape As Word.InlineShape
    Dim oChart As Object
    Dim Pos As Double

    'Start Word and open the document template.
    oWord = CreateObject("Word.Application")
    oWord.Visible = True
    oDoc = oWord.Documents.Add
    Dim PageSettings = oDoc.PageSetup
    PageSettings.Orientation = Word.WdOrientation.wdOrientLandscape
    PageSettings.PaperSize = Word.WdPaperSize.wdPaperCustom
    PageSettings.PageHeight = oWord.InchesToPoints(10)
    PageSettings.PageWidth = oWord.InchesToPoints(13)
    PageSettings.FirstPageTray = CType(258, Word.WdPaperTray)
    PageSettings.OtherPagesTray = CType(258, Word.WdPaperTray)

    'Insert a paragraph at the beginning of the document.
    oPara1 = oDoc.Content.Paragraphs.Add
    oPara1.Range.Text = "Heading 1"
    oPara1.Range.Font.Bold = True
    oPara1.Format.SpaceAfter = 24    '24 pt spacing after paragraph.
    oPara1.Range.InsertParagraphAfter()

    'Insert a paragraph at the end of the document.
    '** \endofdoc is a predefined bookmark.
    oPara2 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("\endofdoc").Range)
    oPara2.Range.Text = "Heading 2"
    oPara2.Format.SpaceAfter = 6
    oPara2.Range.InsertParagraphAfter()

    'Insert another paragraph.
    oPara3 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("\endofdoc").Range)
    oPara3.Range.Text = "This is a sentence of normal text. Now here is a table:"
    oPara3.Range.Font.Bold = False
    oPara3.Format.SpaceAfter = 24
    oPara3.Range.InsertParagraphAfter()

    'Insert a 3 x 5 table, fill it with data, and make the first row
    'bold and italic.
    Dim r As Integer, c As Integer
    oTable = oDoc.Tables.Add(oDoc.Bookmarks.Item("\endofdoc").Range, 3, 5)
    oTable.Range.ParagraphFormat.SpaceAfter = 6
    For r = 1 To 3
        For c = 1 To 5
            oTable.Cell(r, c).Range.Text = "r" & r & "c" & c
        Next
    Next
    oTable.Rows.Item(1).Range.Font.Bold = True
    oTable.Rows.Item(1).Range.Font.Italic = True

    oDoc.PrintOut(Range:=Word.WdPrintOutRange.wdPrintAllDocument, Item:=Word.WdPrintOutItem.wdPrintDocumentWithMarkup, Copies:=1, PageType:=Word.WdPrintOutPages.wdPrintAllPages, Collate:=True, Background:=True, PrintToFile:=False, PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, PrintZoomPaperHeight:=0)

    'All done. Close this form.
    Me.Close()
End Sub

Я ожидал, что это будет печать на лоток 5 принтера с размерами 10 "x 13" в альбомной ориентации.Печать из Word напрямую, закомментировав метод .PrintOut и нажав кнопку «Печать» в Word, делает это, но метод .PrintOut заставляет принтер пытаться печатать на бумаге размером 8,5 x 11 дюймов.

...