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