Я создаю 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):
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]