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

Popular posts from this blog

Get Current Worker data in d365 fo x++

Table Level Event Handler in d365 fo x++