Emailing InDesign generated PDF

Hello all. I have been trying to email a PDF I created from my InDesign file, but when the recipient opens the file on their computer it has 'holes' in it. For example, there are many words where the “ff” is let out of words like “effort” so it appears “e  ort” or “suffering” looks like “su  ering”.
This person has not had trouble with reading PDF's on their computer in the past, so I was wondering if there may be something with the file itself, and if that could have been created from the InDesign file.
I exported the document to Format: Adobe PDF Print.
Options: 'Embed Page Thumbnails'
Include: 'Bookmarks' and 'Hyperlinks'
Could the problem have started in the ID original file?

If you are exporting the PDF from ID the ligatures should be embedded automatically unless for some reason you are using an old "expert" font for the ligatures and the font isrestricted. You would only have a problem with that if you were printing to Postscript and disitilling or using the Save as PDF in Apple's system.
I suspect the problem is really with the viewer being used and you should suggest that the recipient download and install the free Adobe Reader.

Similar Messages

  • Indesign-generated .pdf files won't print

    I realize this question is vague to the point of being unanswerable, but here I go anyway.
    Our department's publication person sent me a number of chapters of our book in progress so that I could print an uncorrected proof to show to our funding source. She emailed me .pdf files generated by InDesign CS2, probably, although it might have been CS3.
    She also emailed me the indesign file for the frontmatter because I had some things to add, so the .pdf for that I generated myself.
    I took everything to a local printer we regularly use. To print this job he was using a large commercial Canon setup I think. None of the .pdfs would print on it. He ended up having to print them all as images for the purposes of creating a proof for me.
    Now, I printed all of them myself on our networked postscript printer, both from a Mac and a Windows machine, no problem.
    Since the files had been emailed to me, and then to him, we thought maybe they got corrupted, so I brought them over on a disk, but that didn't help, not even the one file whose .pdf I generated myself would print.
    So is this an issue that has come up--indesign-generated .pdf files being unprintable on a commercial printer but printable on a postscript machine.

    Dov and Al,
    Yes, I'm sorry, I do realize that this isn't enough to diagnose a problem. I was hoping that this might be something that has come up before and someone would recognize.
    As far as I could tell, he was opening up the print jobs in Acrobat and sending them to his printer, which had its own job monitor. When he consulted that monitor he just said, no, it won't print.
    He's a smart guy and I've done a number of jobs with him that were generated in indesign, so I'm really at a loss to explain what has gone wrong with this one.

  • Issue with emailing dynamically generated PDF (InteractiveForm UI element)

    Hi Experts ,
    I have a requirement according to which i need to generate PDF dynamically using webdynpro java and email the dynamically generated PDF.
    I am facing issue while emailing the dynamically genarated pdf.
    It gives me an exception :
    nested exception is: javax.mail.MessagingException: IOException while sending message;  nested exception is: java.io.IOException: no data
    This is because its unable to get the binary data (byte array) of the dynamically generated PDF which is required to send mail.
    Could some one suggest me how to fetch the binary data of the dynamically generated PDF.
    For dynamic PDF generation i am using dynamic generation of UI element   InteractiveForm UI Element 
    In case of static PDF (i.e. the PDF genarated by inserting the InteractiveFrom Ui element on the view using the insert child option) we do set the pdf source property of Interactive Form UI element to a context variable attribute of type binary but  my problem is ,how to set the PDF source of a dynamically generated Interactive form UI element to a context variable attribute of type binary ..
    Any help would be highly appreciated.
    Regards ,
    Navya

    Hi Frank ,
    the code to generate PDF dynamically is written in the WdDoModifyView section of the view as the PDF need to be generated dynamically., i.e. by adding InteractiveForm UI elements at  runtime.
    I tried the code suggested by you  but i gave mean exception.
    errorjava.io.FileNotFoundException:
    (The system cannot find the path specified)
    Kindly let me know where i am going wrong .
    Below is the code that i  had written in a separate method m_mail().
    This would take as input the name of the dynamically generated data node and is called from the wdDoModifyView section of the view
    public void m_mail( java.lang.String p_dynamicnodeName )
                   ByteArrayOutputStream templateSourceOutputStream = new ByteArrayOutputStream();
              //        This would need to have the Templatefile in the Mimes-Directory of the Webdynpro-Component
                   String templateUrl = WDURLGenerator.getResourcePath(wdComponentAPI.getDeployableObjectPart(), "AdobeView1_InteractiveForm.xdp");
                   InputStream templateSourceInputStream = new FileInputStream(templateUrl);
                   IOUtil.write(templateSourceInputStream, templateSourceOutputStream);
                   IWDPDFDocumentCreationContext pdfContext = WDPDFDocumentFactory.getDocumentHandler().getDocumentCreationContext();
                   pdfContext.setData(WDInteractiveFormHelper.getContextDataAsStream(wdContext
                   .nodeCtx_vn_dynmcnd()
                   .getChildNode(p_dynamicnodeName, IWDNode.NO_SELECTION)));
                   pdfContext.setTemplate(templateSourceOutputStream);
                   pdfContext.setInteractive(false);
                   IWDPDFDocument pdf = pdfContext.execute();
                   if (pdf != null) {
                    pdfArray = pdf.getPDF();
    Kindly let me know where am i going wrong.
    Regards ,
    Navya

  • How to send email or generate PDF based on condition?

    Hi,
    I'm using standalone BIP 5.6.3.
    i'm working on college project and need to send e-mail or generate PDF file based on student's nationality.
    i've tried to look in user guide but still i confused that how to use burst engine.
    i'm able to design rtf file but i dont know what should i do after that.
    Can anyone tell me about whole process? we're not using EBS.
    can we do this with BIP enterprise?
    Thanks in advance.
    Jay

    Hi Jayu
    Yes, you can do this with the bursting engine in standalone. Im working on a blog article to help out I hope, should post in a day or two
    Tim

  • Hyperlinking Between Multiple InDesign-Generated PDFs

    Hi all. Here's my scenario:
    Windows XP, InDesign CS3
    We're working on a quarterly publication that contains an index. We want the index to be cumulative going forward. For example, the April 2008 issue will just have April 2008 articles listed in the index but the June 2008 issue will have April + June articles listed in the index.
    We want to have the index listing link back to the respective articles. So I've figured out that in June I can:
    1. Create the June index items using the InDesign index feature. This creates hyperlinks back to the articles (if we set up reference markers).
    2. Open the April issue next to the June issue and copy and paste the April index over to the June file. This will copy the April hyperlinks over too but MAINTAINING their link to their April file.
    3. Merge the two lists manually.
    So then we export April and June to two separate PDFs. When I open the June PDF and click on a June article name in the Index, it hyperlinks to the June article. When I click on an April article name, it opens the April PDF and takes me to the respective April article. BUT... it closes the June PDF!
    I don't want the June PDF to close... I want it to stay open so when I'm done with April's article, I can close the April PDF and the June PDF is waiting for me in the background.
    I know that I can edit the carried-over April hyperlinks by hand in Acrobat to make them "open in a new window" - but is there any chance that there's a way (or a script or a default setting) to make all the hyperlinks to another PDF open in a new window without editing them all by hand in Acrobat?
    I know this is a convoluted question so THANK YOU just for taking the time to read it over and think about it.
    All suggestions are welcome.
    Thanks!
    -Jessie

    Publisher can create CMYK files, you go save as, then choose PDF, then click on Options or something and change it to Commercial Press.  This is Microsoft's version of the Press Quality export setting in Indesign, with it converting all images to CMYK, downsampling to 300dpi etc.
    NEVER EVER EVER USE THIS WAY TO CREATE PRINT FILES FROM PUBLISHER!!!!
    Have I made myself clear? 
    The CMYK images created this way have a terrible sort of under colour removal.  Think for example of a dark blue garment, where most of the garment is  something like 100C 60M 0Y 60K, but in the shadows it goes darker than  that, up to 100K.  Well in that area of 95 to 100% black in the image Publisher will convert it to only that, with no other colours underneath it.  But the areas surrounding it will be rich black.  This won't show up on digital proofs, even hi res ripped inkjets, and won't even show up on a press pass unless the machine has drying, because it is not until the ink dries off that you notice these weird photos....  Anyway what I do has already been said above.
    1. Refry it first.
    2. You should be able to sync your settings.
    3. No, it just thinks it can.
    In this case I actually had the Publisher files as well, so I printed them to PDF using Acrobat, and the images were fine.  Problem is the client had gotten used to text and other elements the way they looked using Publishers crappy CMYK export so I had to combine that with the proper images by cropping in Indesign..
    Here's examples of what happens:
    CMY channels only, BAD!
    CMY channels only, GOOD!

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

  • Emailing Generated PDF Document as Attachment - Error

    Hi Forum,
    A custom Print Form was developed using SFP Transaction and trying to send the Form to the vendors using an email attachment.
    1. Used cl_bcs class for sending email. Attachment data(Generated PDF Output) was moved to solix_tab .
    2. In the email attachment I see a PDF attachment with some funny characters and not the PDF Document I see in the print preview
    Please advice me what I should do to the actual PDF document in the email attachment .
    Thanks,
    Vijay.

    Vijay,
    Please try this solution.
    Characters that are not included in the ASCII character set are not displayed correctly due to an incorrect encoding setting of the browser.
    During the display of the overview in the PDF format, errors may occur in certain versions of the Adobe Acrobat Reader. In this case, a blank page is displayed.
    The problem is caused by a program error.
    Adobe, Acrobat, Reader, PDF
    Reason and Prerequisites
    The problem is caused by a program error.
    SAP WebAs sends incorrect encoding information to the browser so that the latter does not switch to the correct encoding utf-8 automatically.
    Some versions of the Adobe Acrobat Reader may have problems with that, for example version 6.0.
    <b>Solution</b>
    Import the corresponding Support Package.(presumably SP4)
    Alternatively:
    The revised version with various changes in the translation is provided by the attachment of this note.
    Refer to the detailed description in Note 13719 on how to download and implement the corrections into your system.
    Thanks,
    Raj.

  • Email printed to PDF, PDF appears accurate in Acrobat XI Pro, when PDF printed to paper text missing

    HELP!!!
    I have text disappear from Outlook emails printed to PDF when I print the PDF files from Acrobat XI Pro to a printer.
    Here is a sample png from the PDF file printed out of Outlook - all the text is showing.
    However when I print the PDF from Acrobat to a printer, the document comes out of the printer with text missing as shown:
    The Acrobat print window shows all of the text that should be there as does Acrobat's view of the document.
    Also, if I save the file to an image, all of the text is there.
    I have tried different emails as well as different printers and the paper printed copies of the PDF emails are always missing text.
    Additionally I have tried coverting the PDF file to a PDF/A file and printing that and the same problems occur.
    Please send some tips as to how I can fix this!

    Hello Atul -
    i am having similar printing issues with Acrobat 10.1.4.
    in my case both PDFs made by me (from InDesign files) and other PDFs made elsewhere and sent to me are missing text when printed to paper -though they look fine both on-screen and in the preview pane, as Katy noted above.
    these PDFs print fine when i open and print from an older version of Acrobat (9.5.2).
    they will also print fine from 10.1.4 if i send them to another printer in the office, (a Dell Color Laser 3110cn), the printer i have a problem with is a Kyocera Mita KM-5053 - which leads me to believe that this is some kind of communication error between Adobe Acrobat Pro 10.1.4 and this printer, or perhaps a driver issue. ?
    I don't believe it's merely a preferences/print settings problem as i've gone pretty carefully through all the dialog boxes that seem relevant and have had no luck in solving the problem. Also, the text that's missing seems arbitraty - meaning, it's not merely hyperlinks or certain layers or text in specific type faces that won't print -it's content in the same text box, where other text does print, and it's blacks and colors and various point sizes - in short there are no easily discernable unifying circumstances among the text that does not print.
    obvioulsy an easy work around is to just print to the other printer or use the older version of Acrobat, but my concern is more that other people may be experiencing the same issues with PDFs i send them. so if it is a problem in the way i'm generating PDFs (although, as i said, text is also missing from PDFs i have received from other people and printed) i'd like to fix it quickly, so that people trying to print my PDFs don't end up with critical content missing.
    i'm on a 2008 MacBook Pro running Mac OS X Lion 10.7.5, and using the Acrobat (X Pro v 10.1.4) that came with the CS6 Design & Web Premium package - although i'm looking at it online now and it's listed as Acrobat XI Pro..
    any input you have would be much appreciated.
    thank you,
    bethany

  • Unable to generate PDF files

    D:\dzbat\bin>genpdf
    D:\dzbat\bin>javadoc -doclet com.sun.tools.doclets.mif.MIFDoclet -docletpath d:\
    mifdoclet1.2\lib\mifdoclet.jar -J-Xmx20M -batch dzbatcher -print pdf -d d:\lsmap
    isericsson\docs -sourcepath d:\lsmapisericsson com.mahindrabt.lsm
    Loading source files for package com.mahindrabt.lsm...
    Constructing Javadoc information...
    MIF Doclet version 1.2 beta 2 (build date: 09 Aug 2002)
    I installed mifdoclet1.2 and DZbatcher and tried to generate PDF file with the following batch file
    javadoc -doclet com.sun.tools.doclets.mif.MIFDoclet -docletpath d:\mifdoclet1.2\lib\mifdoclet.jar -J-Xmx20M -batch dzbatcher -print pdf -d d:\lsmapisericsson\docs -sourcepath d:\lsmapisericsson com.mahindrabt.lsm
    It gives the following output and does not genrate the PDF file and does not give any error. Is there any problem with my batch file? Please help me out from this.
    Generating d:\lsmapisericsson\docs\mif\overview.mif...
    Using default stylemap file...
    Template Used: d:\lsmapisericsson\docs\mif\template.mif
    Using default batchmap file...
    Building tree for all the packages and classes...
    Generating d:\lsmapisericsson\docs\fm\package-list...
    Generating d:\lsmapisericsson\docs\mif\com.mahindrabt.lsm.mif...
    Generating default overview page...
    Generating d:\lsmapisericsson\docs\mif\almanac.mif...
    Generating d:\lsmapisericsson\docs\mif\api.book.mif...
    Generating d:\lsmapisericsson\docs\mif\mif-to-fm.batch...
    Executing: dzbatcher -makername framemaker d:\lsmapisericsson\docs\mif\mif-to-fm
    .batch...
    Regards
    Tushar

    I see no problem with your batch file, and the messages
    proceed properly. To troubleshoot this further, I suggest
    you read the email (currently adjacent) titled:
    "Error using MIF doclet to create PDFs".
    It describes several different approaches, including
    generating PS and using Distiller to generate PDF,
    or trying dzbatcher with -v option to echo each
    command to see where it stops.
    Please let us know your results, as this seems to be
    a common problem.
    -Doug Kramer
    Javadoc team

  • How to generate PDF automatically.

    Hello,
    I am generating INVOICES using REPORTS 6i.
    After created the PDF format, I send to the customer by email.
    I would like to do this process automatically.
    So how can I generate PDF automatically?
    There is any pl/sql functionality available to generated PDF automatically.If so how can I generate similar like report 6i format and symbols (Logo).
    Pls give me some ideas.
    Thanks,Kannan.K

    Kannan,
    a scheduler is part of Reports, with which you can automate to generate Reports. There's a Queue Manager with your installation. But for this you need Application Server based Reporting - not Client/Server.
    Also it's possible to send an PDF-Report as an EMail-attachment directly. Starting with 9i there's also an PL/SQL-API available (Event-based Reporting).
    regards
    Rainer

  • How to embed font into generated PDF?

    Hi,
    I have an issue with cyrillic fonts in PDF-file, generated from smartform using the following mechanism:
    1. Run FM for smartform with ==> getotf = 'X'
    2. Perform CONVERT_OTF retrieving result into a XSTRING.
    3. Converting xstring content into a table using "cl_document_bcs=>xstring_to_solix).
    4. Creating mail to an external internet user with attached pdf ==> using "cl_document_bcs=>create_document..."
    Smartform contains cyrillic content, based on HELVCYR (Helvetica cyrillic) font. Application server is based on Windows.
    Everything worked well (for months!) for allmost all of the clients of our customer. Of course, some of clients have different OS-es (such as Linux, Mac OS, etc.), and then the problem starts - they doens't view properly the cyrillic content. English content (even numbers, etc.) are properly displayed. We found what fonts are used in the PDF, but my questions are:
    1. Is it possible to embed the font into generated PDF-content?
    2. If no, is it possible to generate PDF-content non-selectable (i.e. in some image mode) ?
    If yes, how to do this?
    Or is there any other way to workarround this issue - to be able to display mail with attached PDF-content with cyrillic on different OS-es? It would be better if it is possible without calling external converter...
    Any help would be highly appreciated.
    Thanks in advance.
    Regards,
    Ivaylo Mutafchiev

    Hello Ivaylo Mutafchiev,
                                           There is no way we can control the fonts in the created PDF / while creating the PDF using the class cl_document_bcs in your PDF creation logic.
    You can try some other approach of creating PDF from the Smartforms OTF stream data .
    Try using the follosing FM for the PDF creation and sending email:
    CONVERT_OTF_2_PDF
    CONVERT_OTF_AND_MAIL
    SO_OBJECT_SEND
    CONVERT_OTF_AND_MAIL_NEW (Try this but this FM still uses  the class that you are using currently. But give it a try and see the results)
    Hope this answers your question.
    Thanks,
    Greetson

  • Can't open libHaru-generated PDF with Reader, other readers work.

    Our application uses libHaru to export PDF images.  These PDFs can be opened using PDFlite on Windows, Preview on Mac and some other readers.  However, I have tried several versions of Adobe Reader on both platforms and the files fail to open with the message: "There was an error processing a page.  There was a problem reading this document (14)."   So, it seams that Adobe Reader believes that there is problem with this file.  However, from my very limited understanding of PDF structure, I have no idea what might be wrong, so I don't know how to fix it.  The file is written unencrypted.  It is about as simple a PDF as we can generate - a red-filled rectangle.  I would greatly appreciate any suggestions or help.
    Here is a sample PDF:
    %PDF-1.3
    %∑æ≠™
    1 0 obj
    <<
    /Type /Catalog
    /Pages 2 0 R
    >>
    endobj
    2 0 obj
    <<
    /Type /Pages
    /Kids [ 4 0 R ]
    /Count 1
    >>
    endobj
    3 0 obj
    <<
    /Producer (Haru Free PDF Library 2.3.0-dev)
    >>
    endobj
    4 0 obj
    <<
    /Type /Page
    /MediaBox [ 0 0 236 207 ]
    /Contents 5 0 R
    /Resources <<
    /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
    /Pattern <<
    /Type /Pattern
    /PatternType 1
    /PaintType 2
    /TilingType 2
    /BBox [ 0 0 100 100 ]
    /XStep 100
    /YStep 100
    >>
    >>
    /Parent 2 0 R
    >>
    endobj
    5 0 obj
    <<
    /Length 6 0 R
    >>
    stream
    1 0 0 -1 -118 296 cm
    1 w
    0 0 0 RG
    [] 0 d
    1 0.3 0.3 rg
    q
    % Rect
    119.25 90 m
    352.5 90 l
    352.5 294.75 l
    119.25 294.75 l
    119.25 90 l
    h
    B
    Q
    endstream
    endobj
    6 0 obj
    135
    endobj
    xref
    0 7
    0000000000 65535 f
    0000000015 00000 n
    0000000064 00000 n
    0000000123 00000 n
    0000000188 00000 n
    0000000458 00000 n
    0000000647 00000 n
    trailer
    <<
    /Root 1 0 R
    /Info 3 0 R
    /Size 7
    >>
    startxref
    666
    %%EOF

    You would need to post a sample PDF that demonstrates the problem.  All you posted there is text.  (PDF is a BINARY file format)
    From: Adobe Forums <[email protected]<mailto:[email protected]>>
    Reply-To: "[email protected]<mailto:[email protected]>" <[email protected]<mailto:[email protected]>>
    Date: Thu, 13 Oct 2011 11:02:42 -0700
    To: Leonard Rosenthol <[email protected]<mailto:[email protected]>>
    Subject: Can't open libHaru-generated PDF with Reader, other readers work.
    Can't open libHaru-generated PDF with Reader, other readers work.
    created by Fred Snerd<http://forums.adobe.com/people/Fred+Snerd> in PDF Language and Specifications - View the full discussion<http://forums.adobe.com/message/3969828#3969828

  • Viewing PC-generated pdfs in Preview for Mac

    I have a pdf that I generated on a PC (Windows 7, using Acrobat 9). The front cover includes an image that was previously pdf'd then inserted as a cover graphic. When viewed using Acrobat Reader, everything looks fine both on a PC and a Mac. However, when viewed on a Mac using Preview for Mac, there are lines through the cover graphic.
    Has anyone else come across problems viewing PC-generated pdfs in Preview for Mac?

    I always find that Preview can garble certain graphic elements or even slightly alter the over-all color of the PDF. However, I also find it is a lot quicker to deal with PDFs, especially when it comes to printing. Sometimes I get a PDF that I send to print on our Canon copier and I end up canceling the print job after 10-15 minutes because it's still processing. I open that same PDF in Preview and it prints in less than a minute. The same can be said of InDesign so on certain jobs I end up exporting as a PDF and printing from Preview. This might say a lot about Adobe's Printing Engine... (sorry, off-topic)

  • InDesign to PDF  - Client wants clickable ads

    I'm laying out a magazine with ads in InDesign CS4 that will be converted to PDF for online distribution.
    The client would like the reader to be able to click on the ads to be taken to the advertiser's website. I'm not making up the ads myself; I'm just placing provided image files.
    How would this be accomplished either in InDesign or in Acrobat?  I'm striking out on searches, since I don't know what the feature is called.
    Thanks for your help,
    Michele

    THANK YOU! That's the information I needed.
    Michele
    1106 Design will be closed the week of June 29 through July 3, 2009.
    Normal business hours will resume on Monday, July 6.
    Thank you.
    From: SavvyPop <[email protected]>
    Reply-To: <[email protected]>
    Date: Wed, 17 Jun 2009 15:22:14 -0600
    To: Michele DeFilippo <[email protected]>
    Subject: InDesign to PDF  - Client wants clickable ads
    You can easily do this in the already created PDF providing you use Acrobat
    Pro...I assume you do.
    Open the Adavanced Editing tools, and select the Link tool. From there you can
    marquee whatever area you wish to be the hotspot clickable area to trigger a
    action...the actions include open a webpage amoun other options.
    >

  • Email Invoice as PDF

    Hi folks,
    I'm trying to send a sapscript/smartform invoice as a PDF attached to an email.  I've been reading a number of posting on this topic but it is still unclear to me how to get this to work.  (R/3 4.7)
    I need to setup a new output type with transmission media 5.  Is that correct?  The email address will be pulled from the customer's master data record.  Correct?
    What do I use as the processing routine?  Do I have to create a custom routine?
    Do I need to define a communications strategy with communication type INT?
    As I understand it, the system will automatically convert to PDF as long as SCOT is configured that way (default). 
    What else am I missing?
    Thanks everyone,
    Clint

    Hi,
    1.No need to create the custom routine.
      2.The system default cann't generate the PDF.It generates OTF , Format.
      3.We need to convert the OTF into PDF.
      4.You have to maintain the Email in SCOT.
    The following is the code for sending through mail for script:
    Best LInk:
    /people/pavan.bayyapu/blog/2005/08/30/sending-html-email-from-sap-crmerp
    Observe this:
    REPORT Z_SCRIPT .
    DATA: itcpo LIKE itcpo,
    tab_lines LIKE sy-tabix.
    Variables for EMAIL functionality
    DATA: maildata LIKE sodocchgi1.
    DATA: mailpack LIKE sopcklsti1 OCCURS 2 WITH HEADER LINE.
    DATA: mailhead LIKE solisti1 OCCURS 1 WITH HEADER LINE.
    DATA: mailbin LIKE solisti1 OCCURS 10 WITH HEADER LINE.
    DATA: mailtxt LIKE solisti1 OCCURS 10 WITH HEADER LINE.
    DATA: mailrec LIKE somlrec90 OCCURS 0 WITH HEADER LINE.
    DATA: solisti1 LIKE solisti1 OCCURS 0 WITH HEADER LINE.
    *PERFORM send_form_via_email.
    FORM SEND_FORM_VIA_EMAIL *
    FORM send_form_via_email.
    CLEAR: maildata, mailtxt, mailbin, mailpack, mailhead, mailrec.
    REFRESH: mailtxt, mailbin, mailpack, mailhead, mailrec.
    Creation of the document to be sent File Name
    maildata-obj_name = 'TEST'.
    Mail Subject
    maildata-obj_descr = 'Subject'.
    Mail Contents
    mailtxt-line = 'Here is your file'.
    APPEND mailtxt.
    Prepare Packing List
    PERFORM prepare_packing_list.
    Set recipient - email address here!!!
    mailrec-receiver = 'email.COM'.
    mailrec-rec_type = 'U'.
    APPEND mailrec.
    Sending the document
    CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
    document_data = maildata
    put_in_outbox = ' '
    TABLES
    packing_list = mailpack
    object_header = mailhead
    contents_bin = mailbin
    contents_txt = mailtxt
    receivers = mailrec
    EXCEPTIONS
    too_many_receivers = 1
    document_not_sent = 2
    operation_no_authorization = 4
    OTHERS = 99.
    ENDFORM.
    Form PREPARE_PACKING_LIST
    FORM prepare_packing_list.
    CLEAR: mailpack, mailbin, mailhead.
    REFRESH: mailpack, mailbin, mailhead.
    DESCRIBE TABLE mailtxt LINES tab_lines.
    READ TABLE mailtxt INDEX tab_lines.
    maildata-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( mailtxt ).
    Creation of the entry for the compressed document
    CLEAR mailpack-transf_bin.
    mailpack-head_start = 1.
    mailpack-head_num = 0.
    mailpack-body_start = 1.
    mailpack-body_num = tab_lines.
    mailpack-doc_type = 'RAW'.
    APPEND mailpack.
    Creation of the document attachment
    This form gets the OTF code from the SAPscript form.
    If you already have your OTF code, I believe that you may
    be able to skip this form. just do the following code, looping thru
    your SOLISTI1 and updating MAILBIN.
    PERFORM get_otf_code.
    LOOP AT solisti1.
    MOVE-CORRESPONDING solisti1 TO mailbin.
    APPEND mailbin.
    ENDLOOP.
    DESCRIBE TABLE mailbin LINES tab_lines.
    mailhead = 'TEST.OTF'.
    APPEND mailhead.
    Creation of the entry for the compressed attachment
    mailpack-transf_bin = 'X'.
    mailpack-head_start = 1.
    mailpack-head_num = 1.
    mailpack-body_start = 1.
    mailpack-body_num = tab_lines.
    mailpack-doc_type = 'OTF'.
    mailpack-obj_name = 'TEST'.
    mailpack-obj_descr = 'Subject'.
    mailpack-doc_size = tab_lines * 255.
    APPEND mailpack.
    ENDFORM.
    Form GET_OTF_CODE
    FORM get_otf_code.
    DATA: BEGIN OF otf OCCURS 0.
    INCLUDE STRUCTURE itcoo .
    DATA: END OF otf.
    DATA: itcpo LIKE itcpo.
    DATA: itcpp LIKE itcpp.
    CLEAR itcpo.
    itcpo-tdgetotf = 'X'.
    Start writing OTF code
    CALL FUNCTION 'OPEN_FORM'
    EXPORTING
    form = 'Z08V3_COLLI'
    language = sy-langu
    options = itcpo
    dialog = ' '
    EXCEPTIONS
    OTHERS = 1.
    CALL FUNCTION 'START_FORM'
    EXCEPTIONS
    error_message = 01
    OTHERS = 02.
    CALL FUNCTION 'WRITE_FORM'
    EXPORTING
    window = 'MAIN'
    EXCEPTIONS
    error_message = 01
    OTHERS = 02.
    Close up Form and get OTF code
    CALL FUNCTION 'END_FORM'
    EXCEPTIONS
    error_message = 01
    OTHERS = 02.
    MOVE-CORRESPONDING itcpo TO itcpp.
    CALL FUNCTION 'CLOSE_FORM'
    IMPORTING
    result = itcpp
    TABLES
    otfdata = otf
    EXCEPTIONS
    OTHERS = 1.
    Move OTF code to structure SOLI form email
    CLEAR solisti1. REFRESH solisti1.
    LOOP AT otf.
    solisti1-line = otf.
    APPEND solisti1.
    ENDLOOP.
    ENDFORM
    Below points is for ur testing purpose.
    U can check the status of the mail in the transaction SOST.
    Execute this transaction for the date range. If the traffic light is in yellow colour then do like this.
    Utilities->Start send process->Give trans method as INT and press enter. Mail will go immediately.
    If the above logic don't work for u then TRY FM SO_OBJECT_SEND for sending mail.
    for Smartform converting the OTF to PDF:
    REPORT zsuresh_test.
    Variable declarations
    DATA:
    w_form_name TYPE tdsfname VALUE 'ZSURESH_TEST',
    w_fmodule TYPE rs38l_fnam,
    w_cparam TYPE ssfctrlop,
    w_outoptions TYPE ssfcompop,
    W_bin_filesize TYPE i, " Binary File Size
    w_FILE_NAME type string,
    w_File_path type string,
    w_FULL_PATH type string.
    Internal tables declaration
    Internal table to hold the OTF data
    DATA:
    t_otf TYPE itcoo OCCURS 0 WITH HEADER LINE,
    Internal table to hold OTF data recd from the SMARTFORM
    t_otf_from_fm TYPE ssfcrescl,
    Internal table to hold the data from the FM CONVERT_OTF
    T_pdf_tab LIKE tline OCCURS 0 WITH HEADER LINE.
    This function module call is used to retrieve the name of the Function
    module generated when the SMARTFORM is activated
    CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
    formname = w_form_name
    VARIANT = ' '
    DIRECT_CALL = ' '
    IMPORTING
    fm_name = w_fmodule
    EXCEPTIONS
    no_form = 1
    no_function_module = 2
    OTHERS = 3
    IF sy-subrc 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
    Calling the SMARTFORM using the function module retrieved above
    GET_OTF parameter in the CONTROL_PARAMETERS is set to get the OTF
    format of the output
    w_cparam-no_dialog = 'X'.
    w_cparam-preview = space. " Suppressing the dialog box
    " for print preview
    w_cparam-getotf = 'X'.
    Printer name to be used is provided in the export parameter
    OUTPUT_OPTIONS
    w_outoptions-tddest = 'LP01'.
    CALL FUNCTION w_fmodule
    EXPORTING
    ARCHIVE_INDEX =
    ARCHIVE_INDEX_TAB =
    ARCHIVE_PARAMETERS =
    control_parameters = w_cparam
    MAIL_APPL_OBJ =
    MAIL_RECIPIENT =
    MAIL_SENDER =
    output_options = w_outoptions
    USER_SETTINGS = 'X'
    IMPORTING
    DOCUMENT_OUTPUT_INFO =
    job_output_info = t_otf_from_fm
    JOB_OUTPUT_OPTIONS =
    EXCEPTIONS
    formatting_error = 1
    internal_error = 2
    send_error = 3
    user_canceled = 4
    OTHERS = 5
    IF sy-subrc 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
    t_otf] = t_otf_from_fm-otfdata[.
    Function Module CONVERT_OTF is used to convert the OTF format to PDF
    CALL FUNCTION 'CONVERT_OTF'
    EXPORTING
    FORMAT = 'PDF'
    MAX_LINEWIDTH = 132
    ARCHIVE_INDEX = ' '
    COPYNUMBER = 0
    ASCII_BIDI_VIS2LOG = ' '
    PDF_DELETE_OTFTAB = ' '
    IMPORTING
    BIN_FILESIZE = W_bin_filesize
    BIN_FILE =
    TABLES
    otf = T_OTF
    lines = T_pdf_tab
    EXCEPTIONS
    ERR_MAX_LINEWIDTH = 1
    ERR_FORMAT = 2
    ERR_CONV_NOT_POSSIBLE = 3
    ERR_BAD_OTF = 4
    OTHERS = 5
    IF sy-subrc 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    To display File SAVE dialog window
    CALL METHOD cl_gui_frontend_services=>file_save_dialog
    EXPORTING
    WINDOW_TITLE =
    DEFAULT_EXTENSION =
    DEFAULT_FILE_NAME =
    FILE_FILTER =
    INITIAL_DIRECTORY =
    WITH_ENCODING =
    PROMPT_ON_OVERWRITE = 'X'
    CHANGING
    filename = w_FILE_NAME
    path = w_FILE_PATH
    fullpath = w_FULL_PATH
    USER_ACTION =
    FILE_ENCODING =
    EXCEPTIONS
    CNTL_ERROR = 1
    ERROR_NO_GUI = 2
    NOT_SUPPORTED_BY_GUI = 3
    others = 4
    IF sy-subrc 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    Use the FM GUI_DOWNLOAD to download the generated PDF file onto the
    presentation server
    CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
    BIN_FILESIZE = W_bin_filesize
    filename = w_FULL_PATH
    FILETYPE = 'BIN'
    APPEND = ' '
    WRITE_FIELD_SEPARATOR = ' '
    HEADER = '00'
    TRUNC_TRAILING_BLANKS = ' '
    WRITE_LF = 'X'
    COL_SELECT = ' '
    COL_SELECT_MASK = ' '
    DAT_MODE = ' '
    CONFIRM_OVERWRITE = ' '
    NO_AUTH_CHECK = ' '
    CODEPAGE = ' '
    IGNORE_CERR = ABAP_TRUE
    REPLACEMENT = '#'
    WRITE_BOM = ' '
    TRUNC_TRAILING_BLANKS_EOL = 'X'
    WK1_N_FORMAT = ' '
    WK1_N_SIZE = ' '
    WK1_T_FORMAT = ' '
    WK1_T_SIZE = ' '
    IMPORTING
    FILELENGTH =
    tables
    data_tab = T_pdf_tab
    FIELDNAMES =
    EXCEPTIONS
    FILE_WRITE_ERROR = 1
    NO_BATCH = 2
    GUI_REFUSE_FILETRANSFER = 3
    INVALID_TYPE = 4
    NO_AUTHORITY = 5
    UNKNOWN_ERROR = 6
    HEADER_NOT_ALLOWED = 7
    SEPARATOR_NOT_ALLOWED = 8
    FILESIZE_NOT_ALLOWED = 9
    HEADER_TOO_LONG = 10
    DP_ERROR_CREATE = 11
    DP_ERROR_SEND = 12
    DP_ERROR_WRITE = 13
    UNKNOWN_DP_ERROR = 14
    ACCESS_DENIED = 15
    DP_OUT_OF_MEMORY = 16
    DISK_FULL = 17
    DP_TIMEOUT = 18
    FILE_NOT_FOUND = 19
    DATAPROVIDER_EXCEPTION = 20
    CONTROL_FLUSH_ERROR = 21
    OTHERS = 22
    IF sy-subrc 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    Regards,
    If helpful give points(Don't forget)

Maybe you are looking for