2009-02-03 47 views
1

當使用WPF XPS查看器打印XPS時,是否可以設置默認佈局方向?使用WPF XPS查看器打印XPS時的默認佈局方向

我的固定文檔XPS將其頁面方向設置爲橫向,頁面大小的寬度比其高度更長,並且它在查看器中正確顯示爲橫向。 它只是當你點擊打印按鈕時,打印對話框首選項默認爲肖像,並打印出來。

我寧可不必更改用戶的默認打印設置如果XPS Viewer將打印設計爲打印的XPS,我更喜歡它。

+0

I [回答](HTTP://計算器。(http://stackoverflow.com/questions/1003585/setting-pageorientation-for-the-wpf-documentviewer-printdialog/2066536#2066536) wpf-documentviewer -printdialog/2066536),希望有幫助? – mcw0933 2010-01-14 18:36:07

回答

0

填充PrintTicket的字段:

PrintDialog pd = new PrintDialog(); 
    PrintTicket pt = new PrintTicket(); 
    pt.PageOrientation = PageOrientation.Landscape; 
    pd.PrintTicket = pd.PrintQueue.MergeAndValidatePrintTicket(pd.PrintQueue.DefaultPrintTicket, pt).ValidatedPrintTicket; 
    if (pd.ShowDialog() == true) 
    { 
    ... 
    } 
-1

這不是MXDW的問題,而是驅動程序在Windows上運行的方式。用戶選擇被保存用於特定的會話。這意味着您可以在第一次打印和退出應用程序之間打印時重複使用第一次打印設置。大多數打印機都是這樣工作的,除非有人想出一種方法來保存這些信息,並讓用戶在各個會話中重複使用它。

因此,我試圖盜用GPD文件(打印機的打印信息通常存儲在該文件中)。方向有兩個可能的值:PORTRAIT和LANDSCAPE_CC270,默認設置爲PORTRAIT。見下:

*%***************************************** ************************************* *%定位 *%****** ************************************************** ********************** *特點:定位 { * rcNameID:= ORIENTATION_DISPLAY * DefaultOption:縱向

*Option: PORTRAIT 
{ 
    *rcNameID: =PORTRAIT_DISPLAY 
} 

*Option: LANDSCAPE_CC270 
{ 
    *rcNameID: =LANDSCAPE_DISPLAY 
} 

}

現在,如果我要更改默認值LANDSCAPE_CC270,t他的打印偏好不再出現(任何打印都會失敗)。實際上,看起來,指定任何其他值都將默認設置爲PORTRAIT。當然,MS是 做一些檢查,以防止我們黑客這個驅動程序。貌似MS不 希望任何人使用其設置:(

篡改但你可以嘗試與GPD調情值多一點,看看你喜歡的東西出現。將保持黑客多一點。

警告:!GPD文件不應該,如果你不知道你在做什麼,如果你 還是想繼續做一個備份被篡改

提示:它們存儲在文件夾%WINDOWS%system32\spool\drivers\w32x86\3

0

我相信創建Fixe時要做到這一點的正確方法dDocument在尺寸高於寬度時在頁面內容上設置RenderTransform = RotateTransform(90)。 例子:

var visualContent = new Image 
      { 
       Source = image, 
       Stretch = Stretch.Uniform 
      }; 
visualContent.RenderTransformOrigin = new Point(0.5, 0.5);  
visualContent.RenderTransform = new RotateTransform(90); 
FixedPage fixedPage = new FixedPage(); 
fixedPage.Children.Add(visualContent); 
var pageContent = new PageContent 
{ 
    Child = fixedPage 
}; 

不知道是否與然而預先存在的XPS文檔幫助。