1

私は初心者で、 InfragisticsXamdatagridからPDFを生成したいと考えています。ただし、Infragistics はこの機能を提供しないため、 XamdatagridのXPSを生成し、それをプログラムでXPSに変換したいと考えています。それを行うための可能な回避策とサードパーティのツールは何ですか?

4

3 に答える 3

2

If you export the xamDataGrid in an excel file then is pretty simple to use Excel.Interop and ask excel to export its workbook in PDF format

// 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;
    }
}
于 2012-08-24T12:08:56.953 に答える
0

GhostXPS などのサードパーティ ソフトウェアを使用することもできます。 http://www.ghostscript.com/download/gxpsdnld.html

正しい引数を指定して変換プロセスを開始するだけで、PDF が生成されます。欠点は、ファイルを一時的にディスクに保存し、リターン コードを確認する必要があることです。また、GNU ライセンスに違反していないことを確認してください

于 2012-08-23T14:25:15.740 に答える
0

pdfのみを作成したい場合。次に、最も簡単なことは、マシンに任意のpdfプリンターを設置することです。PDF クリエーターのような もので、 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);
于 2012-08-23T13:31:21.877 に答える