Skip to main content

Convert word Documents into PDF report [using X++ in Dynamics AX 2009]

Hi Friends,
This is the way we can convert word format report into PDF in ax2009

static void dsiple_PDS(Args _args)
{
    Args args;
    ReportRun rr;
    str reportName = "ReportName";
    PurchRFQLine rfqLineTable;
    str myPath;
    str pdfFileName;
    int i;
    COM wordApplication;
    COM wordDocuments;
    COM wordDocument;
    COM wordRange;
    str a[];
    str path;
    str pdfPath;
    str finalPath;
    int length;
    int minus;
    ;
    i = 1;
    myPath = winApi::getTempPath();
    info(myPath);
    args = new Args(reportName);
    args.caller(rr);
    //rr = new reportRun(args);
    while select  rfqLineTable where rfqLineTable.RFQId == "00039237_183"
    {

       // pdfFileName = myPath + strfmt("test%1.pdf",i);
        args.record(rfqLineTable);
        rr = new reportRun(args);
        rr.query().interactive(false);
        rr.report().interactive(false);

        rr.setTarget(printMedium::File);
        rr.printJobSettings().setTarget(PrintMedium::File);
        rr.printJobSettings().preferredTarget(PrintMedium::File);
        rr.printJobSettings().format(PrintFormat::RTF);    // Now Report format is word
        rr.printJobSettings().warnIfFileExists(false);
        rr.printJobSettings().suppressScalingMessage(true);
        pdfFileName = myPath + strfmt("test%1.doc",i); // reports names are test 1,2…
        rr.printJobSettings().fileName(pdfFileName);
        a[i] =  pdfFileName; // All the Reports are stored into Array
        rr.init(); 
        rr.run();

        rr.finalize();

        wordApplication = new COM("word.application");
        wordDocuments = wordApplication.Documents();
        wordDocument = wordDocuments.Open(a[i]);//Open all the Reports
        length = strlen(pdfFileName);// Calculate the Length of the file
        minus = length - 3; //removing last 3 digits(DOC)
  
        pdfPath = strdel(pdfFileName,minus,4);//Delete  from file
        finalPath = pdfPath + ".pdf"; //Adding 3 digits to file path

         wordDocument.ExportAsFixedFormat(finalPath, 17);
        wordDocument.close();
        wordApplication.quit();
        WinAPI::deleteFile(pdfFileName);
        i++;
    }

 }
Happy
Daxing..

Comments

Post a Comment

Popular posts from this blog

Using File path on a form getting Error in Axapta

Hi Folks, After a long time am coming  back to posting few new things here for AX Developer... When we want to select the file path in form level. Normally what we will do create one EDT and extends with filepath (EDT), but that time when you are trying to select the path we will get error like stack-trace/Error message .Don’t worry there is no problem with your ax application. Simple we need to provide the method to the form like filepathLookUpTitle (). Below method we need to add it into form level methods, i.e. str filePathLookupTitle() {     return "Select document folder"; } Thanks Happy Daxing....

AIF (Endpoint) Error : The user is not authorized to perform this action.

"The user is not authorized to perform this action."  We started getting this error message in our AX 2009 System, when ever we try to consume an XML file using an  Endpoint   thru a  File System  Channel to create a  Sales Order. We did not made any code changes / setup changes, but all of the sudden started getting this error. Solutions : 1. Validate the "SourceEndpointUser". in inbound XML  The User ID should be a valid user Id in DAX, in GNS Active Directory and the "\" should be back slash in the XML file or where you use this combination in entire process or setup. ex : Domain \ User Id. In our case when we had the above error, the SourceEndPointUser user id was deleted from the Active Directory in GNS, so we added it back to Active Directory then it solved the problem. NOTE : If nothing wrong with the User ID, try to add the user id in "Users" tab in Endpoints form for that End Point used by the process. 2. Verify th...