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....

How to add Filter functionality to Display method in dynamics AXAPTA

Hi Friends, Normally filters will work only in table fields but we can't do filters to display method. This below code will work for filters to display method also. Step 1: Go to the form design right click on particular control properties Auto Declaration No to Yes. Step 2: Override the context() method on the display method  . public void context() {     int             selectedMenu;     formrun         fr;     Args            ag;     Name            strtext;     querybuilddataSource qb1;     queryrun    qr;     query       q;     PopupMenu menu = new PopupMenu(element.hWnd());     int a = menu.insertItem('Filter By Field');     int b = menu.insertItem('Filter By Selection');     i...

Split string useing List in AX2009

static void Job277(Args _args) {     List _list = new List(Types::String);     Container packedList;     ListIterator iterator;     str cade = "Jhon*,smt*,and*,caro*";     ;     _list = Global::strSplit(cade,",");     iterator = new ListIterator(_list);     while(iterator.more())     {         packedList += iterator.value();         iterator.next();     }     info(conpeek(packedList,2));     info(strfmt("%1",conlen(packedList)));   }