Skip to Content
avatar image
Former Member

ABAP - OLE MS-WORD (save .docx as PDF)

Hi Geeks,

I have a requirement on manipulating a MS-word (.docx) document through OLE (Object Link Enabling) and saving as PDF in the local system.

I have used WORD.BASIC as the object and managed to manipulate the document (.docx) and save it in the same .docx format.

But I am facing technical challenge in saving the document (.docx) as PDF.

can anyone guide me how to save the .docx to PDF through OLE. I have browsed a lot of blogs and forums but cudnt get a proper solution to save the manipulated document (.docx) as PDF.

PFB. the code i used for manipulation of the document (.docx).


CREATE OBJECT lv_word 'WORD.BASIC'.

CALL METHOD OF lv_word 'FILEOPEN' EXPORTING #1 = <<file_path>>.

CALL METHOD OF lv_word 'ViewHeader'.
CALL METHOD OF lv_word 'EDITREPLACE'
EXPORTING
#01 = <<Find_Word>>
#02 = <<Replace_word>>
#03 = 0
#04 = 0
#05 = 0
#06 = 0
#07 = 0
#08 = 0
#09 = 0
#10 = 1
#11 = 0
#12 = 1.
CALL METHOD OF lv_word 'CloseViewHeaderFooter'.
CALL METHOD OF lv_word 'FILESAVEAS' EXPORTING #1 = <<file_path>>.
CALL METHOD OF lv_word 'DOCCLOSE' EXPORTING #1 = 2.
CALL METHOD OF lv_word 'APPCLOSE'.

Thanks & Regards,

Saivignesh Sudarsan.

Add comment
10|10000 characters needed characters exceeded

  • Follow
  • Get RSS Feed

4 Answers

  • Best Answer
    avatar image
    Former Member
    Feb 24, 2015 at 04:09 AM

    Hi Geeks,

    Thanks for your response 😊 i was able to get an idea from both of u (Simone Milesi & Dieter Gröhn) .

    but i was not sure how to use the parameters of the methods to save the .docx file as pdf.

    so upon my search, found a thread (given below) and was helpuful.

    Now let me brief how i was able to achieve the goal ( saving .docx file to pdf format using OLE).

    Step - 1:

    Initially i used the WORD.BASIC for manipulating the .docx file.

    PFB.The code i used (as mentioned earlier)

    CREATE OBJECT lv_word 'WORD.BASIC'.

    CALL METHOD OF lv_word 'FILEOPEN' EXPORTING #1 = <<file_path>>.

    CALL METHOD OF lv_word 'ViewHeader'.
    CALL METHOD OF lv_word 'EDITREPLACE'
    EXPORTING
    #01 = <<Find_Word>>
    #02 = <<Replace_word>>
    #03 = 0
    #04 = 0
    #05 = 0
    #06 = 0
    #07 = 0
    #08 = 0
    #09 = 0
    #10 = 1
    #11 = 0
    #12 = 1.
    CALL METHOD OF lv_word 'CloseViewHeaderFooter'.
    CALL METHOD OF lv_word 'FILESAVEAS' EXPORTING #1 = <<file_path>>.
    CALL METHOD OF lv_word 'DOCCLOSE' EXPORTING #1 = 2.
    CALL METHOD OF lv_word 'APPCLOSE'.

    Step - 2:

    Now,I used WORD.APPLICATION to save the manipulated file to pdf.

    create object lv_wordapp 'word.application'.

    set property of lv_wordapp 'Visible' = 0.

    call method of lv_wordapp 'Documents' = v_worddoc.

    call method of lv_worddoc 'Open'

    exporting

    #1 = 'C:\ <FILENAME.DOCX>'.

    call method of lv_wordapp 'ActiveDocument' = lv_wordadoc.

    call method of lv_wordadoc 'Content' = lv_wordcont.

    call method of lv_wordadoc 'SaveAs'

    exporting

    #1 = 'C:\ <FILENAME.PDF>'

    #2 = 17.

    call method of lv_wordapp 'Quit'.

    free object lv_wordapp .

    The PDF file gets generated successfully.

    So finally got a solution and the above code works perfectly fine 😊

    Thanks everyone 😊

    Thanks & Regards,

    Saivignesh Sudarsan.

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Jan 28, 2015 at 12:13 PM

    Hi,

    you can export the DOC via OLE.

    Try this:

    Regards, Dieter


    Add comment
    10|10000 characters needed characters exceeded

  • Jan 28, 2015 at 08:40 AM

    Hi!

    When you invoke SaveAs Method, pass as 2nd parameter '17' ->it's the value for saving as pdf

    i got it from another forum

    Alrighty, so I figured it out.

    It turns out 17 is the FormatType for PDF, so you just have to do

    something like this:

    document.SaveAs(filename, 17)

    I didn't see any documentation about this, but we just started going up

    from 0 as a FormateType, and once we hit 17, it made a valid PDF!!

    The reference is from a Ruby blog but it uses Win OLE to achieve it, so i think you can do the same

    Ruby on Windows: Saving Microsoft Office Documents as PDFs

    Let me know if it works 😊

    Add comment
    10|10000 characters needed characters exceeded

    • Former Member

      Hi Simone Milesi,

      Thanks a ton for your most important piece of information from which i have derived the solution for saving the .docx to pdf format.

      Feeling thankful 😊 & Great 😀

      Thanks & Regards,

      Saivignesh Sudarsan.

  • avatar image
    Former Member
    Jun 03, 2015 at 10:45 AM

    I would add the following line to this code before quitting the application:

    call method of
         lv_wordadoc
         'Save'.
    

    This would avoid the word application to prompt for save before closing the docx file.


    Thanks for sharing!

    Add comment
    10|10000 characters needed characters exceeded