2012-08-23 41 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許可證