Search This Blog

Friday, June 7, 2013

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

1 comment: