首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用WPF XPS查看器打印XPS时的默认布局方向

使用WPF XPS查看器打印XPS时的默认布局方向
EN

Stack Overflow用户
提问于 2009-02-03 02:30:25
回答 3查看 4.7K关注 0票数 2

有没有办法在使用WPF XPS查看器打印XPS时设置默认布局方向?

我的固定文档XPS的页面方向设置为横向,页面媒体大小的宽度大于其高度,并且在查看器中正确显示为横向。只是当你点击打印按钮时,打印对话框首选项被默认为肖像,它就会这样打印。

我不想改变用户的默认打印设置,我更希望XPS查看器可以打印XPS,因为它是设计用于打印的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-11-24 21:46:55

填写PrintTicket的字段:

代码语言:javascript
复制
  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)
  {
    ...
  }
票数 3
EN

Stack Overflow用户

发布于 2009-02-15 20:10:51

这不是MXDW的真正问题,而是Windows上驱动程序的工作方式的问题。为特定会话保存用户选择。这意味着在第一次打印和退出应用程序之间打印时,您可以重复使用第一次打印设置。大多数打印机都是这样运行的,除非有人想出一种方法将这些信息保存在某个地方,并让用户跨会话重新使用它。

因此,我尝试破解GPD文件(打印机的打印信息通常存储在该文件中)。方向有两个可能的值: PORTRAIT和LANDSCAPE_CC270,缺省值设置为PORTRAIT。如下所示:

*%****************************************************************************** *%方向*%*********************************************************** *功能:方向{ *rcNameID:=ORIENTATION_DISPLAY *默认选项:纵向

代码语言:javascript
复制
*Option: PORTRAIT
{
    *rcNameID: =PORTRAIT_DISPLAY
}

*Option: LANDSCAPE_CC270
{
    *rcNameID: =LANDSCAPE_DISPLAY
}

}

现在,如果我将交换缺省值更改为LANDSCAPE_CC270,打印首选项将停止显示(并且任何打印都将失败)。事实上,看起来,指定任何其他值都会保持缺省值为PORTRAIT。当然,微软正在做一些检查,以防止我们黑进这个驱动程序。看起来微软不希望任何人篡改它的设置:(

但您可以尝试更多地使用GPD值,看看是否会出现您喜欢的内容。还会继续黑客攻击。

警告:如果你不知道自己在做什么,GPD文件不应该被篡改。如果你还想继续,那就做个备份!

提示:它们存储在%WINDOWS%system32\spool\drivers\w32x86\3文件夹中。

票数 0
EN

Stack Overflow用户

发布于 2010-08-10 12:44:29

我相信在创建FixedDocument时,正确的方法是在维度大于宽度时在页面内容上设置RenderTransform = RotateTransform(90)。示例:

代码语言:javascript
复制
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文档是否有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/505839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档