Printing 使用WPF XPS查看器打印XPS时的默认布局方向
使用WPF XPS查看器打印XPS时,是否有方法设置默认布局方向 My fixed document XPS将其页面方向设置为横向,页面媒体大小的宽度大于其高度,并且在查看器中正确显示为横向。 只是当你点击“打印”按钮时,“打印”对话框的首选项会默认为“纵向”,并且它会按此方式打印Printing 使用WPF XPS查看器打印XPS时的默认布局方向,printing,xps,xpsdocument,xpsviewer,Printing,Xps,Xpsdocument,Xpsviewer,使用WPF XPS查看器打印XPS时,是否有方法设置默认布局方向 My fixed document XPS将其页面方向设置为横向,页面媒体大小的宽度大于其高度,并且在查看器中正确显示为横向。 只是当你点击“打印”按钮时,“打印”对话框的首选项会默认为“纵向”,并且它会按此方式打印 我不想改变用户的默认打印设置。如果XPS查看器能够按照设计的打印方式打印XPS,我更愿意这样做。这不是MXDW的真正问题,而是驱动程序在Windows上的工作方式的问题。为特定会话保存用户选择。这意味着您可以在第一次
我不想改变用户的默认打印设置。如果XPS查看器能够按照设计的打印方式打印XPS,我更愿意这样做。这不是MXDW的真正问题,而是驱动程序在Windows上的工作方式的问题。为特定会话保存用户选择。这意味着您可以在第一次打印和退出应用程序之间进行打印时重用firs打印设置。大多数打印机都是这样工作的,除非有人想出一种方法将这些信息保存在某个地方,并让用户在会话中重复使用 因此,我尝试破解GPD文件(通常存储打印机的打印信息)。方向有两个可能的值:纵向和横向,默认设置为纵向。见下文: *%****************************************************************************** *%定向 *%****************************************************************************** *特色:定位 { *rcNameID:=方向\显示 *默认选项:肖像
*Option: PORTRAIT
{
*rcNameID: =PORTRAIT_DISPLAY
}
*Option: LANDSCAPE_CC270
{
*rcNameID: =LANDSCAPE_DISPLAY
}
}
现在,如果我将swap的默认值更改为scape_CC270,打印首选项将停止出现(任何打印都将失败)。事实上,似乎指定任何其他值都会将默认值保留为“纵向”。当然是的
做一些检查以防止我们攻击这个司机。看起来MS没有
希望任何人篡改其设置:(
但你可以试着用GPD值调情一点,看看是否有你喜欢的东西出现。我会继续黑客多一点
警告:如果你不知道自己在做什么,GPD文件不应该被篡改
还想继续做备份
提示:它们存储在
%WINDOWS%system32\spool\drivers\w32x86\3
文件夹中。我认为在创建固定文档时,正确的方法是在页面内容上设置RenderTransform=RotateTransform(90),当维度高于其宽度时。
例如:
但是,不确定这是否有助于预先存在的XPS文档。填写打印票据的字段:
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)
{
...
}
我这个,希望能有所帮助?
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)
{
...
}
<Grid Margin="0,0,-8,-8">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="50"/>
</Grid.RowDefinitions>
<FlowDocumentScrollViewer Name="printpanel" HorizontalAlignment="Left" Width="959" FontFamily="Arial" Margin="0,-10,0,10">
<FlowDocument x:Name="FD">
<BlockUIContainer>
<Canvas>
<Label x:Name="lblReceipt" Visibility="Visible" Content="Receipt No." HorizontalAlignment="Left" VerticalAlignment="Top" Canvas.Top="178" FontSize="12" Canvas.Left="60"/>
<Label x:Name="txtReceiptNo" BorderThickness="2" BorderBrush="Black" HorizontalAlignment="Left" Padding="10,3,3,0" Height="23" VerticalAlignment="Top" Width="200" FontSize="12" Canvas.Left="187" Canvas.Top="177" FontFamily="Arial"/>
<Label x:Name="lblmemNo" Visibility="Visible" Content="Membership No." HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="12" Canvas.Left="462" Canvas.Top="177"/>
<Label x:Name="txtMembershipNo" BorderThickness="2" BorderBrush="Black" HorizontalAlignment="Left" Padding="10,3,3,0" Height="23" VerticalAlignment="Top" Width="177" FontSize="12" Canvas.Left="604" Canvas.Top="177" FontFamily="Arial">
</Label>
<Label x:Name="lblAuthCentr" Visibility="Visible" Content="Authorised Center." HorizontalAlignment="Left" VerticalAlignment="Top" Canvas.Left="60" Canvas.Top="221" FontSize="12"/>
<TextBox x:Name="txtAuthCentr" HorizontalAlignment="Left" TextWrapping="WrapWithOverflow" Padding="10,3,3,0" Height="38" VerticalAlignment="Top" Width="219" FontSize="12" Canvas.Left="238" Canvas.Top="219" FontFamily="Arial"/>
<Label x:Name="lblSector" Visibility="Visible" Content="Sector." HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="12" Canvas.Left="492" Canvas.Top="220"/>
<Label x:Name="txtSector" BorderThickness="2" BorderBrush="Black" HorizontalAlignment="Left" Padding="10,3,3,0" Height="23" VerticalAlignment="Top" Width="115" FontSize="12" Canvas.Left="567" Canvas.Top="220" FontFamily="Arial"/>
</Canvas>
</BlockUIContainer>
</FlowDocument>
</FlowDocumentScrollViewer>
<Button Name="btnOk" Content="Print" Height="30" Grid.Row="1" Click="btnOk_Click" Margin="355,0,404,0"></Button>
</Grid>
private void btnOk_Click(object sender, RoutedEventArgs e)
{
if (File.Exists("printPreview.xps"))
{
File.Delete("printPreview.xps");
}
var xpsDocument = new XpsDocument("printPreview.xps", FileAccess.ReadWrite);
XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(xpsDocument);
DocumentPaginator docPage;
FD.PageWidth = 1100; // set FlowDocument Width
FD.PageHeight = 600; // set FlowDocument Height
docPage = ((IDocumentPaginatorSource)FD).DocumentPaginator;
writer.Write(docPage);
Document = xpsDocument.GetFixedDocumentSequence();
this.Close();
xpsDocument.Close();
var windows = new PrintWindow(Document);
windows.ShowDialog();
}