Flex 4 - Generate PDF - AlivePDF

Hello all.
I am in need of creating PDF documents from a flash project.  THe flash project needs to be using the latest flex 4. And i will be sing the <s:Application> tags.
I grabbed an example from "Tour de Flex"  but it was built using <mx:Application>. The code for this example is here
<?xml version="1.0" encoding="utf-8"?>
<mx:Application  xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" height="100%"
     viewSourceURL="srcview/index.html" backgroundColor="0x000000" layout="absolute">
    <mx:Script>
        <![CDATA[
            import org.alivepdf.pages.Page;
            import org.alivepdf.pdf.PDF;
            import org.alivepdf.layout.Orientation;
            import org.alivepdf.layout.Size;
            import org.alivepdf.layout.Unit;
            import org.alivepdf.display.Display;
            import org.alivepdf.saving.Method;
            import org.alivepdf.fonts.FontFamily;
            import org.alivepdf.fonts.Style;
            import org.alivepdf.colors.RGBColor;
            import mx.utils.UIDUtil;
            protected var claimPDF:PDF;
            [Embed(source="assets/Insuricorp-Logo.jpg", mimeType="application/octet-stream" )]
            protected var jpgBytes:Class;
            protected function savePDF(e:MouseEvent):void
                claimPDF = new PDF(Orientation.LANDSCAPE, Unit.MM, Size.LETTER);
                claimPDF.setDisplayMode (Display.FULL_WIDTH);
                claimPDF.addPage();
                claimPDF.addImageStream(new jpgBytes() as ByteArray, 5, 5, 0, 0, 1);
                claimPDF.setFont(FontFamily.ARIAL , Style.NORMAL, 12);
                claimPDF.addText("Claimant Name: " + this.firstName.text + " " + lastName.text,10,40);
                claimPDF.addText("Date: " + this.date.text,10,50);
                claimPDF.addTextNote(48,45,100,2,"Claim Filed on: " + this.date.text + " today's date: " + new Date());
                claimPDF.addText("Policy #: " + this.policyNum.text,10,60);
                claimPDF.addText("Contact #: " + this.contact.text,10,70);
                claimPDF.addText(this.claimNum.text,10,80);
                claimPDF.addText("Claim Description:",10,90);
                claimPDF.setXY(10,95);
                claimPDF.addMultiCell(200,5,desc.text);
                // HERE IS HOW TO SAVE FROM FLASH PLAYER 10 OR GREATER. THIS IS USED FOR THIS SAMPLE.
                var bytes:ByteArray = claimPDF.save(Method.LOCAL);
                var f:FileReference = new FileReference();
                f.save(bytes,"tourdeflex-pdf-sample.pdf");
                // HERE IS HOW TO SAVE FROM AN AIR APP
                var fs:FileStream = new FileStream();
                var file: File = File.desktopDirectory.resolvePath("tourdeflex-pdf-sample.pdf");
                fs.open(file, FileMode.WRITE);
                var pdfBytes:ByteArray = claimPDF.savePDF(Method.LOCAL);
                fs.writeBytes(pdfBytes);
                fs.close();
                 // HERE IS HOW TO SAVE FROM FLEX APP RUNNING FLASH PLAYER < 10
                 /* NOTE: To save the PDF from a Flex application if running Flash Player version < 10, you need to call a server-side
                          script as the 2nd parameter of the save call. More information about this can be found here:
                          http://alivepdf.bytearray.org/?p=17
                claimPDF.save( ethod.REMOTE, "http://alivepdf.bytearray.org/wp-content/demos/create.php", "tourdeflex-pdf-sample.pdf");*/
            protected function submitClaimNum():void
                claimNum.text='Claim # Assigned: '+ UIDUtil.createUID();//just generate a random id for sample purposes
                this.savePDFBtn.visible=true;
        ]]>
    </mx:Script>
    <mx:Style>
        FormItem, Label, Button {
            color: #FFFFFF;
        TextInput, DateField {
            color: #000000;
    </mx:Style>   
    <mx:Label top="10" left="10" text="Input information and press 'File Claim' to get assigned claim #, then press Save to PDF." color="0xCCCCCC"/>   
     <mx:Label fontSize="18" text="Insurance Claim Form" left="10" top="30"/>
    <mx:HBox width="100%" height="100%" top="40" left="10" color="0x000000">
        <mx:Form id="form1" width="283" height="300">
            <mx:FormItem label="First Name:">
                <mx:TextInput id="firstName"/>
            </mx:FormItem>
            <mx:FormItem label="Last Name:">
                <mx:TextInput id="lastName"/>
            </mx:FormItem>
            <mx:FormItem label="Date:">
                <mx:DateField id="date" />
            </mx:FormItem>
            <mx:FormItem label="Policy #:">
                <mx:TextInput id="policyNum" />
            </mx:FormItem>
            <mx:FormItem label="Contact #:">
                <mx:TextInput id="contact" maxChars="12"/>
            </mx:FormItem>
        </mx:Form>   
        <mx:Canvas top="10" left="10" width="300" height="100%">
            <mx:Label text="Description:" y="2"/>
            <mx:TextArea id="desc" y="18" height="133" width="205"/>   
        </mx:Canvas>
    </mx:HBox>
    <mx:HBox top="205" left="185">
        <mx:Button label="File Claim" click="submitClaimNum()"/>
        <mx:Button horizontalCenter="0" click="savePDF(event)" label="Save to PDF" id="savePDFBtn" visible="false"/>
    </mx:HBox>
    <mx:Label id="claimNum" top="238" left="83"/>
</mx:Application>
SO i tried changing it to <s:Application>  but i get a load of errors saying stuff isnt supported etc etc.
My main question is -  Does flex 4 and <s:Application> support AlivePDF or is there another way to create PDF documents?
My code for the application where i have tried to change it to the latest flex version is as follows
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <fx:Script>
        <![CDATA[
        import org.alivepdf.pages.Page;
        import org.alivepdf.pdf.PDF;
        import org.alivepdf.layout.Orientation;
        import org.alivepdf.layout.Size;
        import org.alivepdf.layout.Unit;
        import org.alivepdf.display.Display;
        import org.alivepdf.saving.Method;
        import org.alivepdf.fonts.FontFamily;
        import org.alivepdf.fonts.Style;
        import org.alivepdf.colors.RGBColor;
        import mx.utils.UIDUtil;
        protected var claimPDF:PDF;
        [Embed(source="assets/Insuricorp-Logo.jpg", mimeType="application/octet-stream" )]
        protected var jpgBytes:Class;
        protected function savePDF(e:MouseEvent):void
        claimPDF = new PDF(Orientation.LANDSCAPE, Unit.MM, Size.LETTER);
        claimPDF.setDisplayMode (Display.FULL_WIDTH);
        claimPDF.addPage();
        claimPDF.addImageStream(new jpgBytes() as ByteArray, 5, 5, 0, 0, 1);
        claimPDF.setFont(FontFamily.ARIAL , Style.NORMAL, 12);
        claimPDF.addText("Claimant Name: " + this.firstName.text + " " + lastName.text,10,40);
        claimPDF.addText("Date: " + this.date.text,10,50);
        claimPDF.addTextNote(48,45,100,2,"Claim Filed on: " + this.date.text + " today's date: " + new Date());
        claimPDF.addText("Policy #: " + this.policyNum.text,10,60);
        claimPDF.addText("Contact #: " + this.contact.text,10,70);
        claimPDF.addText(this.claimNum.text,10,80);
        claimPDF.addText("Claim Description:",10,90);
        claimPDF.setXY(10,95);
        claimPDF.addMultiCell(200,5,desc.text);
        // HERE IS HOW TO SAVE FROM FLASH PLAYER 10 OR GREATER. THIS IS USED FOR THIS SAMPLE.
        var bytes:ByteArray = claimPDF.save(Method.LOCAL);
        var f:FileReference = new FileReference();
        f.save(bytes,"tourdeflex-pdf-sample.pdf");
        // HERE IS HOW TO SAVE FROM AN AIR APP
        var fs:FileStream = new FileStream();
        var file: File = File.desktopDirectory.resolvePath("tourdeflex-pdf-sample.pdf");
        fs.open(file, FileMode.WRITE);
        var pdfBytes:ByteArray = claimPDF.savePDF(Method.LOCAL);
        fs.writeBytes(pdfBytes);
        fs.close();
        // HERE IS HOW TO SAVE FROM FLEX APP RUNNING FLASH PLAYER < 10
        /* NOTE: To save the PDF from a Flex application if running Flash Player version < 10, you need to call a server-side
        script as the 2nd parameter of the save call. More information about this can be found here:
        http://alivepdf.bytearray.org/?p=17
        claimPDF.save( ethod.REMOTE, "http://alivepdf.bytearray.org/wp-content/demos/create.php", "tourdeflex-pdf-sample.pdf");*/
        protected function submitClaimNum():void
        claimNum.text='Claim # Assigned: '+ UIDUtil.createUID();//just generate a random id for sample purposes
        this.savePDFBtn.visible=true;
        ]]>
    </fx:Script>
    <mx:Label top="10" left="10" text="Input information and press 'File Claim' to get assigned claim #, then press Save to PDF." color="0xCCCCCC"/>   
    <mx:Label fontSize="18" text="Insurance Claim Form" left="10" top="30"/>
    <mx:HBox width="100%" height="100%" top="40" left="10" color="0x000000">
        <mx:Form id="form1" width="283" height="300">
            <mx:FormItem label="First Name:">
                <mx:TextInput id="firstName"/>
            </mx:FormItem>
            <mx:FormItem label="Last Name:">
                <mx:TextInput id="lastName"/>
            </mx:FormItem>
            <mx:FormItem label="Date:">
                <mx:DateField id="date" />
            </mx:FormItem>
            <mx:FormItem label="Policy #:">
                <mx:TextInput id="policyNum" />
            </mx:FormItem>
            <mx:FormItem label="Contact #:">
                <mx:TextInput id="contact" maxChars="12"/>
            </mx:FormItem>
        </mx:Form>   
        <mx:Canvas top="10" left="10" width="300" height="100%">
            <mx:Label text="Description:" y="2"/>
            <mx:TextArea id="desc" y="18" height="133" width="205"/>   
        </mx:Canvas>
    </mx:HBox>
    <mx:HBox top="205" left="185">
        <mx:Button label="File Claim" click="submitClaimNum()"/>
        <mx:Button horizontalCenter="0" click="savePDF(event)" label="Save to PDF" id="savePDFBtn" visible="false"/>
    </mx:HBox>
    <mx:Label id="claimNum" top="238" left="83"/>
</s:Application>
If anyone can help that would be great

Flex 4 supports alive pdf generation.
Follwing is the sample code of generating pdf.
var newPDF:PDF =
new PDF(Orientation.LANDSCAPE, Unit.MM, Size.LETTER);newPDF.setDisplayMode (Display.FULL_WIDTH);
newPDF.addPage();
newPDF.setFont(FontFamily.ARIAL , Style.BOLD, 18);
newPDF.addText(
"TITLE" ,100,10);newPDF.setFont(FontFamily.ARIAL , Style.NORMAL, 16);
newPDF.setXY(10,95);
newPDF.addImage(orderDG,50,20);
newPDF.addText(
"TEST 1 " ,50,120);newPDF.addText(
"TEST 2 ",150,120); 
var fileREf:FileStream = new FileStream();var file:File = File.applicationStorageDirectory.resolvePath('Test.pdf');
var stream:FileStream = new FileStream()
stream.open(file,FileMode.WRITE);
stream.writeBytes(newPDF.save(Method.LOCAL));
stream.close();

Similar Messages

  • Generating pdfs from Flex

    I'd like to generate pdf files from Flex. How is this done? How much does it cost? How flexible is it?

    http://lucamezzalira.com/2009/02/28/create-pdf-in-runtime-with-actionscript-3-alivepdf-zin c-or-air-flex-or-flash/ checkout this link..can be done freely

  • Generate PDF From Flex

    Hi All,
    I am doing a Reporting/Chart application in FLEX. we need to
    generate PDF from FLEX. Report data will be 5-10 pages, How we can
    do this? Please advise.
    Thanks
    Subhash

    Hi,
    thanks for your reply. I tried with alive pdf, but source
    code only AIR files. can we use this in web based flex?. How we can
    format the report like html code? I just see in alivepdf, its only
    linebyline display, not multiple columns? pls advise.
    thanks alot
    Subhash

  • Generating PDF from Flex BarChart

    Hello,
    I am new to Flex. Have been playing with creating Advanced
    Data Grid and Bar Charts for our application prototype and would
    like to explore how to create a PDF file of the BarChart or other
    charting components.
    The requirement is simple. We show the BarChart and a button
    to view it as a PDF. When the user presses the button, the PDF
    viewing dialog should come up and the user can opt to save the PDF
    or view it (the standard way a browser deals with the PDF).
    Have read blogs, this forum and LiveCycle docs but don't
    understand clearly how Flex communicates with
    LiveCycle ES (or PDF Generator) to display the PDF. Any ideas
    or tutorials that does this would be appreciated.
    Thanks,
    Kannan

    In order to generate a PDF document, you have to call a
    method on a Java remote object that uses the XFAHelper and pass it
    some arguments.
    I modified the PDFService example in the documentation so I
    can:
    1- specify any document as opposed to hardcoding the PDF
    template name
    2- write the PDF to a file as opposed to writing it in the
    user's session
    Here is the source:
    package com.mycompany.flex.remoteObjects;
    import java.io.File;
    import java.io.IOException;
    import org.w3c.dom.Document;
    import flex.acrobat.pdf.XFAHelper;
    import flex.messaging.FlexContext;
    import flex.messaging.util.UUIDUtils;
    public class PDFService
    public PDFService()
    public Object generatePDF(Document dataset, String
    PDFdocument) throws IOException
    // Open shell PDF
    String source =
    FlexContext.getServletContext().getRealPath("/pdfgen/" +
    PDFdocument);
    int index = source.indexOf("./");
    if(index != -1 )
    // Remove the ./ added by UNIX
    source = source.substring(0, index) + source.substring(index
    + 2, source.length());
    XFAHelper helper = new XFAHelper();
    helper.open(source);
    // Import XFA dataset
    helper.importDataset(dataset);
    // Create a unique ID
    String uuid = UUIDUtils.createUUID(false);
    source =
    FlexContext.getServletContext().getRealPath("/dynamic-pdf/" + uuid
    + "_" + PDFdocument);
    index = source.indexOf("./");
    if(index != -1 )
    // Remove the ./ added by UNIX
    source = source.substring(0, index) + source.substring(index
    + 2, source.length());
    // Create the file object
    File file = new File(source);
    // Save the file
    helper.save(file);
    // Close any resources
    helper.close();
    return (uuid + "_" + PDFdocument);
    pdfgen is the folder where my PDF template resides.
    dynamic-pdf is the folder where the generated PDF are saved.
    These two folders are located under flex.war at the first
    level.
    In Flex, I wrote a Cairngorm command that calls this remote
    object and displays the generated PDF:
    package com.mycompany.core.commands
    import com.adobe.cairngorm.commands.ICommand;
    import com.adobe.cairngorm.control.CairngormEvent;
    import com.adobe.cairngorm.business.Responder;
    import
    com.mycompany.core.business.GenerateAndOpenPDFDelegate;
    import
    com.mycompany.core.control.event.GenerateAndOpenPDFEvent;
    import com.mycompany.core.model.ModelLocator;
    import flash.net.navigateToURL;
    import flash.net.URLRequest;
    import mx.rpc.events.ResultEvent;
    import mx.rpc.events.FaultEvent;
    import mx.collections.*;
    import mx.core.Application;
    import mx.controls.Alert;
    public class GenerateAndOpenPDFCommand implements ICommand,
    Responder
    [Bindable]
    private var model:ModelLocator = ModelLocator.getInstance();
    public function GenerateAndOpenPDFCommand():void
    public function execute(event:CairngormEvent):void
    trace("Executing GenerateAndOpenPDFCommand...");
    var delegate : GenerateAndOpenPDFDelegate = new
    GenerateAndOpenPDFDelegate( this );
    var generateAndOpenPDFEvent : GenerateAndOpenPDFEvent =
    event as GenerateAndOpenPDFEvent;
    delegate.generateAndOpenPDF( generateAndOpenPDFEvent.pdfVO
    public function onResult( event : * = null ) : void
    var item:Object;
    var result:String = (event as ResultEvent).result as String;
    trace("GenerateAndOpenPDFCommand::onResult\n\n" + result);
    if (result)
    // Open the generated PDF in a new window
    navigateToURL(new URLRequest(ModelLocator.FLEX_URL +
    "dynamic-pdf/" + result), "_blank");
    // Hide the progress bar overlay
    Application.application.requestProgressBar.visible = false;
    Application.application.requestProgressBar.progressBar.source =
    null;
    Application.application.requestProgressBar.progressBar.label
    = this.model.languageDictionary["000012"];
    public function onFault( event : * = null ) : void
    // Hide the progress bar overlay
    Application.application.requestProgressBar.visible = false;
    Application.application.requestProgressBar.progressBar.source =
    null;
    // Debug
    Alert.show("GenerateAndOpenPDFCommand:\n\n" + (event as
    FaultEvent).message);
    FLEX_URL is created in this way some place else in the
    application:
    // Get the server URL from the Application's
    var server:String = Application.application.url;
    var index:uint = server.indexOf("Shell"); // Shell is the
    name of my app folder
    server = server.substring(0, index);
    // This is the flex.war/ URL
    ModelLocator.FLEX_URL = server;
    Of course, it would be better to save the PDF in the user's
    session as Adobe suggests, but I couldn't figure out how they use
    the PDFResourceServlet. First of all, I had to get its code.
    I had to decompile the java class files in the samples to get
    the source of the PDFResourceServlet as it is not in the
    documentation. Here it is:
    package com.mycompany.flex.remoteObjects;
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    public class PDFResourceServlet extends HttpServlet
    public PDFResourceServlet()
    protected void doGet(HttpServletRequest req,
    HttpServletResponse res)
    throws ServletException, IOException
    doPost(req, res);
    protected void doPost(HttpServletRequest req,
    HttpServletResponse res)
    throws ServletException, IOException
    String id = req.getParameter("id");
    if(id != null)
    HttpSession session = req.getSession(true);
    try
    byte bytes[] = (byte[])(byte[])session.getAttribute(id);
    if(bytes != null)
    res.setContentType("application/pdf");
    res.setContentLength(bytes.length);
    res.getOutputStream().write(bytes);
    } else
    res.setStatus(404);
    catch(Throwable t)
    System.err.println(t.getMessage());
    private static final long serialVersionUID =
    0x7180e4383e53d335L;

  • Generating PDF with Flex App (swf) embedded

    Hi,
    Does anyone has the experience in developing a Flex Application that is to be
    embedded into a PDF and open in the Reader/Acrobat for data capturing?
    How to embed the Flex Application (swf) into a PDF in a Livecycle process?
    With the XML data prepopulated into the PDF (embedded with a schema) and
    accessible by the Flex Application when open in Reader/Acrobat.
    Users will still be able to save the data filled in the Flex Application into the PDF
    and also to generate a XML data (with data capturing in the Flex App) to be
    submitted back to the server.
    How can these be achieve? Any example?
    Thanks alot.

    Just wondering, am I in the correct section of the forum? it seems like most of the discussions listed here are related to form designing rather than form rendering.
    I know this is FORMS ES section, just that i come across something that might related to the topic.
    Has anyone try out Adobe LiveCycle PDF Generator ES2 new features?
    Based on Adobe Upgrade Center http://www.adobe.com/products/livecycle/upgrade/pdfgenerator.html, it mentioned that PDF Generator ES2 has the ability to embed SWF files in PDF.
    But is this also applicable to Flex Application compiled SWF file?
    Does the generated PDF function as a normal interactive form?
    Able to retain its embedded schema and objects (scripts)?
    I will try to install LC ES2 to try out but need sometime to setup the system, really appreciate if someone can give me a head start.
    Thanks.

  • Flex to pdf

    hi.. i need to convert my grid and charts from flex to pdf.. how to create pdf template? so that i can import my data set into pdf template?? am using live cycle designer trail version.. or any alternative method to convert flex to pdf????
    thanks in advance.

    hi, I'm trying to just get this AlivePDF set up to try it out and use.
    I am migrating a Flex 2 app to Flex3 specifically in order to use AlivePDF. I downloaded and installed the latest stable build of the Flex 3 SDK and have now compiled the Flex 2 app (of course with some changes).
    I have tried to statically load the AlivePDF.swc (both the 0.1.4.9 and 0.1.5 versions). I've used mxmlc with both a command line argument "library-path += " and by modifying the flex_config.xml file adding a new "path-element".
    I've had the swc file both in a subdirectory of the application directory and in the same directory as the mxml file.
    I keep getting a compile error that it can't open the file "...\AlivePDF.swc".
    Help, anybody............

  • Generate pdf in FLEX2 on the klient

    I want to generate pdf in FLEX2 on the klient. How can I do
    that?

    Is your Flex app coming from a ColdFusion server? If so, you
    can open a <cfdocument> page by using URLRequest and let the
    server create your PDF document to the client side.
    There are also third party for .Net if you are not running on
    a ColdFusion server.
    Does this help?

  • Crystal Report generate PDF with J2EE problem

    Dear All
    I am having a great problem on generating PDF file by Crystal Report in J2EE.
    I have my J2EE application runs Crystal Report to generate PDF files.
    However for a report, i hit the following error (red color) when the PDF is generating.
    But is no problem for the other reports.
    Here is the code  that i used to generate the PDF
    My OS and Java version as follows
    Window 2003 server.
    Java 1.4.2_04
    Please Kindly Help
    Thanks very much
    public static void export(HttpServletRequest request, HttpServletResponse response, String reportPath, ArrayList paramList, ReportExportFormat outFormat) throws Exception{
         System.gc();
      HttpSession session = request.getSession(false);
      Object reportSource = getReportSource(request, reportPath);
      ReportExportControl exportControl = new ReportExportControl();
      if(paramList != null && paramList.size()>0){
       exportControl.setParameterFields(getParamFields(paramList));
      ExportOptions exportOptions = new ExportOptions();
      exportOptions.setExportFormatType(outFormat);
      PDFExportFormatOptions pdfexpopts = new PDFExportFormatOptions();
      exportOptions.setFormatOptions(pdfexpopts);
      exportControl.setReportSource(reportSource);
      exportControl.setExportOptions(exportOptions);
      exportControl.processHttpRequest(request, response, session.getServletContext(), null);
      exportControl.dispose();
        public static IReportSource getReportSource(HttpServletRequest request, String reportPath) throws Exception{
      ReportClientDocument oReportClientDocument = new ReportClientDocument();
      HttpSession session = request.getSession(false);
      oReportClientDocument.open(reportPath, 0);
      return oReportClientDocument.getReportSource();
    00:57:08,671 ERROR reportdefinition Thread-28 - Report printer was not valid, switching to default printer.
    00:57:08,687 ERROR objectformatter Thread-28 - com.crystaldecisions.reports.dataengine.k: |Y
    00:57:09,343 ERROR b Thread-28 - Disk Exporter: no output file was created by an exporter
    00:57:09,343 ERROR b Thread-28 - PdfExporter: caught Exception in PDFFormatter.finalizeFormatJob (from destination?); java.lang.IllegalArgumentException

    Hi,
    I have tried this code but stil the same.
    However i tried setup another tomcat and application in the other machine and the only job for  the application is exporting the report that has problem, then the error is gone.
    So i guess that is the memory size problem.
    Thanks for this
    One more question about the memory size between Tomcat and Crystal report.
    I have set in catalina.bat as
    set JAVA_OPTS = "-Xms2048M -Xmx1024M"
    and CRConfig as
    <JVMMaxHeap>1024000000</JVMMaxHeap>
    <JVMMinHeap>512000000</JVMMinHeap>
    1. Is that the correct setting.?
    2. The memory in the JAVA_OPT and is the MAX and MIN memory that java would use,
        then is the Max memory in CRConf is 1024M out of the java heap size or the application use another 1024 memory

  • "Error while generating pdf" error come when clicking on "Print Version "

    Hello ,
    When we execute Query in the Portal there is a 'Print version' button.
    When you select it, it opens up print dialog and click OK
    It is supposed to send 'pdf' stream to  Web browser client on end user but it is not able to generate the pdf .
    getting ' Error while generating pdf '
    I am working on BI 7.0 .
    The same is running fine in the Q Environment .But in Production we are getting this error .
    Thanks ,
    Rahul

    Hi,
    I think this is an ADS error. This is a reason why pdf's are not working. We had the same issue.
    You can check your installation:
    Usage of SAP NetWeaver BI Diagnostics & Support Desk Tool
    SAP Note Number: [937697|https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/oss_notes/sdn_oss_bw_bex/~form/handler%7b5f4150503d3030323030363832353030303030303031393732265f4556454e543d444953504c4159265f4e4e554d3d393337363937%7d]
    Exceptions: Prerequisites for messages in the area BI Java
    SAP Note Number: [1224043 |https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/oss_notes/sdn_oss_bw_bex/~form/handler%7b5f4150503d3030323030363832353030303030303031393732265f4556454e543d444953504c4159265f4e4e554d3d31323234303433%7d]
    Solution in our case was to update the SAPADS package to 7.00 17.1
    Regards
    Andreas

  • Error while generating PDF ( BEx Web Analyzer )

    Hi,
    Is there any limit to the number of pages we can print using ADS? We always get
    " Error while generating PDF" Error when we try to print reports with more than 500 lines.
    Thanks
    Niveda

    Great. It worked.
    Points assigned.
    Niveda

  • Error while generating PDF in portal but not in WAD

    Hi,
    When I execute the command to export to pdf, I have a screen to fill settings of my pdf, then I valid my choice and I have this message : "Error while generating PDF" in my portal.
    However, when I want to execute on Web Application Designer and click on my command "export to pdf", I have a same screen and I can open or save my document.
    Is someone have an idea : why it is possible to generate my pdf on WAD but not in my portal ??
    Any information is much appreciated !
    Thanks in advance
    V.K.

    Hi Pradnya,
    Thanks for your answer. However it is for an old version of SAP NetWeaver..
    I work with SAP BI 7.0 version.
    Regards,
    V.K.

  • Error while generating PDF BI 7 Report Designer

    Hi,
    I am getting this error Error while generating PDF when i tried print version on report designer,
    I tried to find information on this error but there was no information regarding this , so posted here.
    Please let me know if you have any suggestions.
    Thanks,
    Kumar

    We have restated the java server and now the issue solved.
    Kumar

  • Error while generating PDF

    Hello Guru's,
    I have done the ADS configuration setup and checked all configuration settings.It seems everything is working fine but when i select the option  "Print Verison" ( I have executed a query using the query  designer) i am getting above error.
    FYI: Its a BI 700 system and we are at Suport pack10 level (both ABAP+Java). By the way i should let you know that it is a copy of Production.
    Here is the log:
    Error while generating PDF
    com.sap.ip.bi.webapplications.pageexport.PageExportRenderingRootNode PageExport1
    Error while generating PDF
    com.sap.ip.bi.webapplications.pageexport.PageExportRenderingRootNode PageExport#
    Any thoughts as to what the messages above might be pointing me to?I should appreciate your help.
    Thanks,
    Ravi.

    Hello Dezso,
    I have executed the test report FP_TEST_00 and i got a form containing several lines on two pages.I have checked all the configuration checks and got the correct results as mentioned in the ADS document. But when i try to print a query using the query analyzer,i am getting that PDF error. I have no issues with my other BI 700 system.
    Ravi.

  • Error while generating PDF - in Bex Web

    Hi Experts,
    I am currently having the issue that I receive the error "Error while generating PDF" when using the "Print Version" functionality. This problem only occurrs for the Bex Web Query. I know that the ADS service is configured correctly- The webservice test is successful and other applications (Guided Procedures, MSS) also use it successfully.
    Please see below the excerpt from the default trace:
    A message was generated:
    ERROR
    Error while generating PDF
    com.sap.ip.bi.webapplications.pageexport.PageExportRenderingRootNode PageExportRenderingRootNode_0001
    Message: 28
    Stack trace: java.lang.ArrayIndexOutOfBoundsException: 28
    at com.sap.ip.bi.export.xfa.impl.SizeCalculator.getColumnSizes(SizeCalculator.java:178)
    at com.sap.ip.bi.export.impl.ExportController.setSizes(ExportController.java:220)
    at com.sap.ip.bi.export.impl.ExportController.calculateAndSetSizes(ExportController.java:611)
    at com.sap.ip.bi.export.impl.ExportController.doExportPrep(ExportController.java:408)
    at com.sap.ip.bi.export.impl.ExportController.convert(ExportController.java:336)
    at com.sap.ip.bi.export.controller.ExportResult.createExport(ExportResult.java:58)
    at com.sap.ip.bi.webapplications.pageexport.PageExportRenderingRootNode.createPDF(PageExportRenderingRootNode.java:453)
    at com.sap.ip.bi.webapplications.pageexport.PageExportRenderingRootNode.doExport(PageExportRenderingRootNode.java:105)
    at com.sap.ip.bi.webapplications.pageexport.PageExportRenderingRootNode.processRendering(PageExportRenderingRootNode.java:252)
    at com.sap.ip.bi.webapplications.runtime.impl.Page.buildRenderingTree(Page.java:3809)
    at com.sap.ip.bi.webapplications.runtime.impl.Page.processRenderingRootNode(Page.java:3867)
    at com.sap.ip.bi.webapplications.runtime.impl.Page.processRendering(Page.java:3510)
    at com.sap.ip.bi.webapplications.runtime.impl.Page.doProcessRequest(Page.java:3470)
    at com.sap.ip.bi.webapplications.runtime.impl.Page.processRequest(Page.java:2489)
    at com.sap.ip.bi.webapplications.runtime.controller.impl.Controller.doProcessRequest(Controller.java:892)
    at com.sap.ip.bi.webapplications.runtime.controller.impl.Controller.processRequest(Controller.java:813)
    at com.sap.ip.bi.webapplications.runtime.jsp.portal.services.BIRuntimeService.handleRequest(BIRuntimeService.java:456)
    at com.sap.ip.bi.webapplications.runtime.jsp.portal.components.LauncherComponent.doContent(LauncherComponent.java:21)
    at com.sapportals.portal.prt.component.AbstractPortalComponent.serviceDeprecated(AbstractPortalComponent.java:209)
    at com.sapportals.portal.prt.component.AbstractPortalComponent.service(AbstractPortalComponent.java:114)
    at com.sapportals.portal.prt.core.PortalRequestManager.callPortalComponent(PortalRequestManager.java:328)
    at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:136)
    at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:189)
    at com.sapportals.portal.prt.component.PortalComponentResponse.include(PortalComponentResponse.java:215)
    at com.sapportals.portal.prt.pom.PortalNode.service(PortalNode.java:645)
    at com.sapportals.portal.prt.core.PortalRequestManager.callPortalComponent(PortalRequestManager.java:328)
    at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:136)
    at com.sapportals.portal.prt.core.PortalRequestManager.dispatchRequest(PortalRequestManager.java:189)
    at com.sapportals.portal.prt.core.PortalRequestManager.runRequestCycle(PortalRequestManager.java:753)
    at com.sapportals.portal.prt.connection.ServletConnection.handleRequest(ServletConnection.java:240)
    at com.sapportals.portal.prt.dispatcher.Dispatcher$doService.run(Dispatcher.java:522)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sapportals.portal.prt.dispatcher.Dispatcher.service(Dispatcher.java:405)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at com.sap.engine.services.servlets_jsp.server.servlet.InvokerServlet.service(InvokerServlet.java:156)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:401)
    at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:266)
    at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:387)
    at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:365)
    at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:944)
    at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:266)
    at com.sap.engine.services.httpserver.server.Client.handle(Client.java:95)
    at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:175)
    at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
    at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
    at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)
    at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)
    If you have any idea or clue it would be greatly appreciated.
    Thanks in advance for every support,
    Jan

    Hi Jan,
    Most possible causes for encountering this issue are:
    Possible cause:
    - The ADS is installed on a plattform, that is currently not supported by SAP for ADS. Please check the avaliablity at: Product Availability Matrix
    - Mixing of different Netweaver releases (NW04 and NW04s) -> This is unfortunatelly not possibble the J2EE engine release has to match with the ABAP stack release in order connect them properly.
    - The ADS SP level does not match the J2EE engine SP level. -> Please update the software components to have the same support package level.
    Hope this helps!!
    Regards,
    Arafat

  • CRM ONLINE 2013: On Approval Of Quotation, Run Report, Generate PDF and Send an Email With PDF as attachment

    Hi,
    I am using CRM ONLINE 2013.
    How to automate below process?
    1. On Approval Of Quotation, Run Report.
    2. Generate PDF.
    3. Send an Email With PDF as attachment.
    As i have gone through many forums for this topic, but creating a plugin code for generating Report PDF is not possible in CRM ONLINE.
    So, What is the alternate way to do this..?
    Thanks.

    This is my entire code mentioned below:-
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
        <script type="text/javascript">
            if (typeof (SDK) == "undefined")
            { SDK = { __namespace: true }; }
            SDK.JScriptRESTDataOperations = {
                _context: function () {
                    if (typeof GetGlobalContext != "undefined")
                    { return GetGlobalContext(); }
                    else {
                        if (typeof Xrm != "undefined") {
                            return Xrm.Page.context;
                        else { return new Error("Context is not available."); }
                _getServerUrl: function () {
                    var serverUrl = this._context().getServerUrl()
                    if (serverUrl.match(/\/$/)) {
                        serverUrl = serverUrl.substring(0, serverUrl.length - 1);
                    return serverUrl;
                _ODataPath: function () {
                    return this._getServerUrl() + "/XRMServices/2011/OrganizationData.svc/";
                _errorHandler: function (req) {
                    return new Error("Error : " +
      req.status + ": " +
      req.statusText + ": " +
      JSON.parse(req.responseText).error.message.value);
                _dateReviver: function (key, value) {
                    var a;
                    if (typeof value === 'string') {
                        a = /Date\(([-+]?\d+)\)/.exec(value);
                        if (a) {
                            return new Date(parseInt(value.replace("/Date(", "").replace(")/", ""), 10));
                    return value;
                Create: function (object, type, successCallback, errorCallback) {
                    var req = new XMLHttpRequest();
                    req.open("POST", this._ODataPath() + type + "Set", true);
                    req.setRequestHeader("Accept", "application/json");
                    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
                    req.onreadystatechange = function () {
                        if (this.readyState == 4 /* complete */) {
                            if (this.status == 201) {
                                successCallback(JSON.parse(this.responseText, SDK.JScriptRESTDataOperations._dateReviver).d);
                            else {
                                errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
                    req.send(JSON.stringify(object));
                Retrieve: function (id, type, successCallback, errorCallback) {
                    var req = new XMLHttpRequest();
                    req.open("GET", this._ODataPath() + type + "Set(guid'" + id + "')", true);
                    req.setRequestHeader("Accept", "application/json");
                    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
                    req.onreadystatechange = function () {
                        if (this.readyState == 4 /* complete */) {
                            if (this.status == 200) {
                                successCallback(JSON.parse(this.responseText, SDK.JScriptRESTDataOperations._dateReviver).d);
                            else {
                                errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
                    req.send();
                Update: function (id, object, type, successCallback, errorCallback) {
                    var req = new XMLHttpRequest();
                    req.open("POST", this._ODataPath() + type + "Set(guid'" + id + "')", true);
                    req.setRequestHeader("Accept", "application/json");
                    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
                    req.setRequestHeader("X-HTTP-Method", "MERGE");
                    req.onreadystatechange = function () {
                        if (this.readyState == 4 /* complete */) {
                            if (this.status == 204 || this.status == 1223) {
                                successCallback();
                            else {
                                errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
                    req.send(JSON.stringify(object));
                Delete: function (id, type, successCallback, errorCallback) {
                    var req = new XMLHttpRequest();
                    req.open("POST", this._ODataPath() + type + "Set(guid'" + id + "')", true);
                    req.setRequestHeader("Accept", "application/json");
                    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
                    req.setRequestHeader("X-HTTP-Method", "DELETE");
                    req.onreadystatechange = function () {
                        if (this.readyState == 4 /* complete */) {
                            if (this.status == 204 || this.status == 1223) {
                                successCallback();
                            else {
                                errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
                    req.send();
                RetrieveMultiple: function (type, filter, successCallback, errorCallback) {
                    if (filter != null) {
                        filter = "?" + filter;
                    else { filter = ""; }
                    var req = new XMLHttpRequest();
                    req.open("GET", this._ODataPath() + type + "Set" + filter, true);
                    req.setRequestHeader("Accept", "application/json");
                    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
                    req.onreadystatechange = function () {
                        if (this.readyState == 4 /* complete */) {
                            if (this.status == 200) {
                                successCallback(JSON.parse(this.responseText, SDK.JScriptRESTDataOperations._dateReviver).d.results);
                            else {
                                errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
                    req.send();
                __namespace: true
        </script>
        <script type="text/javascript">
            //Create Email and link it with Order as Regarding field
            var Xrm;
            var email = new Object();
            var ownerID = "";
            var CustomerId = "";
            if (window.opener) { Xrm = window.opener.Xrm; }
            else if (window.parent) { Xrm = window.parent.Xrm; }
            //Get ownerid who send email of quotation to customer
            function GetOwnerID() {
                var owner = Xrm.Page.getAttribute("ownerid").getValue();
                ownerID = owner[0].id;
                var ownerName = owner[0].name;
                var entityType = owner[0].entityType;
                GetToEmailGUID();
            //Get customerid who receive email of quotation from owner
            function GetToEmailGUID() {
                var Customer = Xrm.Page.getAttribute('customerid').getValue();
                CustomerId = Customer[0].id;
                var CustomerName = Customer[0].name;
                var entityType = Customer[0].entityType;
                //if CustomerId is type of "Account" then get Primary Contact id of that account
                if (entityType == "account") {
                    var contact = Xrm.Page.getAttribute("customerid").getValue();
                    if (contact === null) return;
                    var serverUrl = Xrm.Page.context.getClientUrl();
                    var oDataSelect = serverUrl + "/XRMServices/2011/OrganizationData.svc/AccountSet(guid'" + contact[0].id + "')?$select=PrimaryContactId";
                    var req = new XMLHttpRequest();
                    req.open("GET", oDataSelect, false);
                    req.setRequestHeader("Accept", "application/json");
                    req.setRequestHeader("Content-Type", "application/json;charset=utf-8");
                    req.onreadystatechange = function () {
                        if (req.readyState === 4) {
                            if (req.status === 200) {
                                var retrieved = JSON.parse(req.responseText).d;
                                CustomerId = retrieved.PrimaryContactId.Id;
                            else {
                                alert(this.statusText);
                    req.send();
            function CreateEmail() {
                GetOwnerID();
                email.Subject = "Email with Report Attachment";
                //Set The current order as the Regarding object
                email.RegardingObjectId = {
                    Id: Xrm.Page.data.entity.getId(),    //Get the current entity Id , here OrderId
                    LogicalName: Xrm.Page.data.entity.getEntityName()//Get the current entity name, here it will be “salesOrder”
                //Create Email Activity
                SDK.JScriptRESTDataOperations.Create(email, "Email", EmailCallBack, function (error) { alert(error.message); });
            // Email Call Back function
            function EmailCallBack(result) {
                email = result; // Set the email to result to use it later in email attachment for retrieving activity Id
                var activityPartyFrom = new Object();
                // Set the From party of the ActivityParty to relate an entity with Email From field
                activityPartyFrom.PartyId = {
                    Id: CustomerId, //"79EBDD26-FDBE-E311-8986-D89D6765B238",  // id of entity you want to associate this activity with.        
                    LogicalName: "contact"
                // Set the "activity" of the ActivityParty
                activityPartyFrom.ActivityId = {
                    Id: result.ActivityId,
                    LogicalName: "email"
                // Now set the participation type that describes the role of the party on the activity).
                activityPartyFrom.ParticipationTypeMask = { Value: 2 }; // 2 means ToRecipients
                // Create the from ActivityParty for the email
                SDK.JScriptRESTDataOperations.Create(activityPartyFrom, "ActivityParty", ActivityPartyFromCallBack, function (error) { alert(error.message); });
                var activityPartyTo = new Object();
                // Set the From party of the ActivityParty to relate an entity with Email From field
                activityPartyTo.PartyId = {
                    Id: ownerID, //"79EBDD26-FDBE-E311-8986-D89D6765B238",  // id of entity you want to associate this activity with.        
                    LogicalName: "systemuser"
                // Set the "activity" of the ActivityParty  
                activityPartyTo.ActivityId = {
                    Id: result.ActivityId,
                    LogicalName: "email"
                // Now set the participation type that describes the role of the party on the activity).    
                activityPartyTo.ParticipationTypeMask = { Value: 1 }; // 1 means Sender
                // Create the from ActivityParty
                SDK.JScriptRESTDataOperations.Create(activityPartyTo, "ActivityParty", ActivityPartyToCallBack, function (error) { alert(error.message); });
            //ActivityParty From Callback
            function ActivityPartyFromCallBack(result) {
            //ActivityParty To Callback
            function ActivityPartyToCallBack(result) {
                GetReportId('ABM_Infotech_SalesQuote');
            //Create attachment for the created email
            function CreateEmailAttachment() {
                //get reporting session and use the params to convert a report in PDF
                var params = getReportingSession();
                //Email attachment parameters
                var activitymimeattachment = Object();
                activitymimeattachment.ObjectId = Object();
                activitymimeattachment.ObjectId.LogicalName = "email";
                activitymimeattachment.ObjectId.Id = email.ActivityId;
                activitymimeattachment.ObjectTypeCode = "email",
                    activitymimeattachment.Subject = "File Attachment";
                activitymimeattachment.Body = encodePdf(params);
                activitymimeattachment.FileName = "Report1.pdf";
                activitymimeattachment.MimeType = "application/pdf";
                //Attachment call
                SDK.JScriptRESTDataOperations.Create(activitymimeattachment, "ActivityMimeAttachment", ActivityMimeAttachmentCallBack, function (error) { alert(error.message); });
            //ActivityMimeAttachment CallBack function
            function ActivityMimeAttachmentCallBack(result) {
                var features = "location=no,menubar=no,status=no,toolbar=no,resizable=yes";
                var width = "800px";
                var height = "600px";
                window.open(Xrm.Page.context.getServerUrl() + "main.aspx?etc=" + 4202 + "&pagetype=entityrecord&id=" + email.ActivityId, "_blank", features);
                // To open window which works in outlook and IE both
                //openStdWin(Xrm.Page.context.getServerUrl() + "main.aspx?etc=" + 4202 + "&pagetype=entityrecord&id=" + email.ActivityId, "_blank", width,
    height, features);
            //This method will get the reportId based on a report name that will be used in            getReportingSession() function
            function GetReportId(reportName) {
                var oDataSetName = "ReportSet";
                var columns = "ReportId";
                var filter = "Name eq '" + reportName + "'";
                retrieveMultiple(oDataSetName, columns, filter, onSuccess);
            function retrieveMultiple(odataSetName, select, filter, successCallback) {
                var serverUrl = Xrm.Page.context.getServerUrl();
                var ODATA_ENDPOINT = "/XRMServices/2011/OrganizationData.svc";
                var odataUri = serverUrl + ODATA_ENDPOINT + "/" + odataSetName + "?";
                if (select) {
                    odataUri += "$select=" + select + "&";
                if (filter) {
                    odataUri += "$filter=" + filter;
                $.ajax({
                    type: "GET",
                    contentType: "application/json; charset=utf-8",
                    datatype: "json",
                    url: odataUri,
                    beforeSend: function (XMLHttpRequest) {
                        XMLHttpRequest.setRequestHeader("Accept", "application/json");
                    success: function (data) {
                        if (successCallback) {
                            if (data && data.d && data.d.results) {
                                successCallback(data.d.results);
                            else if (data && data.d) {
                                successCallback(data.d);
                            else {
                                successCallback(data);
                    error: function (XmlHttpRequest, errorThrown) {
                        if (XmlHttpRequest && XmlHttpRequest.responseText) {
                            alert("Error while retrieval ; Error – " + XmlHttpRequest.responseText);
            function onSuccess(data) {
                reportId = data[0].ReportId.replace('{', ").replace('}', ");
                CreateEmailAttachment(); // Create Email Attachment
            //Gets the report contents
            function getReportingSession() {
                var pth = Xrm.Page.context.getServerUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
                var retrieveEntityReq = new XMLHttpRequest();
                var Id = Xrm.Page.data.entity.getId();
                var quotationGUID = Id.replace('{', ""); //set this to selected quotation GUID
                quotationGUID = quotationGUID.replace('}', "");
                var reportName = "ABM_Infotech_SalesQuote"; //set this to the report you are trying to download
                var reportID = "751089AA-74B8-E211-B52F-D8D3855B253B"; //set this to the guid of the report you are trying to download
                var rptPathString = ""; //set this to the CRMF_Filtered parameter
                var strParameterXML = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'><entity name='quote'><all-attributes /><filter type='and'><condition
    attribute='quoteid' operator='eq' uitype='quote' value='" + quotationGUID + "' /> </filter></entity></fetch>";
                retrieveEntityReq.open("POST", pth, false);
                retrieveEntityReq.setRequestHeader("Accept", "*/*");
                retrieveEntityReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                rptPathString = "id=%7B" + reportID + "%7D&uniquename=" + Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName="
    +
                                reportName + "&isScheduledReport=false&p:ABMFilteredQuote=" + strParameterXML;
                //remove the part starting from &p:salesorderid if your report has no parameters
                retrieveEntityReq.send(rptPathString);
                var x = retrieveEntityReq.responseText.indexOf("ReportSession=");
                var ret = new Array();
                ret[0] = retrieveEntityReq.responseText.substr(x + 14, retrieveEntityReq.responseText.indexOf("&", x) - x - 14); //the session id
                x = retrieveEntityReq.responseText.indexOf("ControlID=");
                ret[1] = retrieveEntityReq.responseText.substr(x + 10, retrieveEntityReq.responseText.indexOf("&", x) - x - 10); //the control id
                return ret;
            var bdy = new Array();
            var bdyLen = 0;
            function concat2Bdy(x) {
                bdy[bdyLen] = x;
                bdyLen++;
            function encodePdf(params) {
                bdy = new Array();
                bdyLen = 0;
                var retrieveEntityReq = new XMLHttpRequest();
                var pth = Xrm.Page.context.getServerUrl() + "/Reserved.ReportViewerWebControl.axd?ReportSession=" + params[0] +
                "&Culture=1033&CultureOverrides=True&UICulture=1033&UICultureOverrides=True&ReportStack=1&ControlID=" + params[1] +
                "&OpType=Export&FileName=Public&ContentDisposition=OnlyHtmlInline&Format=PDF";
                retrieveEntityReq.open("GET", pth, false);
                retrieveEntityReq.setRequestHeader("Accept", "*/*");
                retrieveEntityReq.send();
                BinaryToArray(retrieveEntityReq.responseBody);
                return encode64(bdy);
            var StringMaker = function () {
                this.parts = [];
                this.length = 0;
                this.append = function (s) {
                    this.parts.push(s);
                    this.length += s.length;
                this.prepend = function (s) {
                    this.parts.unshift(s);
                    this.length += s.length;
                this.toString = function () {
                    return this.parts.join('');
            var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
            function encode64(input) {
                var output = new StringMaker();
                var chr1, chr2, chr3;
                var enc1, enc2, enc3, enc4;
                var i = 0;
                while (i < input.length) {
                    chr1 = input[i++];
                    chr2 = input[i++];
                    chr3 = input[i++];
                    enc1 = chr1 >> 2;
                    enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
                    enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
                    enc4 = chr3 & 63;
                    if (isNaN(chr2)) {
                        enc3 = enc4 = 64;
                    } else if (isNaN(chr3)) {
                        enc4 = 64;
                    output.append(keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4));
                return output.toString();
        </script>
        <script type="text/vbscript">
        Function BinaryToArray(Binary)
               Dim i
               ReDim byteArray(LenB(Binary))
               For i = 1 To LenB(Binary)
                     byteArray(i-1) = AscB(MidB(Binary, i, 1))
                     concat2Bdy(AscB(MidB(Binary, i, 1)))
             Next
              BinaryToArray = byteArray
       End Function     
        </script>
    </head>
    <body>
        <input type="button" onclick="CreateEmail();" value="Attach Report" />
    </body>
    </html>

Maybe you are looking for

  • Regarding user interface in subtotal line of ALV grid, ensure points

    Hi, I have 3 fields, A= vendor , B = freight , C = Cost PMT When the vendor get changed, My Grid is showing subtotal of B i.e freight. Now my requirement is, in the same subtotal line, I want average of C (Cost PMT) field. So how we can interact with

  • Mandatory parameter field in selection screen

    Hi Experts, As there are 2 options to get the input from the user. When I use select options because I need to make the field mandatory, it displays the output(blank) whenever there is no input/irrelevant input. When I use parameters, I cannot make i

  • When I expand a photo it will slide off screen to the right and won't stay centered

    When I expand a photo it will slide of the screen to the right and won't stay centered. It also very hard to get to the close button when this happens which is bottom right of picture.

  • Ws-security runtime authentication subject

    Hi, When the ws-runtime performs the authentication based on the security token, does it attach the authenticated subject to the current thread? In the server-side handler for a webservices on which ws-security is enabled via ws-policy, if I call Sub

  • BB Desktop Manager for PC hangs during start-up

    My wife has a 2 years old HP laptop running Windows 7 Home Premium, 64-bit OS, at Service Pack 1 level.  BB Desktop Manager for PC hangs during it's (BB Desktop's) start-up.  Initially the screen with BlackBerry Desktop Manager and the BB logo appear