Да. Используйте PrintTicket, например:
PrintDialog printDialog = new PrintDialog();
if(printDialog.ShowDialog()==true)
{
PrintTicket ticket = new PrintTicket();
ticket.PageOrientation = MyDocument.PaperSize.PageOrientation;
ticket.PageMediaSize = MyDocument.PaperSize.PageMediaSize;
XpsDocumentWriter writer = PrintQueue.CreateXpsDocumentWriter(printDialog.PrintQueue);
writer.WritingPrintTicketRequired += (s, printTicketEvent) => { printTicketEvent.CurrentPrintTicket = ticket; };
MyDocument.PrintTo(writer);
}
Вы также можете установить PrintTicket более напрямую и не использовать событие, но у меня возникли проблемы с совместимостью драйверов, из-за чего я сделал это вместо этого.