Tag: xps

从FixedDocumentSequence中获取FixedDocuments

相当简单: 我有一个XPSDocument,我正在从磁盘中取出。 我想从这个XpsDocument中获取FixedDocuments,但是因为我只能得到一个FixedDocumentSequence,所以我打了一个cropper,我无法弄清楚如何从这个序列中提取XpsDocuments。 到目前为止,我尝试过类似的东西: FixedDocument doc = (FixedDocument)myFixedDocSequence.References.First(); 演员阵容不起作用,但它说明了我想要实现的目标。

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天……所以我对这个问题感到愤怒。 可能是你的眼睛可以看到我不再被吸入这么多了。 在我的挖掘中,我发现这两个文件之间存在差异。

什么是XPS文件以及如何使用它们

我有一个简单的C#.net Web应用程序。 我正在使用XPS文件。 我使用了以下代码 private void button1_Click(object sender, EventArgs e) { try { string xpsFile = “D:\\Completed-Form.xps”; xpsToBmp(xpsFile); MessageBox.Show(“Done”); } catch (Exception ex) { MessageBox.Show (ex.Message); } } static public void xpsToBmp(string xpsFile) { XpsDocument xps = new XpsDocument(xpsFile, System.IO.FileAccess.Read); FixedDocumentSequence sequence = xps.GetFixedDocumentSequence(); for (int pageCount = 0; pageCount < sequence.DocumentPaginator.PageCount; ++pageCount) { DocumentPage […]

从XPS文档中提取单个页面

我需要拆分现有的XPS文档并创建一个新的XPS文档,只有一页原始页面。 我试图复制文档并从复制的文档中删除页面,但这很慢。 有没有更有效的方法来做到这一点? 请在C#中。 谢谢。 解决: public void Split(string originalDocument, string detinationDocument) { using (Package package = Package.Open(originalDocument, FileMode.Open, FileAccess.Read)) { using (Package packageDest = Package.Open(detinationDocument)) { string inMemoryPackageName = “memorystream://miXps.xps”; Uri packageUri = new Uri(inMemoryPackageName); PackageStore.AddPackage(packageUri, package); XpsDocument xpsDocument = new XpsDocument(package, CompressionOption.Maximum, inMemoryPackageName); XpsDocument xpsDocumentDest = new XpsDocument(packageDest, CompressionOption.Normal, detinationDocument); var fixedDocumentSequence = […]

实现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的大小。 我错过了什么?

以编程方式将XPS文件打印到物理打印机

我有一个C#WinForms应用程序。 用户上载.XPS文件并指定一些打印机设置(份数,纸盘等)。 程序需要以编程方式使用这些设置打印文档。 也就是说,不能打印用户交互。 我可以接近System.Printing AddJob方法。 ( https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/how-to-programmatically-print-xps-files )。 但是,我无法在此处定义特定设置,如纸张来源,份数等。 我更喜欢使用PrintDocument方法,但我无法弄清楚如何让PrintDocument渲染/打印XPS文档。 我看过这个资源, https://msdn.microsoft.com/en-us/library/system.drawing.printing.printdocument.printpage(v=vs.110).aspx ,但看不出我是怎么回事可以获取PrintPageEventHandler来呈现XPS文档。 关于我如何进行的任何想法? 非常感谢帮助! C#.NET 4.5 更新: 基于以下答案,我可以在添加作业时发送PrintTicket,如下所示: PrintTicket pt = printQueue.DefaultPrintTicket; pt.CopyCount = 2; // pt.InputBin = [ InputBin enum option ] printQueue.AddJob(“name”, “file”, false, pt); 我看不到为PrintTicket设置InputBin的任何简单方法。 InputBin是一个枚举,没有选项可以设置为其中一个可用的bin的名称。

以编程方式打印到PDF打印机

我正在寻找一个免费的开源.Net, 最好是C# ,pdf打印机,如CutePDF的Custom PDF Writer,具有编程访问权限 ,允许我将xps文档保存为pdf格式。 我找到了许多能够将xps文档转换为pdf格式的替代品,但它们不是开源的。 我很想知道是否有人知道一个允许我完成此任务的开源库。

如何使用C#检查文件是否为有效的XPS文件?

我有一个处理XPS文件的WinForms应用程序。 如何检查用户在打开的对话框中选择的文件是否是使用C#的有效XPS文件? 将有.XPS扩展名的文件不是真正的XPS文件。 由于XPS文件实际上是PKZIP格式,我可以检查PKZIP字节签名,但这会给ZIP存档带来误报。

如何将XPS文件转换为高质量的图像(而不是模糊的低分辨率)?

我正在尝试使用WPF转换XPS。 想法是这些图像可以加载silverlight 4,为此我使用以下代码: // XPS Document XpsDocument xpsDoc = new XpsDocument(xpsFileName, System.IO.FileAccess.Read); FixedDocumentSequence docSeq = xpsDoc.GetFixedDocumentSequence(); // The number of pages PageCount = docSeq.References[0].GetDocument(false).Pages.Count; DocumentPage sizePage = docSeq.DocumentPaginator.GetPage(0); PageHeight = sizePage.Size.Height; PageWidth = sizePage.Size.Width; // Scale dimensions from 96 dpi to 600 dpi. double scale = 300/ 96; // Convert a XPS page to a […]

C#中的点阵打印?

我正在尝试使用C#打印到Dot Matrix打印机(各种型号),目前我正在使用Win32 API(您可以在网上找到很多示例)调用将转义码直接从我的C#应用​​程序发送到打印机。 这很棒,但…… 我的问题是因为我正在生成转义码并且不依赖于Windows打印系统,打印输出无法发送到任何“普通”打印机或PDF打印驱动程序等。 (这现在导致问题,因为我们尝试使用Easy Print [基于XPS]在2008终端服务器上使用该应用程序] 问题是:如何使用C#打印格式化文档(预打印固定发票)到Dot Matrix打印机(Epson,Oki和Panasonic …各种型号)不使用直接打印,转义码等。 **只是为了澄清一下,我正在尝试像GDI +(System.Drawing.Printing)之类的东西,但问题是它很难,就像旧代码那样排队。 (旧代码绕过Windows驱动程序将字符直接发送到打印机。)有什么建议可以改进,以便他们可以使用GDI +,但仍像旧代码一样排队吗?