Tag: xpsdocument

XpsDocument GetFixedDocumentSequence为特定计算机生成的文件返回null

Solidworks生成“EDRWX”文件。 通常,这些是使用 Microsoft XPS查看器打开的 。 问题 : 应用程序使用.net XPSDocument打开它们并在打印之前对它们进行一些操作。 错误方法是“GetFixedDocumentSequence”。 它返回null,从特定计算机生成文件。 即使应用程序在特定计算机上运行,​​它也会这样做。 但它与其他计算机生成的文件一起工作正常。 当试图用XPS文档查看器打开文件时,它无法打开,说它无法打开。 但是,它确实在创建它的特定计算机上打开。 如果此计算机从Microsoft Word中打印正常的XPS文件,则其他计算机可以使用XPS文档查看器正常打开它。 此外,其他计算机生成的“EDRWX”文件可以在包含特定计算机的每台计算机上使用XPS文档查看器轻松打开。 更多规格: 特定的计算机在Windows 8.1下运行。 其他计算机在Windows 7下运行。 该应用程序使用.net Framework 4.0运行。 这是由特定计算机生成的“EDRWX”虚拟文件。 这是由其他计算机之一生成的“EDRWX”虚拟文件。 问题的原因是什么?如何解决? 旁注:我已经调查了将近3天……所以我对这个问题感到愤怒。 可能是你的眼睛可以看到我不再被吸入这么多了。 在我的挖掘中,我发现这两个文件之间存在差异。

从FlowDocument创建XPS文档并即时附加它

我有一个FlowDocument,我想转换为XPS文档并将其附加到电子邮件并将它们一起发送。 我正在使用此代码 public static MemoryStream FlowDocumentToXPS(FlowDocument flowDocument, int width, int height) { MemoryStream stream = new MemoryStream(); using (Package package = Package.Open(stream, FileMode.Create, FileAccess.ReadWrite)) { using (XpsDocument xpsDoc = new XpsDocument(package, CompressionOption.Maximum)) { XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false); DocumentPaginator paginator = ((IDocumentPaginatorSource)flowDocument).DocumentPaginator; paginator.PageSize = new System.Windows.Size(width, height); rsm.SaveAsXaml(paginator); rsm.Commit(); } } stream.Position = […]

实现DocumentPaginator时的空白页面

我正在尝试像这样实现一个Paginator: public class MyPaginator : DocumentPaginator{ // ommitting details… public override DocumentPage GetPage(int pageNumber) { DocumentPage page = new DocumentPage(canvas); return page; } } 它编译,运行,但页面是空白(白色)。 ‘canvas’是System.Windows.Controls.Canvas的一个实例。 当我把它放在像ScrollViewer这样的屏幕容器中时,它可以完美呈现。 XpsDocument _xpsDocument = CreateXpsDoc(myPaginatorInstance); 唯一有效的是页面的大小设置为canvas的大小。 我错过了什么?

将BlockUIContainer打印到XpsDocument / FixedDocument

题 如何打印具有BlockUIContainer的FlowDocument? 如何在FlowDocument上强制执行度量/更新/排列? 背景 我有一个生成的FlowDocument ,其中包含一些文本段落,其中一些Rectangle元素填充了来自资源字典的DrawingBrushes和带有自定义控件的BlockUIContainer 。 当文档转换为FixedDocument / XpsDocument时,在任何FlowDocument *控件中查看时,文档都会正确呈现,而Rectangle或BlockUIContainer元素都不会呈现。 我几乎可以肯定这是因为没有测量/安排控件,但是无法弄清楚如何在转换为XpsDocument之前强制执行。 我已经递归地走了LogicalTree并完成了以下操作, UIElement element = (UIElement)d; element.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity)); element.Arrange(new Rect(element.DesiredSize)); element.UpdateLayout(); 其中d是DependencyObject 。 我可以看到,这在调试器中以break-pointed为单位时设置ActualWidth和ActualHeight属性。 我已经尝试强制Dispatcher按照Will♦的建议进行渲染。 用于打印XpsDocument的代码 public class XpsDocumentConverter { public static XpsDocumentReference CreateXpsDocument(FlowDocument document) { // Need to clone the document so that the paginator can work FlowDocument clonedDocument = DocumentHelper.Clone(document); Uri […]

如何创建XPS文档?

我想创建一个用于存储和打印的XPS文档。 在我的程序中创建XPS文档的最简单方法是什么(例如,在其中包含一些带有一些数据的简单网格),并传递它?