Genate Report In Base64 in D365fox++
class that convert report into base64str
class DSVSOrderReceiptController extends SrsReportRunController
{
DSVSOrderNo orderNo;
Notes base64string;
public DSVSOrderNo parmorderno(DSVSOrderNo _orderno = orderno)
{
orderno = _orderno;
return orderno;
}
public static void Main(Args _args)
{
DSVSOrderReceiptController controller = new DSVSOrderReceiptController();
controller.runReportandGenerateBase64();
}
public void runReportandGenerateBase64()
{
DSVSOrderReceiptController controller = new DSVSOrderReceiptController();
SRSPrintDestinationSettings settings;
Array arrayFiles;
SRSProxy srsProxy;
Map reportParametersMap;
BinData bindataLoc = new BinData();
System.Byte[] reportBytes = new System.Byte[0]();
SRSReportRunService srsReportRunService = new SrsReportRunService();
SRSReportExecutionInfo executionInfo = new SRSReportExecutionInfo();
Microsoft.Dynamics.AX.Framework.Reporting.Shared.ReportingService.ParameterValue[] parameterValueArray;
Filename fileName = "OrderReceiptreport" + '.pdf';
controller.parmReportName(ssrsReportStr(DSVSOrderReceiptReport, PrecisionDesign1));
controller.parmShowDialog(false);
controller.parmLoadFromSysLastValue(false);
settings = controller.parmReportContract().parmPrintSettings();
settings.printMediumType(SRSPrintMediumType::File);
settings.fileName(fileName);
settings.fileFormat(SRSReportFileFormat::PDF);
// Below is a part of code responsible for rendering the report
controller.parmReportContract().parmReportServerConfig(SRSConfiguration::getDefaultServerConfiguration());
controller.parmReportContract().parmReportExecutionInfo(executionInfo);
srsReportRunService.getReportDataContract(controller.parmreportcontract().parmReportName());
srsReportRunService.preRunReport(controller.parmreportcontract());
reportParametersMap = srsReportRunService.createParamMapFromContract(controller.parmReportContract());
parameterValueArray = SrsReportRunUtil::getParameterValueArray(reportParametersMap);
srsProxy = SRSProxy::constructWithConfiguration(controller.parmReportContract().parmReportServerConfig());
// Actual rendering to byte array
reportBytes = srsproxy.renderReportToByteArray(controller.parmreportcontract().parmreportpath(),
parameterValueArray,
settings.fileFormat(),
settings.deviceinfo());
// You can also convert the report Bytes into an xpp BinData object if needed
container binData;
Binary binaryData;
System.IO.MemoryStream mstream = new System.IO.MemoryStream(reportBytes);
binaryData = Binary::constructFromMemoryStream(mstream);
if (binaryData)
{
binData = binaryData.getContainer();
}
// Load Bindata with binary data
bindataLoc.setBinaryData(binaryData); // Replace <your_bindata_here> with your actual Bindata variable
// Convert Bindata to Base64 string
Notes base64Str = bindataLoc.base64Encode();//bindataLoc.encodeBase64();
controller.getbase64(base64Str);
Info(base64Str);
}
protected void prePromptModifyContract()
{
Query query;
QueryBuildDataSource QBDS;
query = new Query(querystr (DSVSOrderReceiptQry));
QBDS = query.datasourcetable(tablenum(DSVSSalesOrderHeader));
QBDS.addRange(fieldNum(DSVSSalesOrderHeader, OrderNo)).value(SysQuery::value(orderNo));
}
public Notes getbase64( Notes _base64string = base64string)
{
base64string=_base64string;
return base64string;
}
}
Comments
Post a Comment