• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 487
  • Last Modified:

Convert Word doc to PDF

Hello All-

I have code below that creates mailing labels in a Word document and saves the document.  How can I tweak my code to create a PDF document from the Word document?

'++++++++++++ for word
        Dim oApp As Microsoft.Office.Interop.Word.Application
        Dim oDoc As Microsoft.Office.Interop.Word.Document 'Word.Document
        'Start a new document in Word
        oApp = CreateObject("Word.Application")
        oDoc = oApp.Documents.Add
        With oDoc.MailMerge
            'Insert the mail merge fields temporarily so that
            'you can use the range that contains the merge fields as a layout
            'for your labels -- to use this as a layout, you can add it
            'as an AutoText entry.
            With .Fields
                .Add(oApp.Selection.Range, "owner_name")
                .Add(oApp.Selection.Range, "address")
                .Add(oApp.Selection.Range, "Mail_City")
                oApp.Selection.TypeText(",  ")
                .Add(oApp.Selection.Range, "Mail_State")
                oApp.Selection.TypeText("  ")
                .Add(oApp.Selection.Range, "Mail_Zip")
            End With
            Dim oAutoText As Microsoft.Office.Interop.Word.AutoTextEntry 'Word.AutoTextEntry
            oAutoText = oApp.NormalTemplate.AutoTextEntries.Add("MyLabelLayout", oDoc.Content)
            oDoc.Content.Delete() 'Merge fields in document no longer needed now
            'that the AutoText entry for the label layout
            'has been added so delete it.
            'Set up the mail merge type as mailing labels and use
            'a tab-delimited text file as the data source.
            .MainDocumentType = WdMailMergeMainDocType.wdMailingLabels 'wdMailingLabels
            .OpenDataSource(Name:="C:\LabelsFile.csv") 'Specify the data source here
            'Create the new document for the labels using the AutoText entry
            'you added -- 5160 is the label number to use for this sample.
            'You can specify the label number you want to use for the output
            'in the Name argument.
            oApp.MailingLabel.CreateNewDocument(Name:="5160", Address:="", _
                AutoText:="MyLabelLayout") 'LaserTray:=wdPrinterManualFeed)
            'Execute the mail merge to generate the labels.
            .Destination = WdMailMergeDestination.wdSendToNewDocument 'wdSendToNewDocument
            'Delete the AutoText entry you added
        End With
        'Prevent save to Normal template when user exits Word
        oApp.NormalTemplate.Saved = True
        Dim thename As String = "MailWord"
        Dim laststring As String
        laststring = "C:\Inetpub\wwwroot\Test\DirectoryDump\" & thename & ".doc" '"C:\Inetpub\wwwroot\Test\DirectoryDump\" & thename & ".doc"
        Dim neededstring1 As String = GetUniqueFilename(laststring)

Open in new window

  • 3
  • 3
1 Solution
What PDF Maker are you using? Acrobat?

Dawn Bleuel
Word MVP
JoshinHtownAuthor Commented:
Yeah I would assume so but what do you think would be the best option? I have a machine that just has MS Word and my Web Application.  It creates the Word document just fine.  If I install Acrobat reader or something along those lines will I have the ability to call a PDF printing object?  let me know your thoughts.

Éric MoreauSenior .Net ConsultantCommented:
Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

JoshinHtownAuthor Commented:
Thanks emoreau but I'd rather not pay for a product to do this.  If its possible to accomplish this using what software I already have (mentioned above) and/or adding an acrobat product then I could be fine with that.

Suggestions anyone?  I'm sure there is a way to add a few lines of code to my above code that will convert that Word document to a PDF.  Thoughts?

Unfortunately you need a PDF writer to convert to PDF. There are several free options available to choose. See http://www.experts-exchange.com/Web_Development/Document_Imaging/Adobe_Acrobat/Q_23103347.html for come code using Acrobat.

Dawn Bleuel
Word MVP
JoshinHtownAuthor Commented:
Hi Dawn-

Based on your last response, if I wanted to use the below code where do I get the PDF writer or distiller?  Is it a free download?  Would I only need to install pdf distiller and then it is completely useable with the below code?

Thanks, this might be getting close..

Private Sub Command1_Click()
Dim wrd As New Word.Application
Dim doc As Word.Document
wrd.Visible = False
wrd.ScreenUpdating = False
wrd.ActivePrinter = "Acrobat Distiller"
'Open the document
Set doc = wrd.Documents.Open("c:\worddoc.doc")
'Print it to a PostScript file using Distiller
doc.PrintOut False, False, , "c:\test.ps", , , , , , , True
doc.Close False
wrd.Quit False
Set doc = Nothing
Set wrd = Nothing
'Now call distiller to convert the postscript file to PDF
Dim acr As New ACRODISTXLib.PdfDistiller  //ERROR
acr.bShowWindow = False
acr.FileToPDF "c:\test.ps", "pdfdoc.pdf", ""
Set acr = Nothing
'Delete the old PS file
Kill "c:\test.ps"
End Sub

Open in new window

CutePDF is a very popular free PDF creator. I've also heard good things about PDF995.

Dawn Bleuel
Word MVP
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 3
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now