Изменить ширину и высоту области печати - PullRequest
0 голосов
/ 31 января 2019

Я создаю FixedDocument из FrameworkElement.FrameworkElement может иметь разные размеры (например, ширина = 300 и высота = 1800).Я хотел бы указать размеры принтера для размеров FrameworkElement:

public static FixedDocument GetFixedDocument(FrameworkElement toPrint, System.Windows.Controls.PrintDialog printDialog)
{
    //This changes the PageMediaSize, but has no effect after printDialog
    printDialog.PrintTicket.PageMediaSize = new System.Printing.PageMediaSize(toPrint.Width, toPrint.Height);
    printDialog.PrintQueue.DefaultPrintTicket.PageMediaSize = new System.Printing.PageMediaSize(toPrint.Width, toPrint.Height);

    return toPrint;
}

Поскольку printDialog.PrintableAreaWidth и printDialog.PrintableAreaHeight`` доступны только для чтения, я не могу изменить размер по умолчанию дляпринтер (PaperKind всегда A4):

enter image description here

PrintPreview показывает FixedDocument как одну страницу, но при печати фактического документа все еще используются нестандартные размеры.

    public static void ShowPrintPreview(FixedDocument fixedDoc)
    {
        var wnd = new Window();
        var viewer = new DocumentViewer();
        viewer.Document = fixedDoc;
        wnd.Content = viewer;
        wnd.ShowDialog();
    }

    public static void PrintNoPreview(System.Windows.Controls.PrintDialog printDialog, System.Windows.Documents.FixedDocument fixedDoc)
    {
        printDialog.PrintDocument(fixedDoc.DocumentPaginator, "MyGeneratedPDF");
    }

[В качестве альтернативы, если на этот вопрос невозможно ответить, я хотел бы создать PDF-файл из FixedDocument]

...