Generate PDF in a sandboxed plugin

Hi,
I am really struggling with a plugin that i need to generate a PDF stream in. I have tried several third party libraries but they are either too big for a plugin or they are apparently using things on the server that is prohibited i CRM online.
Does anyone have an idea of how i can achieve this?
Thanks in advance,
Toby

Thanks for the response.
I have a note attachment like a word file that i can parse to a stream inside my plugin and i want to write it back to the note attachment as a pdf. I know i could use some webservice for this but it needs to be handled in the O365 context.
I know plenty of ways to do this but i keep hitting the isolation mode wall.
/Toby

Similar Messages

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

  • How to generate PDF report in Sharepoint Office 365

    Hi,
    We are building a custom webpart using sandbox solution and would like to generate report in PDF. Anyone have a clue?
    Thanks in advance ;
    Cheers, IXI solution

    You can use SSRS reports which can be saved in any format. Refer to the following post for more information
    http://sharepoint.stackexchange.com/questions/86100/best-way-to-generate-pdf-report
    http://social.technet.microsoft.com/Forums/sharepoint/en-US/7a1b7d4d-c55d-4621-88d2-619a1ab23448/export-sharepoint-chartsreports-to-pdf?forum=sharepointadminprevious
    Alternatively, you could also try this solution from CodePlex
    http://pdfreport.codeplex.com/
    --Cheers

  • PDF Output: Why is "PDF Review" styled different than "Generate PDF"?

    I am new to RH.  I have imported a folder of HTML files (used in an Eclipse Help plugin) into RH9 for HTML as a project. My goal is to produce a PDF document.
    When I generate a PDF from Printed Documentation in the Single Source Layouts pad, many styles are incorrect. I've tried generating to Word and from there to PDF with the same effect.
    However, when I use Create PDF for Review from Project Manager the styles shown in the PDF (fonts, alignment, etc) are nearly perfect! Is the PDF Review option using a different CSS?
    I have tried exploring the CSS specified in the Generate PDF flow, but I am unable to make changes, perhaps due to my massive state of confusion.  So I'm losing hope that I could manually tweak to CSS that I think I use in the Generate PDF flow to appear like the "PDF Review" flow. I specified the same CSS used in the Eclipse Help system, but evidently there must be some defaults built into the Eclipse viewer that are not specified in the CSS we use.
    Thanks in advance,
    Charly in SJ

    Here's what I think is happening. You say PDF review is good but printed documentation gives wrong styles. You also say you assume PDF review uses the Stylesheet (CSS) for each topic, yes it does. Now if that is giving the correct styles it tells you that is what you need when you generate printed documentation.
    When you use a Word template you will get very different styles unless you have set up the template to mirror your CSS. Using the Map to CSS option you have two choices, you can select None when each topic will be printed according to the CSS attached to the topic or you can select one of the CSS files available in the project.
    I suspect that if you select the None option, you will get the same as you are seeing in the PDF review.
    If your document is not going to be worked on by anyone, such as a training department using it as a based document, then the CSS options are fine. If others will be working on it, then the Word template option is better as lists will be true lists and headings will be true heading styles.
    See Printed Documentation on my site.
    See www.grainge.org for RoboHelp and Authoring tips
    @petergrainge

  • Generating pdf from the website

    Hi there,
    Match with smaller problem. I have a website where I want to put the icon to create a pdf from the site. These are website www.mapase.com. I do not use any open source as wodpress therefore I can not use plugins. I've got all code and implement myself. Or find a library.
    Description of the problem:
    If I insert some of the libraries found on the Internet at Home page, can generate PDF. If I will however try to generate a PDF from this example: http://www.mapase.com/kuala-belait-1820871, the resulting PDF is terrible.
    Can you recommend any library for testing?

    Can anyone please help, the websites hosted with us are developed on adobe CQ5.4 content management tool and when they are exported to PDF some of the images / texts doesn't get generated in the PDF. Also, the css /theme doesn't get generated resulting in formatting inconsistencies.
    However, if the same website is generated using some online PDF converters all Images & texts are coming fine with correct formatting.
    Is this issue due to using CQ CMS as that has a lot of components or is there a limitation with Acrobat XI pro trial version or anything else ?
    Appreciate if some one could provide inputs.
    Thanks
    Anusha

  • Error generating PDF: ALC-PDG-001-000

    Hi,
    I'm facing an error while trying to generate a PDF through CreatePDF service (GeneratePDFService). It is converting .tif .jpg successfully into PDF but not converting text documents like .txt .doc etc
    Following is the error log:
    ALC-PDG-001-000-Conversion failed because of an exception.
    An unexpected exception while resolving a new connection to an Adobe Service.: ALC-PDG-1000-000: com.adobe.livecycle.generatepdf.client.ConversionException: ALC-PDG-001-000-Conversion failed because of an exception.
    An unexpected exception while resolving a new connection to an Adobe Service.
    Caused by: java.lang.reflect.UndeclaredThrowableException: An unexpected exception while resolving a new connection to an Adobe Service.
    at com.adobe.util.ConnectionFactoryReflectionWrapper.getConnection(Utilities.java:961)
    at com.adobe.pdfg.callbacks.NativeToPDFTransactionCallback.convertToPdf(NativeToPDFTransacti onCallback.java:185)
    at com.adobe.pdfg.callbacks.NativeToPDFTransactionCallback.doInTransaction(NativeToPDFTransa ctionCallback.java:165)
    at com.adobe.idp.dsc.transaction.impl.ejb.adapter.EjbTransactionBMTAdapterBean.doRequiresNew (EjbTransactionBMTAdapterBean.java:218)
    at sun.reflect.GeneratedMethodAccessor751.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.jboss.invocation.Invocation.performCall(Invocation.java:345)
    at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionConta iner.java:214)
    at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionI nterceptor.java:149)
    at org.jboss.webservice.server.ServiceEndpointInterceptor.invoke(ServiceEndpointInterceptor. java:54)
    at org.jboss.ejb.plugins.CallValidationInterceptor.invoke(CallValidationInterceptor.java:48)
    at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:106)
    at org.jboss.ejb.plugins.AbstractTxInterceptorBMT.invokeNext(AbstractTxInterceptorBMT.java:1 58)
    at org.jboss.ejb.plugins.TxInterceptorBMT.invoke(TxInterceptorBMT.java:62)
    at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstance Interceptor.java:154)
    at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:153)
    at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:192)
    at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor. java:122)
    at org.jboss.ejb.SessionContainer.internalInvoke(SessionContainer.java:624)
    at org.jboss.ejb.Container.invoke(Container.java:873)
    at org.jboss.ejb.plugins.local.BaseLocalProxyFactory.invoke(BaseLocalProxyFactory.java:415)
    at org.jboss.ejb.plugins.local.StatelessSessionProxy.invoke(StatelessSessionProxy.java:88)
    at $Proxy270.doRequiresNew(Unknown Source)
    at com.adobe.idp.dsc.transaction.impl.ejb.EjbTransactionProvider.execute(EjbTransactionProvi der.java:133)
    at com.adobe.idp.dsc.transaction.impl.DefaultTransactionTemplate.execute(DefaultTransactionT emplate.java:79)
    at com.adobe.pdfg.BMCCaller.invokeInSMT(BMCCaller.java:769)
    at com.adobe.pdfg.Native2PdfCaller.callNativeBMC(Native2PdfCaller.java:779)
    at com.adobe.pdfg.Native2PdfCaller.createPDF(Native2PdfCaller.java:298)
    at com.adobe.pdfg.GeneratePDFImpl.createPDFCommon(GeneratePDFImpl.java:342)
    at com.adobe.pdfg.GeneratePDFImpl.createPDF2(GeneratePDFImpl.java:144)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at com.adobe.idp.dsc.component.impl.DefaultPOJOInvokerImpl.invoke(DefaultPOJOInvokerImpl.jav a:118)
    at com.adobe.idp.dsc.interceptor.impl.InvocationInterceptor.intercept(InvocationInterceptor. java:140)
    at com.ado

    I am still new to this .. but ...
    http://livedocs.adobe.com/livecycle/8.2/programLC/programmer/help/wwhelp/wwhimpl/common/ht ml/wwhelp.htm?context=sdkHelp&file=000439.html
    The Generate PDF service lets you convert these document types to PDF documents:
    HTML
    Microsoft Word
    Microsoft PowerPoint
    Microsoft Excel
    Microsoft Project
    Microsoft Visio
    AutoCAD
    Adobe Photoshop CS2®
    Any third-party generic application type for which you have a PDF generating application

  • Generating pdf on fly

    hi
    I'm looking for a tool that will generated pdf content for my site http://alefajnie.pl (gadgets store)
    I want have an option to load a page as pdf
    when product images goes as background and description is nice __auto__ formatted.
    I don't wanna produce pdf from scratch somewhere in my code at server side,
    it should be something with toolbar (like js, ..) with option to change content from html to pdf.
    For example such plugin for product "kula plazmowa":
    http://alefajnie.pl/gadzety/kula-plaznowa/
    should get all product images and set from them backgrounds
    and rest text should be used as product description.
    and all should be generated on client side (client computer) after choosing a option from some js toolbar.
    is such toolbar exists ?

    If your site visitors have Adobe Acrobat on their system, they can print to Adobe PDF from their browser.
         File > Print > Adobe PDF.
    I am not aware of any client-side scripts that will force a page to automatically print to paper or PDF.   The best you can do is open a print dialogue screen with an option to print.  The rest is entirely up to your site visitors.
         <input type="button" value="Print Page" onClick="javascript:window.print();">
    If you want to make HTML to PDF docs on the fly, you'll need to use a server-side script.  This one works with PHP. http://www.mpdf1.com/mpdf/
    Nancy O.
    Alt-Web Design & Publishing
    Web | Graphics | Print | Media  Specialists 
    http://alt-web.com/
    http://twitter.com/altweb

  • Generate PDF (BI Publisher) through APEX_PLSQL_JOB.SUBMIT_PROCESS

    Hi!
    Oracle 10.2.0.4 32, Apex 4.0.2, BIP 10.x Win.
    I have to generate cca. 1000 reports in PDF (some customer bills) through BI Publisher print server.
    PDF is defined through "Reports queries" and "Reports layouts" directly defined from Apex env. Report template is Word RTF file. Report query has one parameter:
    and R.BILL_ID = :G_BILL_IDRunning from App page process it is not acceptable to do that because operation should takes hours and user cannot have open freezed browser.
    So I found out "APEX_PLSQL_JOB.SUBMIT_PROCESS", which submit process in "job" as background process.
    On page I left just "SUBMIT_PROCESS" call:
    BEGIN
      APEX_PLSQL_JOB.SUBMIT_PROCESS ('begin bills_pkg.generate_biils; end');
    END;and put the whole logic in package. Small problem was to change Apex item (Application item), what I solved and change with:
    APEX_UTIL.set_session_state(p_name => 'G_BILL_ID', p_value => cur_array(i).B_ID);for every record in cursor (I know his is not optimal but I just wanted to get working demo).
    Call from package procedure is like (slightly modified from Apex page process which was working!):
    open cur;
      -- assign to have that value as parameter for !??
      APEX_UTIL.set_session_state(p_name => 'G_BILL_ID', p_value => cur_array(i).B_ID);
      print_one_report (cur_array(i).B_ID);
    close cur;where "print_one_report" is mine procedure which saves PDF in db (proc was the same as before when was working but with too long result).
    Unfortunately then all generated PDF reports (which I save in database) has 0 bytes length (I call the same procedure called as before when reports were generated but from Apex page process directly).
    Seems that "G_BILL_ID" is no longer having correct values ... like session problems.
    How to achieve and fix that (generate PDF from cursor) or is there any article how to manage BI Publisher printing with APEX_PLSQL_JOB.SUBMIT_PROCESS?
    Rg,
    Damir Vadas
    P.S.
    Should
    apex_custom_auth.define_user_session (p_user, p_session_id );
    apex_application.g_flow_id := p_app_id;might help?
    Edited by: user1050751 on May 13, 2011 12:57 PM

    Damir,
    Here is one way that you could get a background job to create your thousand reports (4 steps).
    1st define your report query and layout within APEX (and BI-Publisher builder - Word plugin).
    2nd write a custom process to call apex_util.get_print_document to generate your 1000 reports and place them in a blob column.
    http://download.oracle.com/docs/cd/E17556_01/doc/apirefs.40/e15519/apex_util.htm#CHDDECIA
    DECLARE
        l_document BLOB;
         l_security_group_id NUMBER;
        CURSOR your_cur IS
        SELECT...your thousand records
    BEGIN
        wwv_flow_api.set_security_group_id(p_security_group_id);
        l_security_group_id := wwv_flow_api.get_security_group_id;
        FOR your_rec IN your_cur LOOP
            BEGIN
                 set any item values that will be referenced in your report query here
                 l_document := APEX_UTIL.GET_PRINT_DOCUMENT (p_application_id     => v_your_app_id,
                                                             p_report_query_name  => v_your_defined_report_name,
                                                             p_report_layout_name => v_your_defined_layout_name,
                                                             p_report_layout_type => 'rtf',
                                                             p_document_format    => 'pdf',
                                                             --p_print_server             =>
                INSERT INTO your_table... id, l_document, file_name, mime_type...
                COMMIT;
            EXCEPTION
                WHEN others THEN
                      write an error to a job log...
            END;
        END LOOP;
    EXCEPTION
         WHEN others THEN
               write an error to a job log...
    END;3rd write logic that will submit your custom process using APEX_PLSQL_JOB.SUBMIT_PROCESS or you can use dmbs_scheduler package.
    4th write code to retrieve the report data from the blob column and display or distribute to users.
    I've never called the apex_util.get_print_document recursively like this before so I'm not sure how it will perform. There are 4 versions of the get_print_document API so use the one that best fits your needs with performance in mind.
    After writing the above logic I found this post that is very similar.
    Scheduling reports with dbms_scheduler
    An alternative method to what I've listed above is scheduling reports using the Bi-Publisher web service.
    http://bipconsulting.blogspot.com/2010/04/how-to-schedule-report-with-bi.html
    Regards,
    Todd
    Edited by: tfa on May 16, 2011 8:03 AM

  • 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

Maybe you are looking for