2012-08-23 33 views
1

我是一个新手,我想从Infragistics的Xamdatagrid产生PDF。然而,由于Infragistics不提供此功能,我已生成XPSXamdatagrid并且想要将其转换为XPS以编程方式。什么是可能的解决方法和第三方工具来做到这一点?出口XPS为PDF在C#

+1

看来你问题是这[一个副本](http://stackoverflow.com/questions/6395874/convert-xps-to-pdf-in-wpf-c-sharp-application) – Steve

+1

@Steve是,但提供的答案是似乎没有帮助。 –

+0

作为一种替代方法,您可以导出为Excel文件,如[http://www.infragistics.com/products/wpf/sample/data-grid/export-to-excel],那么它很容易使用Excel.Interop从Excel文件中创建一个PDF。如果你喜欢这个想法,我可以把Excel.Interop所需的代码作为答案。 – Steve

回答

2

如果您在Excel导出xamDataGrid文件则是非常简单的使用Excel.Interop并要求练成其工作簿导出为PDF格式

// Export an excel workbok in PDF format with landscape orientation 
private static void ExportWorkbookToPDF(string workbook, string output) 
{ 
    Microsoft.Office.Interop.Excel.Application excelApplication = 
        new Microsoft.Office.Interop.Excel.Application(); 
    excelApplication.ScreenUpdating = false; 
    excelApplication.DisplayAlerts = false; 
    excelApplication.Visible = false; 

    Microsoft.Office.Interop.Excel.Workbook excelWorkbook = 
        excelApplication.Workbooks.Open(workbook); 

    if (excelWorkbook == null) 
    { 
     excelApplication.Quit(); 
     excelApplication = null; 
     excelWorkbook = null; 
     throw new NullReferenceException("Cannot create new excel workbook."); 
    } 
    try 
    { 
     ((Microsoft.Office.Interop.Excel._Worksheet)excelWorkbook.ActiveSheet).PageSetup.Orientation = 
       Microsoft.Office.Interop.Excel.XlPageOrientation.xlLandscape; 
     excelWorkbook.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, output); 
    } 
    finally 
    { 
     excelWorkbook.Close(); 
     excelApplication.Quit(); 
     excelApplication = null; 
     excelWorkbook = null; 
    } 
} 
0

如果你想创建只有pdf。那么最简单的东西在机器上有任何pdf打印机。像PDF Creater之类的东西,然后在XamDataGrid上调用像下面的打印东西。

确保选择的打印机选择对话框中的PDF打印机。

   // 1. Create Report object 
      Report reportObj = new Report(); 

      // 2. Create EmbeddedVisualReportSection section. 
      // Put the grid you want to print as a parameter of section's constructor 
      EmbeddedVisualReportSection section = new EmbeddedVisualReportSection(xamdg); 

      // 3. Add created section to report's section collection 
      reportObj.Sections.Add(section); 

      // Optional. If you have progress indicator set its Report property to created report 
      // progressInfo.Report = reportObj; 

      // 4. Call print method 
      reportObj.Print(true, false); 
0

您也可以使用第三方软件,如GhostXPS。 http://www.ghostscript.com/download/gxpsdnld.html

只需用正确的参数启动转换过程,它就会为您生成PDF。缺点是您必须将文件临时保存到磁盘并检查返回代码。另外,还要确保你是不是违反了GNU许可证