Life is Really Short, Have Your Life!!

ござ先輩の主に技術的なメモ

WPFのXPSDocumentの横向き印字

Programmer's Report: WPF で横長(Landscape)印刷をするを参考にしつつ。

こんなコードで横向き出来ました。

var printQueue = new LocalPrintServer().GetPrintQueue(
    "YOUR PRINTER NAME");

PrintTicket ticket = printQueue.DefaultPrintTicket;
ticket.PageMediaSize = new PageMediaSize(PageMediaSizeName.ISOA4);
ticket.PageOrientation = PageOrientation.Landscape;
var xpsDocWriter = PrintQueue.CreateXpsDocumentWriter(printQueue);

FixedDocument fixedDoc = new FixedDocument();

for (int i = 1; i <= invoice.totalPage; i++)
{
    var fixedPage = new FixedPage();
    fixedPage.Width = 11.69 * 96;
    fixedPage.Height = 8.27 * 96;
    var pageContent = new PageContent();
    fixedPage.Children.Add(new MyUserControl());
    ((IAddChild)pageContent).AddChild(fixedPage);
    fixedDoc.Pages.Add(pageContent);

}
xpsDocWriter.Write(fixedDoc, ticket);
  • PrintTicketで横向きにする
  • サイズを決め打ちでfixedPageに与える。
  • XPSに書き込む時に、引数にTicketを与えておく。

以上です。