Я пытаюсь использовать печать WPF из PowerShell. Я нашел простой пример в VB.Net здесь :
'Create a new Run class, passing it the text.
' The Run class contains 1 line of text
Dim r As New Run(text)
'Create a new paragraph, passing it the new run class instance
Dim ph As New Paragraph(r)
'Create the document, passing a new paragraph
Dim doc As New FlowDocument(ph)
doc.PagePadding = New Thickness(100) 'Creates margin around the page
'Send the document to the printer
diag.PrintDocument( _
CType(doc, IDocumentPaginatorSource).DocumentPaginator, _
printCaption)
но я не могу преобразовать его в PowerShell. Вот моя попытка:
$run = New-Object System.Windows.Documents.Run('text')
$paragraph = New-Object System.Windows.Documents.Paragraph($run)
$flowDocument = New-Object System.Windows.Documents.FlowDocument($paragraph)
$thickness = New-Object System.Windows.Thickness(100)
$flowDocument.PagePadding = $thickness
$flowDocument -is [System.Windows.Documents.IDocumentPaginatorSource]
$source = $flowDocument -as [System.Windows.Documents.IDocumentPaginatorSource]
$source.DocumentPaginator -eq $null
$printDialog = New-Object System.Windows.Controls.PrintDialog
$printDialog.PrintDocument($source.DocumentPaginator, "test")
$ source.DocumentPaginator имеет значение null, и возникает исключение. (Работает код VB.Net)
[редактировать]
Вот еще одна попытка, которая не удалась:
Add-Type -Assembly 'ReachFramework'
$flowDocument = New-Object System.Windows.Documents.FlowDocument
$textRange = New-Object System.Windows.Documents.TextRange(
$flowDocument.ContentStart, $flowDocument.ContentEnd)
$textRange.Text = 'Text'
$xpsDocument = New-Object System.Windows.Xps.Packaging.XpsDocument(
"C:\scripts\test.xps", [System.IO.FileAccess]::ReadWrite)
$xpsDocumentWriter =
[System.Windows.Xps.Packaging.XpsDocument]::CreateXpsDocumentWriter(
$xpsDocument)
$source = $flowDocument -as [System.Windows.Documents.IDocumentPaginatorSource]
$xpsDocumentWriter.Write($source.DocumentPaginator)
$xpsDocument.Close()
Я пытался использовать одну из перегрузок XpsDocumentWriter.Write () для отправки FlowDocument на принтер, но не удалось, $ source.DocumentPaginator имеет значение null. Мне даже не удалось создать файл .xps и сохранить его.