gpt4 book ai didi

pdf - 将 SSRS 报告打印到文件 (.PDF)

转载 作者:行者123 更新时间:2023-12-04 21:16:45 24 4
gpt4 key购买 nike

我需要找到一种方法来将 SrsReport(在我的例子中是 SalesInvoice)作为 .PDF(或任何类型的文件)“打印”到特定位置。

为此,我修改了 SRSPrintDestinationSettings 以将 SalesInvoice-Report 输出为 .PDF:

settings = controller.parmReportContract().parmPrintSettings();
settings.printMediumType(SRSPrintMediumType::File);
settings.fileFormat(SRSReportFileFormat::PDF);
settings.overwriteFile(true);
settings.fileName(@'\\AXDEV\Bottomline\Test\test.pdf');

不知何故,这被忽略了,我收到了一封电子邮件,其中附有 .PDF 格式的报告。

例如,这将在 ax 2012 上运行,但不会为我打印成 PDF。

SRSPrintDestinationSettings     settings;
CustInvoiceJour custInvoiceJour;
SrsReportRunController controller = new SrsReportRunController();
PurchPurchaseOrderContract rdpContract = new PurchPurchaseOrderContract();
SalesInvoiceContract salesInvoiceContract = new SalesInvoiceContract();

select firstOnly1 * from custInvoiceJour where custInvoiceJour.SalesId != "";

// Define report and report design to use
controller.parmReportName(ssrsReportStr(SalesInvoice,Report));
// Use execution mode appropriate to your situation
controller.parmExecutionMode(SysOperationExecutionMode::Synchronous);


rdpContract.parmRecordId(custInvoiceJour.RecId);
controller.parmReportContract().parmRdpContract(rdpContract);

// Explicitly provide all required parameters
salesInvoiceContract.parmRecordId(custInvoiceJour.RecId); // Record id must be passed otherwise the report will be empty
controller.parmReportContract().parmRdpContract(salesInvoiceContract);
salesInvoiceContract.parmCountryRegionISOCode(SysCountryRegionCode::countryInfo()); // comment this code if tested in pre release

// Change print settings as needed
settings = controller.parmReportContract().parmPrintSettings();
settings.printMediumType(SRSPrintMediumType::File);
settings.fileFormat(SRSReportFileFormat::PDF);
settings.overwriteFile(true);
settings.fileName(@'\\AXDEV\Bottomline\Test\test.pdf');

//tokens = settings as SrsPrintDestinationTokens();
//controller.parmPrintDestinationTokens(null);

//Suppress report dialog
controller.parmShowDialog(false);
// Execute the report
controller.startOperation();

问题:这是将 srsReport 打印为 .pdf 的正确方法吗?我是否正确传递/设置了 printerSettings?哪里写着“发送电子邮件”?

编辑:代码运行良好。我们正在使用一家公司的外部代码,它根本没有实现这一点。使用 Alex Kwitny 的更简洁的代码

最佳答案

这是我的工作代码。我只是根据您的一瞥从头开始/内存中快速编写了这个代码,所以请比较差异。

我有两个标记为 (1) 和 (2) 的东西供您尝试使用您的代码,或者只是复制/粘贴我的代码。

static void JobSendToPDFInvoice(Args _args)
{
SrsReportRunController controller = new SrsReportRunController();
SRSPrintDestinationSettings settings;
CustInvoiceJour custInvoiceJour = CustInvoiceJour::findRecId(5637925275);
SalesInvoiceContract salesInvoiceContract = new SalesInvoiceContract();
Args args = new Args();

controller.parmReportName(ssrsReportStr(SalesInvoice, Report));
controller.parmExecutionMode(SysOperationExecutionMode::Synchronous);
controller.parmShowDialog(false);

salesInvoiceContract.parmRecordId(custInvoiceJour.RecId);
salesInvoiceContract.parmDocumentTitle(CustInvoiceJour.InvoiceId);
salesInvoiceContract.parmCountryRegionISOCode(SysCountryRegionCode::countryInfo());

// (1) Try by passing args
args.record(custInvoiceJour);
args.parmEnum(PrintCopyOriginal::Original);
args.parmEnumType(enumNum(PrintCopyOriginal));

controller.parmReportContract().parmRdpContract(salesInvoiceContract);
controller.parmArgs(args);

// (2) Try explicitly preventing loading from last value
// controller.parmLoadFromSysLastValue(false);

// Change print settings as needed
settings = controller.parmReportContract().parmPrintSettings();
settings.printMediumType(SRSPrintMediumType::File);
settings.fileFormat(SRSReportFileFormat::PDF);
settings.overwriteFile(true);
settings.fileName(@'C:\Temp\Invoice.pdf');


controller.startOperation();
}

关于pdf - 将 SSRS 报告打印到文件 (.PDF),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35433354/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com