Extracting Base64 images embeded inside XML and Convert it into PDF using Biztalk

Hi,
I'm presently working in a scenario, where we will be getting huge XML Files containing Base64 encoded images. The scenario goes like this :-
1) Client will dump the XML files with embedded Base64 images in a sFTP location.
1) Firstly, we have to extract Base64 encoded images and the metadata from the XML file.
3) Secondly, we need to convert the extracted Base64 encoded image into multiple pdf.
4) Then merge the PDF's into a single file.
5) Then the merge pdf will store to a particular location.
5) It is presume that, the file will be of very big in size ~ 1 GB XML file, so we need to take care of the performance as well.
The sample xml looks like:-
<ns0:tran xmlns:ns0="http://Sample.Schemas.Record_XML">
  <tranheader>
  </tranheader>
  <item>
    <image>
      <frontimage>
        <frontimage> image 1 part 1</frontimage>
      </frontimage>
      <rearimage>
        <rearimage>image 1 part 2</rearimage>
      </rearimage>
      <frontimage>
        <frontimage> image 2 part 1</frontimage>
      </frontimage>
      <rearimage>
        <rearimage>image 2 part 2</rearimage>
      </rearimage>
      <frontimage>
        <frontimage> image 3 part 1</frontimage>
      </frontimage>
      <rearimage>
        <rearimage>image 3 part 2</rearimage>
      </rearimage>
    </image>
  </item>
  <trantrailer>
  </trantrailer>
</ns0:tran>
Thanks & Regards

Do you really need to use BizTalk for this requirement? This can be done better with standard .NET code through a Windows service/schedule task/ if you want to poll,
you can implement file watcher class and poll the file as when it arrive to SFTP folder and convert the image in base64 to PDFs.
Another point, I don’t know why you want to “convert the extracted Base64 encoded
image into multiple pdf” (Point-3) and “Then merge the PDF's into a single file”-
point4. You can create a single PDF file (unless I don’t know the reason for creating separate PDF file and merge it again as single PDF file)
Anyway, if you still need to use BizTalk, you have somes options in general:
Option1:
Receive the message using BizTalk receive location using passthrouhg pipeline at receive end
Create a send port with filter for receive portname. In the send port use a custom send pipeline. In the send pipeline use a custom pipeline component which will extract the base64 content from
the XML file, convert the base64 encoded image as PDF and send the PDF file in the send port level.
Option 2 – this options works better if you have some process based on your
<tranheader> record:
Receive the message using BizTalk receive location using a custom pipeline strip off, decode and store the base64
encoded document in a temporary store (file system). So when the message is published in message box db, the message doesn’t contain the heafty encoded64 data part, message will be light weight when its published into message box.
Process the XML message (without bae64 encoded document) with or without orchestration where you will do processing based on your
<tranheader> record.
In send last moment –at send port level, retrieve the stored file from the
temporary store (file system), convert the image to PDF (i,e, hefty processing like creation of PDFs/merging) can be done at the send pipeline level and send the PDF file
to destination.
Following are the guidelines you should keep in mind if you need to achieve this process in BizTalk:
Try to avoid publishing the hefty message to message box.
Conversion of base64 to PDF can be done only using a .NET code. So your options to do this conversion in BizTalk are either in Receive pipeline/send pipeline/ .NET helper in orchestration.
Try not to use Orchestration as much as possible, because of heavy processing and message transmission is already involved.
Following articles shall help you in this context:
Dealing with base64 encoded XML documents in BizTalk
To convert Base64 to PDF/JPEG using C# code:
TechNet-Wiki Code: Converting Base64 strings
to Bitmap images
Convert Image to Base64 String and Base64
String to Image
Base64 encoding and decoding in .NET
Regards,
M.R.Ashwin Prabhu
If this answers your question please mark it accordingly. If this post is helpful, please vote as helpful by clicking the upward arrow mark next to my reply.

Similar Messages

  • How do i add images in the header and footer to a PDF using iText

    Hi ,
    I want to add images to the header and footer of every page while i am genrating a pdf i have created a separate class called EndPage which i am instanceiating its default constructor in another class 's button action method.
    The above code genrates a PDF for me however it genrates a file with file size zero bytes and does not open it following is my sample code
    //**********Any Help would be appreciated
    Thank You
    public class My_Class
    public String pdf_action()
    EndPage ep=new EndPage();
    return null;
    }//My_class Ends
    class EndPage extends PdfPageEventHelper
    * Demonstrates the use of PageEvents.
    * @param args no arguments needed
    public EndPage()
    try {
    com.lowagie.text.Document document = new Document(PageSize.A4, 50, 50, 70, 70);
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("D://proposals/endpage.pdf"));
    writer.setPageEvent(new EndPage());
    document.open();
    String text = "Lots of text. ";
    for (int k = 0; k < 10; ++k)
    text += text;
    document.add(new Paragraph(text));
    document.close();
    catch (Exception de) {
    de.printStackTrace();
    public void onEndPage(PdfWriter writer, Document document) {
    try {
    Rectangle page = document.getPageSize();
    PdfPTable head = new PdfPTable(3);
    for (int k = 1; k <= 6; ++k)
    head.addCell("head " + k);
    head.setTotalWidth(page.width() - document.leftMargin() - document.rightMargin());
    head.writeSelectedRows(0, -1, document.leftMargin(), page.height() - document.topMargin() + head.getTotalHeight(),
    writer.getDirectContent());
    PdfPTable foot = new PdfPTable(3);
    for (int k = 1; k <= 6; ++k)
    foot.addCell("foot " + k);
    foot.setTotalWidth(page.width() - document.leftMargin() - document.rightMargin());
    foot.writeSelectedRows(0, -1, document.leftMargin(), document.bottomMargin(),
    writer.getDirectContent());
    catch (Exception e) {
    throw new ExceptionConverter(e);
    }

    Hi,
    Thanks for the quick response.
    The problem is that when I keep the logo as a watermark, the pdf is not adjusting itself to include the logo as header.
    But if I add a header text via Tools -> Headers and Footers, the pdf is adjusting itself so that the header text is at the beginning , not overlapping with the contents of pdf.
    But while using logo as watermark, some times overlapping of the pdf contents and logo is happening.
    Is there any way to add a logo in the Header and Footer via the option in Tools -> Headers and Footers
    Thanks,
    Vidhya

  • Converting HTML into PDF

    Hello ABAP Experts,
    I have a request to convert a HTML Response (FM: HTTP2_GET) into a PDF Document.
    Has any body an idea how to handle that.
    Thank you very much for you answers.
    Kind regards
    Axel

    The easiest way to convert web pages/sites into PDF is with Acrobat! Important: this is Acrobat (costs a few dollars) and not Acrobat Reader!
    Acrobat has a web capture tool. With the older version I tested there was some minor problems.
    (1) It is not recognized as a browser we support. You will have to knock out the browser checking for this to work. Look at the cl_htmlb_content->runtime_validation. The last case statement. Modify your system to temporarily comment this out. (Do not forget to place it back!).
    (2) The older version I tested with had problems to convert complex pages into PDF. The new rendering we use is to browser specific. Your milage might vary.
    Alternative could be just to "print" the page from the browser into a PDFWriter (kind of printer driver that comes with Acrobat). This actually worked very well.
    Alternative is just to make screenshots into word document and convert this into PDF.
    > Please help me ..
    With this, I think we have now helped you. In return, you can help us with a nice append (or better a small weblog) about the "huge project that was a challange". These war stories shared by the fire side makes for interesting reading, and I am sure other people would also be interested in seeing what you achieved. Looking forward to it.
    ++bcm

  • Retrieving Images Embedded In XML (from rss using xsl)

    I am trying to comsuem and rss feed into my site but i dont seem to see an "image" element in the Item node. can someoen tell me how to retrieve Images Embedded In XML dreamwaever. i am using an xsl fragment on a pap server.
    Doh

    Hi there, I am using a jsp page that takes a xml page from the internet (user defines what page it is) it then takes the xsl feed and transforms the xml with a TransformerFactory object to get the results as an html page, the error is received when the jsp page is called
    Ian

  • ABAP program for BAPI and convert DB into XML

    ABAP program for BAPI and convert DB into XML
    Thank you,
    Regards,
    Jagrut BharatKumar Shukla

    Refer the link -
    give an example of bapi coding?
    how can we transfer huge amount of data from database server to xml format
    Regards,
    Amit
    Reward all helpful replies.

  • Adobe X PDF files converted to jpg, edited and converted back to PDF have ragged, unclear text.  I didn't have this problem with Acrobat 9 standard.  What is the remedy for this.  If this is the best I can expect, I won't be able to use X standard.

    Adobe X PDF files converted to jpg, edited and converted back to PDF have ragged, unclear text.  I didn't have this problem with Acrobat 9 standard.  What is the remedy for this.  If this is the best I can expect, I won't be able to use X standard.

    I can't imagine any worse workflow than converting to JPEG to edit text, then back to PDF. Text in a PDF is a vector thing, smooth at all resolutions. And JPEG is made for photos. EVERY conversion to JPEG and back loses quality but how much loss there is will vary.
    If you must go to an image format, try PNG.

  • Can i open eps file in photoshop element 12 and convert it into jpeg?

    can i open eps file in photoshop element 12 and convert it into jpeg?

    You can open it in Irfanview (free), then save as JPEG.
    Download the program here:
    IrfanView - Official Homepage - one of the most popular viewers worldwide

  • To extract the users permission on files and folders in sharepoint 2010 using client object model

    To extract the users permission on files and folders in sharepoint 2010 using client object model

    Hello,
    This is sample code to get item level permisison: (Just written in notepad so it is not tested)
    public void ItemLevelPermission()
    SecurableObject curObj = null;
    ListItem curItem = ctx.Web.Lists.GetByTitle("LibraryName").GetItemById(ItemId); -> Use Id of file or folder.
    IEnumerable roles = null;
    roles = ctx.LoadQuery(
    curObj.RoleAssignments.Include(
    roleAsg => roleAsg.Member,
    roleAsg => roleAsg.RoleDefinitionBindings.Include(
    roleDef => roleDef.Name, // for each role definition, include roleDef’s Name
    roleDef => roleDef.Description)));
    ctx.ExecuteQuery();
    Hope it could help
    Hemendra:Yesterday is just a memory,Tomorrow we may never see
    Please remember to mark the replies as answers if they help and unmark them if they provide no help

  • Convert PO into PDF format and send by an email to vendor

    We are using SAP version ECC 5.0. We want to convert SAP PO into PDF format and attached it in an email and send it to vendor. Please give me some tips to achieve this?
    Thanks in advance!
    Mrudula

    Hi!
    The way to achieve your goal depends on how you get PO printed - by sapscript, smartform or abap list.
    As have been mentioned you can create spool request and process it. But for sapscript and smartform you can proceed without spool request - just get back OTF data from corresponding FM and convert it to PDF.
    In case of smartform:
    CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
    formname = 'ZFORMNAME'
    IMPORTING
    fm_name = v_form_name
    EXCEPTIONS
    no_form = 1
    no_function_module = 2
    OTHERS = 3.
    w_ctrlop-getotf = 'X'.
    w_ctrlop-no_dialog = 'X'.
    w_compop-tdnoprev = 'X'.
    CALL FUNCTION v_form_name
    EXPORTING
    control_parameters = w_ctrlop
    output_options = w_compop
    user_settings = 'X'
    IMPORTING
    job_output_info = w_return
    EXCEPTIONS
    formatting_error = 1
    internal_error = 2
    send_error = 3
    user_canceled = 4
    OTHERS = 5.
    i_otf[] = w_return-otfdata[].
    In case of sapscript:
    options-tdgetotf = 'X'.
    CALL FUNCTION 'OPEN_FORM'
    EXPORTING
    options = options
    CALL FUNCTION 'CLOSE_FORM'
    IMPORTING
    RESULT =
    RDI_RESULT =
    TABLES
    otfdata = i_otf
    EXCEPTIONS
    unopened = 1
    bad_pageformat_for_print = 2
    send_error = 3
    spool_error = 4
    OTHERS = 5.
    Then convert to PDF
    DATA:
    pdf LIKE tline OCCURS 100 WITH HEADER LINE,
    v_len_in LIKE sood-objlen.
    CALL FUNCTION 'CONVERT_OTF'
    EXPORTING
       format                      = 'PDF'
       max_linewidth               = 132
      ARCHIVE_INDEX               = ' '
    IMPORTING
       bin_filesize                =  v_len_in
        TABLES
          otf                         = i_otf
          lines                       = pdf
       EXCEPTIONS
         err_max_linewidth           = 1
         err_format                  = 2
         err_conv_not_possible       = 3
         OTHERS                      = 4
    Then send as attachment as Max proposed.
    Regards,
    Maxim.

  • Cannot convert webpages to pdf using Acrobat X Pro with IE9 and Windows 7, worked fine until a few m

    Cannot convert webpages to pdf using Acrobat X Pro with IE9 and Windows 7, worked fine until a few months and updates ago

    I tried your suggestion, not knowing that the direct pdf printer would also "save as" PDF, but when I try your suggestion and use the Adobe PDF printer that is a direct creation of the PDF from the browser (IE9), instead of the "black out" areas I get when I use the "Convert to" button, I get missing blocks of the resulting PDF, and only get the first 1/4 to 1/3 of the webpage.
    Just to clarify, when I said I print the webpage and then scan, that is a work around I have to do if I need a scanned version of the way a webpage appears on a particular date and time, instead of the one step process I used to be able to do when Adobe Acrobat would actually convert the webpage to a pdf without blackout areas or, if I try your suggestion, blank spots with a partial webpage. But the idea was one I had not thought of and I appreciated the thought.
    Yes, Acrobat was updated, and is updated, and was working fine until a few months ago, Win 7 and Office 32 bit versions, Office 2010

  • How do I download a video and convert it into an flv file? In previous versions, all I had to do was pick the resolution and it was done automaticlly. I use DVDFLICK to burn my downloaded videos to DVD.

    In previous versions of Firefox, I was able to easily download and convert videos into .flv files. I was then able to burn DVDs of theses downloaded videos using DVDFLICK. I'm now unable to do this using Firefox6.0.2?

    Hello,
    There is a process by which you can produce a BluRay encode on a red laser DVD. See link below
    from Ken Stone site.
    http://www.kenstone.net/fcphomepage/burn_br_mac_superdrivestone.html
    Also this can be done in Toast 10 with the BluRay plugin, somewhat easier.
    Good Luck, Tom

  • Problem with converting html to pdf using LiveCycle ES Java API

    I am using this code to convert html to pdf.
    * 1. adobe-generatepdf-client.jar
    * 2. adobe-livecycle-client.jar
    * 3. adobe-usermanager-client.jar
    * 4. adobe-utilities.jar
    * 5. wlclient.jar
    import java.io.File;
    import java.util.Properties;
    import com.adobe.idp.Document;
    import com.adobe.idp.dsc.clientsdk.ServiceClientFactory;
    import com.adobe.idp.dsc.clientsdk.ServiceClientFactoryProperties;
    import com.adobe.livecycle.generatepdf.client.GeneratePdfServiceClient;
    import com.adobe.livecycle.generatepdf.client.HtmlToPdfResult;
    public class ConvertHTML {
       public static void main(String[] args)
            try{
            //Set connection properties required to invoke LiveCycle ES                             
            Properties connectionProps = new Properties();
            connectionProps.setProperty(ServiceClientFactoryProperties.DSC_DEFAULT_EJB_ENDPOINT, "t3://localhost:7001");
            connectionProps.setProperty(ServiceClientFactoryProperties.DSC_TRANSPORT_PROTOCOL,Service ClientFactoryProperties.DSC_EJB_PROTOCOL);       
            connectionProps.setProperty(ServiceClientFactoryProperties.DSC_SERVER_TYPE, "WebLogic");
            connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_USERNAME, "administrator");
            connectionProps.setProperty(ServiceClientFactoryProperties.DSC_CREDENTIAL_PASSWORD, "password");
            //Create a ServiceClientFactory instance
            ServiceClientFactory factory = ServiceClientFactory.createInstance(connectionProps);
              //Create a GeneratePdfServiceClient object
            GeneratePdfServiceClient pdfGenClient = new GeneratePdfServiceClient(factory);
           //Get an HTML document to convert to a PDF document a
            String inputFileName = "http://www.adobe.com";
            //String inputFileName = "C:\\Documents and Settings\\venkat\\Desktop\\Adobe.htm";
            String securitySettings = "No Security";
            String fileTypeSettings = "Standard";
    System.out.println("one");
            //Convert HTML content to a PDF document
            HtmlToPdfResult result = pdfGenClient.htmlToPDF2(inputFileName, fileTypeSettings, securitySettings, null, null);
    System.out.println("two");         
            //Get the newly created document
            Document createdDocument = result.getCreatedDocument();
            //Save the PDF document as a PDF file
            createdDocument.copyToFile(new File("C:\\test.pdf"));
        catch (Exception e) {
            System.out.println("Error OCCURRED: " + e.getMessage());
            e.printStackTrace();
    I can able to compile this class but while running i am getting error like below.
    Error OCCURRED: Internal error.
    ALC-DSC-000-000: com.adobe.idp.dsc.DSCRuntimeException: Internal error.
            at com.adobe.idp.dsc.provider.impl.ejb.EjbMessageDispatcher.doSend(EjbMessageDispatcher.java
    :160)
            at com.adobe.idp.dsc.provider.impl.base.AbstractMessageDispatcher.send(AbstractMessageDispat
    cher.java:57)
            at com.adobe.idp.dsc.clientsdk.ServiceClient.invoke(ServiceClient.java:208)
            at com.adobe.livecycle.generatepdf.client.GeneratePdfServiceClient.htmlToPDF2(GeneratePdfSer
    viceClient.java:666)
            at ConvertHTML.main(ConvertHTML.java:84)
    Caused by: java.rmi.RemoteException: Remote EJBObject lookup failed for 'ejb/Invocation'; nested exc
    eption is:
            org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 203  completed: No
            at com.adobe.idp.dsc.provider.impl.ejb.EjbMessageDispatcher.initialise(EjbMessageDispatcher.
    java:101)
            at com.adobe.idp.dsc.provider.impl.ejb.EjbMessageDispatcher.doSend(EjbMessageDispatcher.java
    :130)
            ... 4 more
    Caused by: org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 203  completed: No
            at com.sun.corba.se.impl.logging.ORBUtilSystemException.writeErrorSend(Unknown Source)
            at com.sun.corba.se.impl.logging.ORBUtilSystemException.writeErrorSend(Unknown Source)
            at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.writeLock(Unknown Source)
            at com.sun.corba.se.impl.encoding.BufferManagerWriteStream.sendFragment(Unknown Source)
            at com.sun.corba.se.impl.encoding.BufferManagerWriteStream.sendMessage(Unknown Source)
            at com.sun.corba.se.impl.encoding.CDROutputObject.finishSendingMessage(Unknown Source)
            at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.finishSendingRequest(Unknown Sour
    ce)
            at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.marshalingComplete1(Unkno
    wn Source)
            at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.marshalingComplete(Unknow
    n Source)
            at com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.invoke(Unknown Source)
            at com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.is_a(Unknown Source)
            at org.omg.CORBA.portable.ObjectImpl._is_a(Unknown Source)
            at weblogic.corba.j2ee.naming.Utils.narrowContext(Utils.java:126)
            at weblogic.corba.j2ee.naming.InitialContextFactoryImpl.getInitialContext(InitialContextFact
    oryImpl.java:94)
            at weblogic.corba.j2ee.naming.InitialContextFactoryImpl.getInitialContext(InitialContextFact
    oryImpl.java:31)
            at weblogic.jndi.WLInitialContextFactory.getInitialContext(WLInitialContextFactory.java:41)
            at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
            at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
            at javax.naming.InitialContext.init(Unknown Source)
            at javax.naming.InitialContext.<init>(Unknown Source)
            at com.adobe.idp.dsc.provider.impl.ejb.EjbMessageDispatcher.initJndiContext(EjbMessageDispat
    cher.java:213)
            at com.adobe.idp.dsc.provider.impl.ejb.EjbMessageDispatcher.getJndiContext(EjbMessageDispatc
    her.java:226)
            at com.adobe.idp.dsc.provider.impl.ejb.EjbMessageDispatcher.initialise(EjbMessageDispatcher.
    java:87)
            ... 5 more
    can u plz give me some way to do the convertion.

    Yes Sir.....Thanks for ur suggestion.....
    But i didn't find exact solution..well..yes i found some but not exactly there were not in the way i required...I jus need to convert HTML to PDF using iText API for java.....I already used some classes in that like HTMLParser.....etc..
    So Any thing else...Any one...Sure can help me in this................

  • Setting Font for converting multiple text files into PDF using VB 6.0

    Dear All,
    Am converting multiple text files into PDF using VB6.0. Currently, am unable to control the font face and size for the generated files. Below is the procedure am using for each file;
    Public Sub proc_convert_to_PDF(srcFilename As String, destFilename As String)
    Dim p_AcroApp As CAcroApp
    Dim p_VDoc As CAcroAVDoc
    Dim p_DDoc As CAcroPDDoc
    Dim IsOk As Boolean
    Set p_AcroApp = CreateObject("AcroExch.App")
    Set p_VDoc = CreateObject("AcroExch.AVDoc")
    Call p_VDoc.Open(srcFilename, "")
    Set p_VDoc = p_AcroApp.GetActiveDoc
    If p_VDoc.IsValid Then
    Set p_DDoc = p_VDoc.GetPDDoc
    ' Fill in pdf properties.
    p_DDoc.SetInfo "Title", Format(Date, "dd-mm-yyy")
    p_DDoc.SetInfo "Subject", srcFilename
    If p_DDoc.Save(1 Or 4 Or 32, destFilename) <> True Then
    MsgBox "Failed to save " & srcFilename
    End If
    p_DDoc.Close
    End If
    'Close the PDF
    p_VDoc.Close True
    p_AcroApp.Exit
    'Clear Variables
    Set p_DDoc = Nothing
    Set p_VDoc = Nothing
    Set p_AcroApp = Nothing
    End Sub
    What I need;
    1) to be able to set the font face of the destination file ( destFilename)
    2) to be able to set the font size of the destination file ( destFilename)
    Am using Adobe Acrobat 7.0 Type Library
    Kindly Help.
    Thanks in advance

    We didn't say it doesn't work. We said it isn't supported.
    There are a number of other ways to make a PDF. The one which would
    give the most control is if your application directly printed to GDI,
    controlling the font directly. This could print to Adobe PDF.
    You could look for an application that gives control of font for
    printing.
    You could use a text-to-PostScript system and distill the result. You
    could even look for a non-Adobe text-to-PDF.
    Working in the unsupported and dangerous world you chose, the font
    size for text conversion is set (and this is very bad design from
    Adobe) in the settings for Create PDF > From Web Page. There is no API
    to this.
    Aandi Inston

  • Convert SmartForm into PDF(PDF should be password protected)

    Hi Friends,
                  This is my requirement.
    Need to convert SmartForm into PDF and this PDF should be send as an email with attachment and PDF should be password protected.
    Can anyone plz help me???

    Dear Jena,
                   This is my code.
       CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
        EXPORTING
          formname = 'ZBIN_SMARTFORM'
        IMPORTING
          fm_name  = v_fm.
    *&   ASSIGNING VALUES TO FORM CONTROL STRUCTURE AND FORM COMPOSER
      gs_ctrlop-getotf = 'X'.
      gs_ctrlop-device = 'PRINTER'.
      gs_ctrlop-preview = ' '.
      gs_ctrlop-no_dialog = 'X'.
      gs_outopt-tddest = 'LOCL'.
    *                   GETTING THE OTF DATA
      CALL FUNCTION v_fm
        EXPORTING
    *     ARCHIVE_INDEX        =
    *     ARCHIVE_INDEX_TAB    =
    *     ARCHIVE_PARAMETERS   =
          control_parameters   = gs_ctrlop
    *     MAIL_APPL_OBJ        =
    *     MAIL_RECIPIENT       =
    *     MAIL_SENDER          =
          output_options       = gs_outopt
          user_settings        = ' '
          wa_lfa1              = wa_lfa1
          wa_t001              = wa_t001
          wa_ekko              = wa_ekko
          wa_adrc              = wa_adrc
        IMPORTING
    *     DOCUMENT_OUTPUT_INFO =
          job_output_info      = gs_otfdata
    *     JOB_OUTPUT_OPTIONS   =
        TABLES
          it_ekpo              = it_ekpo
        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.
    *        ASSIGNING THE OTFDATA TO OTF STRUCTURE TABLE
      CLEAR gt_otf.
      gt_otf[] = gs_otfdata-otfdata[].
    *                   CONVERTING THE OTFDATA
      CLEAR gt_lines.
      CALL FUNCTION 'CONVERT_OTF'
        EXPORTING
          format                = 'PDF'
          max_linewidth         = 132
    *     ARCHIVE_INDEX         = ' '
    *     COPYNUMBER            = 0
    *     ASCII_BIDI_VIS2LOG    = ' '
    *     PDF_DELETE_OTFTAB     = ' '
    *     PDF_USERNAME          = ' '
    *     PDF_PREVIEW           = ' '
    *     USE_CASCADING         = ' '
        IMPORTING
          bin_filesize          = bin_file
    *     bin_file              = bin_file
        TABLES
          otf                   = gt_otf
          lines                 = gt_lines
        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.
      DATA l_file TYPE string  .
      CONCATENATE  'D:\usr\sap\CID\DVEBMGS00\work' '.PDF' INTO l_file.
      OPEN DATASET l_file FOR OUTPUT IN BINARY MODE  .
      IF  sy-subrc = 0 .
        LOOP AT gt_lines INTO gs_lines .
          TRANSFER gs_lines TO l_file .
        ENDLOOP.
        CLOSE DATASET l_file .
      ELSE.
        WRITE : / 'operating system could not open file' .
      ENDIF.
    *      ASSIGNING THE DESCRIPTION OF THE OBJECT SENT IN MAIL
      CLEAR gs_docdata.
      gs_docdata-obj_name = gc_tst.
      gs_docdata-obj_descr = gc_testing.
      gs_docdata-obj_langu = sy-langu.
    *        ASSIGNING THE EMAIL-ID TO STRUCTURE OF API RECIPIENT LIST TABLE
      CLEAR : gt_reclist,gs_reclist.
    ***IF INTERNAL MAIL-ID
    *  gs_reclist-receiver = sy-uname.
    *  gs_reclist-rec_type = 'B'.
    ***IF EXTERNAL MAIL-ID
      gs_reclist-receiver = '[email protected]'.
      gs_reclist-rec_type = 'U'.
      APPEND gs_reclist TO gt_reclist.
    *     PASSING THE SAP SCRIPT LINES TO SAP OFFICE
      CLEAR : gs_objbin,gs_lines.
      LOOP AT gt_lines INTO gs_lines.
        gv_pos = 255 - gv_len.
        IF gv_pos > 134.
          gv_pos = 134.
        ENDIF.
        gs_objbin+gv_len = gs_lines(gv_pos).
        gv_len = gv_len + gv_pos.
        IF gv_len = 255.
          APPEND gs_objbin TO gt_objbin.
          CLEAR : gs_objbin,gv_len.
          IF gv_pos < 134.
            gs_objbin = gs_lines+gv_pos.
            gv_len = 134 - gv_pos.
          ENDIF.
        ENDIF.
      ENDLOOP.
      IF gv_len > 0.
        APPEND gs_objbin TO gt_objbin.
      ENDIF.
    *           FILLING THE DETAILS IN SAP OFFICE
      DESCRIBE TABLE gt_objbin LINES gv_tab_lines.
      CLEAR gs_objbin.
      READ TABLE gt_objbin INTO gs_objbin INDEX gv_tab_lines.
      IF sy-subrc = 0.
        gs_objpack-doc_size = ( gv_tab_lines - 1 ) * 255 + strlen( gs_objbin ).
        gs_objpack-transf_bin = 'X'.
        gs_objpack-head_start = 1.
        gs_objpack-head_num = 0.
        gs_objpack-body_start = 1.
        gs_objpack-body_num = gv_tab_lines.
        gs_objpack-doc_type = 'PDF'.
        gs_objpack-obj_name = 'ATTACHMENT'.
        gs_objpack-obj_descr = 'TEST'.
        APPEND gs_objpack TO gt_objpack.
      ENDIF.
      DATA: BEGIN OF command_list OCCURS 0.
              INCLUDE STRUCTURE sxpgcolist.
      DATA: END OF command_list .
      DATA: BEGIN OF exec_protocol OCCURS 0.
              INCLUDE STRUCTURE btcxpm.
      DATA: END OF exec_protocol.
      DATA: status LIKE btcxp3-exitstat,
       commandname LIKE sxpgcolist-name VALUE 'ZB_TEST',
        sel_no LIKE sy-tabix.
    * GET LIST OF EXTERNAL COMMANDS
      CALL FUNCTION 'SXPG_COMMAND_LIST_GET'
        EXPORTING
          commandname     = commandname
          operatingsystem = sy-opsys
        TABLES
          command_list    = command_list
        EXCEPTIONS
          OTHERS          = 1.
      CALL FUNCTION 'SXPG_COMMAND_CHECK'
        EXPORTING
          commandname                = command_list-name
          operatingsystem            = sy-opsys
        EXCEPTIONS
          no_permission              = 1
          command_not_found          = 2
          parameters_too_long        = 3
          security_risk              = 4
          wrong_check_call_interface = 5
          x_error                    = 6
          too_many_parameters        = 7
          parameter_expected         = 8
          illegal_command            = 9
          communication_failure      = 10
          system_failure             = 11
          OTHERS                     = 12.
      CLEAR command_list.
      REFRESH command_list.
      DATA: v_dir_input      TYPE sxpgcolist-parameters.
      DATA: v_dir_input1      TYPE sxpgcolist-parameters.
      command_list-name = 'ZB_TEST'.
      command_list-opsystem = 'Windows NT'.
      DATA : doc  TYPE string.
      DATA : pass TYPE string ,
            name(40).
      doc = 'invoice'.
      pass = '123456'.
      CONCATENATE   'cnd/c d:\pdf\encryptpdf.exe' doc'.PDF' INTO name.
      CONCATENATE 'cmd /c d:\pdf\encryptpdf.exe' '-i'  name  '-o ' name  '-u'  pass INTO v_dir_input SEPARATED BY space .
      READ TABLE command_list INDEX sel_no.
      CONCATENATE command_list-opcommand v_dir_input INTO command_list-opcommand SEPARATED BY space.
    * CHECK AUTHORIZATION
      command_list-addpar = 'X'.
      APPEND command_list.
      CONSTANTS: c_extcom    TYPE sxpgcolist-name VALUE 'ZB_TEST',
       c_oper      TYPE syopsys VALUE 'Windows NT'.
      DATA: t_result         TYPE STANDARD TABLE OF btcxpm.
      v_dir_input  =  command_list-opcommand.
      CALL FUNCTION 'SXPG_COMMAND_EXECUTE'
        EXPORTING
          commandname                   = c_extcom
          additional_parameters         = v_dir_input
          operatingsystem               = c_oper
        TABLES
          exec_protocol                 = t_result
        EXCEPTIONS
          no_permission                 = 1
          command_not_found             = 2
          parameters_too_long           = 3
          security_risk                 = 4
          wrong_check_call_interface    = 5
          program_start_error           = 6
          program_termination_error     = 7
          x_error                       = 8
          parameter_expected            = 9
          too_many_parameters           = 10
          illegal_command               = 11
          wrong_asynchronous_parameters = 12
          cant_enq_tbtco_entry          = 13
          jobcount_generation_error     = 14
          OTHERS                        = 15.
      OPEN DATASET l_file FOR INPUT IN BINARY MODE.
      IF sy-subrc = 0.
        READ DATASET l_file INTO itab_attach.
        CLOSE DATASET l_file.
      ENDIF.
      CALL METHOD cl_bcs_convert=>xstring_to_solix
        EXPORTING
          iv_xstring = itab_attach
        RECEIVING
          et_solix   = t_attachment.
      CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
        EXPORTING
          document_data                    = gs_docdata
       PUT_IN_OUTBOX                    = 'X'
       COMMIT_WORK                      = 'X'
    * IMPORTING
    *   SENT_TO_ALL                      =
    *   NEW_OBJECT_ID                    =
        TABLES
          packing_list                     = gt_objpack
    *   OBJECT_HEADER                    =
       CONTENTS_BIN                     = gt_objbin
    *   CONTENTS_TXT                     =
       CONTENTS_HEX                     = t_attachment
    *   OBJECT_PARA                      =
    *   OBJECT_PARB                      =
          receivers                        = gt_reclist
    * EXCEPTIONS
    *   TOO_MANY_RECEIVERS               = 1
    *   DOCUMENT_NOT_SENT                = 2
    *   DOCUMENT_TYPE_NOT_EXIST          = 3
    *   OPERATION_NO_AUTHORIZATION       = 4
    *   PARAMETER_ERROR                  = 5
    *   X_ERROR                          = 6
    *   ENQUEUE_ERROR                    = 7
    *   OTHERS                           = 8
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
           WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ELSE.
        WRITE 'SENT SUCCESSFULLY'.
      ENDIF.
      SUBMIT rsconn01 WITH mode EQ 'INT' AND RETURN.
    The mail is sent to inbox successfully,but when am opening the attachment am getting the below error as,
    ---> There was an error while opening this file.The file is damaged and couldnt be repaired.

  • Want to create a function module  which will convert smartform into PDF .

    Hi All ,
    Requirement : I want to create a function module/report  which will convert smartform into PDF .
    Thanks in advance

    Hi All ,
    zsuresh_test : for converting smartform into pdf.
    when I am excuting this report(zsuresh_test) and by passing the smartform name FOPCR_STANDARD_F1
    I am getting error :
    Incorrect parameter with CALL FUNCTION
    Can you  please help me out..
    REPORT zsuresh_test.
    Variable declarations
    DATA:
    w_form_name TYPE tdsfname VALUE 'FOPCR_STANDARD_F1',
    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.

Maybe you are looking for

  • ? How to setup as new device for testing and reverting back to old backup

    I need to do some testing to see if my backup may be causing poor responsiveness from my home key. I have already done a full restore but nothing has changed.  I would like to create a new device and install a few apps to see how things go. Then, I w

  • Cannot adjust the backup iphone icloud

    Hello. I have a problem with repair my Iphone. April 27, I turned to an authorized service center on Iphone. Self reboot and blue screen. April 29 iphone was replaced by another Iphone. The staff are rude and service center showed total disrespect fo

  • Lead selection Issue

    Hi all,   I am having dropdown by index as a table column. I am filling the node by supply function. IPublicTests.ITabNode node = testController.wdGetContext().nodeTab(); int size = srcNode.size(); for (int i = 0; i< size; i++) IPublicTests.ITabEleme

  • GET FLASH FORM TO WORK

    OK, I am trying to get my flash form to work and I'm working with a template from FLASH MX BIBLE. I'm going to paste both my action script and my cgi script in here & hopefully I can find an answer to why it doesn't work. Basically what happens is it

  • Strange Bug

    I've been having a strange problem ever since I got my iPod touch over christmas, and that is that whenever I connect my iPod to my computer, it resets the date and time to a random time in 2007. I was wondering if this had happened to anyone before,