有没有办法在使用WPF XPS查看器打印XPS时设置默认布局方向?
我的固定文档XPS的页面方向设置为横向,页面媒体大小的宽度大于其高度,并且在查看器中正确显示为横向。只是当你点击打印按钮时,打印对话框首选项被默认为肖像,它就会这样打印。
我不想改变用户的默认打印设置,我更希望XPS查看器可以打印XPS,因为它是设计用于打印的。
发布于 2015-11-24 21:46:55
填写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)
{
...
}发布于 2009-02-15 20:10:51
这不是MXDW的真正问题,而是Windows上驱动程序的工作方式的问题。为特定会话保存用户选择。这意味着在第一次打印和退出应用程序之间打印时,您可以重复使用第一次打印设置。大多数打印机都是这样运行的,除非有人想出一种方法将这些信息保存在某个地方,并让用户跨会话重新使用它。
因此,我尝试破解GPD文件(打印机的打印信息通常存储在该文件中)。方向有两个可能的值: PORTRAIT和LANDSCAPE_CC270,缺省值设置为PORTRAIT。如下所示:
*%****************************************************************************** *%方向*%*********************************************************** *功能:方向{ *rcNameID:=ORIENTATION_DISPLAY *默认选项:纵向
*Option: PORTRAIT
{
*rcNameID: =PORTRAIT_DISPLAY
}
*Option: LANDSCAPE_CC270
{
*rcNameID: =LANDSCAPE_DISPLAY
}}
现在,如果我将交换缺省值更改为LANDSCAPE_CC270,打印首选项将停止显示(并且任何打印都将失败)。事实上,看起来,指定任何其他值都会保持缺省值为PORTRAIT。当然,微软正在做一些检查,以防止我们黑进这个驱动程序。看起来微软不希望任何人篡改它的设置:(
但您可以尝试更多地使用GPD值,看看是否会出现您喜欢的内容。还会继续黑客攻击。
警告:如果你不知道自己在做什么,GPD文件不应该被篡改。如果你还想继续,那就做个备份!
提示:它们存储在%WINDOWS%system32\spool\drivers\w32x86\3文件夹中。
发布于 2010-08-10 12:44:29
我相信在创建FixedDocument时,正确的方法是在维度大于宽度时在页面内容上设置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文档是否有帮助。
https://stackoverflow.com/questions/505839
复制相似问题