我正在根据FrameworkElement
创建一个FixedDocument。 FrameworkElement可以具有不同的大小(例如Width = 300和height = 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");
}
[或者,如果无法回答此问题,我想从FixedDocument生成PDF]