rogerdjr
asked on
VBA Code - Open PDF File and save as a .jpg file
VBA Code - Open PDF File and save as a .jpg file
I have a need to convert a number of .pdf files to .jpg for integration into a report.
Can anybody help with vba code that opens each pdf file in a directory one at a time and then to save it as a jpg file and then close the pdf?
As part of this process can one set the dpi of the saved jpg file
I have a need to convert a number of .pdf files to .jpg for integration into a report.
Can anybody help with vba code that opens each pdf file in a directory one at a time and then to save it as a jpg file and then close the pdf?
As part of this process can one set the dpi of the saved jpg file
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
What is your PDFPath?
And as MacroShadow mentioned - are you using the full version of Adobe? Errors like that are often seen when you try to run code against the Reader.
ASKER
path is
J:\14 Jobs\14003 Monterey Bay Aquarium Main Bldg CASp\Accessibility Inspection\Drawings\0\
Also tried path
c:\test\
Using Adobe Acrobat XI Pro
J:\14 Jobs\14003 Monterey Bay Aquarium Main Bldg CASp\Accessibility Inspection\Drawings\0\
Also tried path
c:\test\
Using Adobe Acrobat XI Pro
ASKER
Searched
Internet for the error message and found a few other instances where somebody had a similar issue but no solutions
Internet for the error message and found a few other instances where somebody had a similar issue but no solutions
ASKER
Checked reference to make sure that is not the problem - see attached
references.pdf
references.pdf
ASKER
Found this code online that does the job
'http://www.myengineeringworld.net/2013/03/vba-macro-to-convert-pdf-files-into.html
Sub SavePDFAsOtherFormat(PDFPa th As String, FileExtension As String)
'Saves a PDF file as another format using Adobe Professional.
'By Christos Samaras
'http://www.myengineeringworld.net
'In order to use the macro you must enable the Acrobat library from VBA editor:
'Go to Tools -> References -> Adobe Acrobat xx.0 Type Library, where xx depends
'on your Acrobat Professional version (i.e. 9.0 or 10.0) you have installed to your PC.
'Alternatively you can find it Tools -> References -> Browse and check for the path
'C:\Program Files\Adobe\Acrobat xx.0\Acrobat\acrobat.tlb
'where xx is your Acrobat version (i.e. 9.0 or 10.0 etc.).
Dim objAcroApp As Acrobat.AcroApp
Dim objAcroAVDoc As Acrobat.AcroAVDoc
Dim objAcroPDDoc As Acrobat.AcroPDDoc
Dim objJSO As Object
Dim boResult As Boolean
Dim ExportFormat As String
Dim NewFilePath As String
'Check if the file exists.
If Dir(PDFPath) = "" Then
MsgBox "Cannot find the PDF file!" & vbCrLf & "Check the PDF path and retry.", _
vbCritical, "File Path Error"
Exit Sub
End If
'Check if the input file is a PDF file.
If LCase(Right(PDFPath, 3)) <> "pdf" Then
MsgBox "The input file is not a PDF file!", vbCritical, "File Type Error"
Exit Sub
End If
'Initialize Acrobat by creating App object.
Set objAcroApp = CreateObject("AcroExch.App ")
'Set AVDoc object.
Set objAcroAVDoc = CreateObject("AcroExch.AVD oc")
'Open the PDF file.
boResult = objAcroAVDoc.Open(PDFPath, "")
'Set the PDDoc object.
Set objAcroPDDoc = objAcroAVDoc.GetPDDoc
'Set the JS Object - Java Script Object.
Set objJSO = objAcroPDDoc.GetJSObject
'Check the type of conversion.
Select Case LCase(FileExtension)
Case "eps": ExportFormat = "com.adobe.acrobat.eps"
Case "html", "htm": ExportFormat = "com.adobe.acrobat.html"
Case "jpeg", "jpg", "jpe": ExportFormat = "com.adobe.acrobat.jpeg"
Case "jpf", "jpx", "jp2", "j2k", "j2c", "jpc": ExportFormat = "com.adobe.acrobat.jp2k"
Case "docx": ExportFormat = "com.adobe.acrobat.docx"
Case "doc": ExportFormat = "com.adobe.acrobat.doc"
Case "png": ExportFormat = "com.adobe.acrobat.png"
Case "ps": ExportFormat = "com.adobe.acrobat.ps"
Case "rft": ExportFormat = "com.adobe.acrobat.rft"
Case "xlsx": ExportFormat = "com.adobe.acrobat.xlsx"
Case "xls": ExportFormat = "com.adobe.acrobat.spreads heet"
Case "txt": ExportFormat = "com.adobe.acrobat.accesst ext"
Case "tiff", "tif": ExportFormat = "com.adobe.acrobat.tiff"
Case "xml": ExportFormat = "com.adobe.acrobat.xml-1-0 0"
Case Else: ExportFormat = "Wrong Input"
End Select
'Check if the format is correct and there are no errors.
If ExportFormat <> "Wrong Input" And Err.Number = 0 Then
'Format is correct and no errors.
'Set the path of the new file. Note that Adobe instead of xls uses xml files.
'That's why here the xls extension changes to xml.
If LCase(FileExtension) <> "xls" Then
NewFilePath = WorksheetFunction.Substitu te(PDFPath , ".pdf", "." & LCase(FileExtension))
Else
NewFilePath = WorksheetFunction.Substitu te(PDFPath , ".pdf", ".xml")
End If
'Save PDF file to the new format.
boResult = objJSO.SaveAs(NewFilePath, ExportFormat)
'Close the PDF file without saving the changes.
boResult = objAcroAVDoc.Close(True)
'Close the Acrobat application.
boResult = objAcroApp.Exit
'Inform the user that conversion was successfully.
MsgBox "The PDf file:" & vbNewLine & PDFPath & vbNewLine & vbNewLine & _
"Was saved as: " & vbNewLine & NewFilePath, vbInformation, "Conversion finished successfully"
Else
'Something went wrong, so close the PDF file and the application.
'Close the PDF file without saving the changes.
boResult = objAcroAVDoc.Close(True)
'Close the Acrobat application.
boResult = objAcroApp.Exit
'Inform the user that something went wrong.
MsgBox "Something went wrong!" & vbNewLine & "The conversion of the following PDF file FAILED:" & _
vbNewLine & PDFPath, vbInformation, "Conversion failed"
End If
'Release the objects.
Set objAcroPDDoc = Nothing
Set objAcroAVDoc = Nothing
Set objAcroApp = Nothing
End Sub
'http://www.myengineeringworld.net/2013/03/vba-macro-to-convert-pdf-files-into.html
Sub SavePDFAsOtherFormat(PDFPa
'Saves a PDF file as another format using Adobe Professional.
'By Christos Samaras
'http://www.myengineeringworld.net
'In order to use the macro you must enable the Acrobat library from VBA editor:
'Go to Tools -> References -> Adobe Acrobat xx.0 Type Library, where xx depends
'on your Acrobat Professional version (i.e. 9.0 or 10.0) you have installed to your PC.
'Alternatively you can find it Tools -> References -> Browse and check for the path
'C:\Program Files\Adobe\Acrobat xx.0\Acrobat\acrobat.tlb
'where xx is your Acrobat version (i.e. 9.0 or 10.0 etc.).
Dim objAcroApp As Acrobat.AcroApp
Dim objAcroAVDoc As Acrobat.AcroAVDoc
Dim objAcroPDDoc As Acrobat.AcroPDDoc
Dim objJSO As Object
Dim boResult As Boolean
Dim ExportFormat As String
Dim NewFilePath As String
'Check if the file exists.
If Dir(PDFPath) = "" Then
MsgBox "Cannot find the PDF file!" & vbCrLf & "Check the PDF path and retry.", _
vbCritical, "File Path Error"
Exit Sub
End If
'Check if the input file is a PDF file.
If LCase(Right(PDFPath, 3)) <> "pdf" Then
MsgBox "The input file is not a PDF file!", vbCritical, "File Type Error"
Exit Sub
End If
'Initialize Acrobat by creating App object.
Set objAcroApp = CreateObject("AcroExch.App
'Set AVDoc object.
Set objAcroAVDoc = CreateObject("AcroExch.AVD
'Open the PDF file.
boResult = objAcroAVDoc.Open(PDFPath,
'Set the PDDoc object.
Set objAcroPDDoc = objAcroAVDoc.GetPDDoc
'Set the JS Object - Java Script Object.
Set objJSO = objAcroPDDoc.GetJSObject
'Check the type of conversion.
Select Case LCase(FileExtension)
Case "eps": ExportFormat = "com.adobe.acrobat.eps"
Case "html", "htm": ExportFormat = "com.adobe.acrobat.html"
Case "jpeg", "jpg", "jpe": ExportFormat = "com.adobe.acrobat.jpeg"
Case "jpf", "jpx", "jp2", "j2k", "j2c", "jpc": ExportFormat = "com.adobe.acrobat.jp2k"
Case "docx": ExportFormat = "com.adobe.acrobat.docx"
Case "doc": ExportFormat = "com.adobe.acrobat.doc"
Case "png": ExportFormat = "com.adobe.acrobat.png"
Case "ps": ExportFormat = "com.adobe.acrobat.ps"
Case "rft": ExportFormat = "com.adobe.acrobat.rft"
Case "xlsx": ExportFormat = "com.adobe.acrobat.xlsx"
Case "xls": ExportFormat = "com.adobe.acrobat.spreads
Case "txt": ExportFormat = "com.adobe.acrobat.accesst
Case "tiff", "tif": ExportFormat = "com.adobe.acrobat.tiff"
Case "xml": ExportFormat = "com.adobe.acrobat.xml-1-0
Case Else: ExportFormat = "Wrong Input"
End Select
'Check if the format is correct and there are no errors.
If ExportFormat <> "Wrong Input" And Err.Number = 0 Then
'Format is correct and no errors.
'Set the path of the new file. Note that Adobe instead of xls uses xml files.
'That's why here the xls extension changes to xml.
If LCase(FileExtension) <> "xls" Then
NewFilePath = WorksheetFunction.Substitu
Else
NewFilePath = WorksheetFunction.Substitu
End If
'Save PDF file to the new format.
boResult = objJSO.SaveAs(NewFilePath,
'Close the PDF file without saving the changes.
boResult = objAcroAVDoc.Close(True)
'Close the Acrobat application.
boResult = objAcroApp.Exit
'Inform the user that conversion was successfully.
MsgBox "The PDf file:" & vbNewLine & PDFPath & vbNewLine & vbNewLine & _
"Was saved as: " & vbNewLine & NewFilePath, vbInformation, "Conversion finished successfully"
Else
'Something went wrong, so close the PDF file and the application.
'Close the PDF file without saving the changes.
boResult = objAcroAVDoc.Close(True)
'Close the Acrobat application.
boResult = objAcroApp.Exit
'Inform the user that something went wrong.
MsgBox "Something went wrong!" & vbNewLine & "The conversion of the following PDF file FAILED:" & _
vbNewLine & PDFPath, vbInformation, "Conversion failed"
End If
'Release the objects.
Set objAcroPDDoc = Nothing
Set objAcroAVDoc = Nothing
Set objAcroApp = Nothing
End Sub
ASKER
I've requested that this question be closed as follows:
Accepted answer: 0 points for rogerdjr's comment #a40221568
for the following reason:
Found this code online - could not get a solution from experts
Accepted answer: 0 points for rogerdjr's comment #a40221568
for the following reason:
Found this code online - could not get a solution from experts
Not sure what I'm missing but the was the code I quoted in my first post ;-)
ASKER
Both solutions seem to come from the same website - The original posted version gave errors as stated in my posts - It sat for a while with no suggested fixes and the moderator suggested that I delete the question.
I did one more internet search and cut / pasted the code I found on the website into my application and voila it ran.
I'm fine with awarding points to the original poster.
I did one more internet search and cut / pasted the code I found on the website into my application and voila it ran.
I'm fine with awarding points to the original poster.
I agree with MacroShadow - it seems the code provided in the first comment is the same, and should be included in the answer comments.
ASKER
Plugged into Access and it runs to this point and shows the attached error
boResult = objJSO.SaveAs(PDFPath, ExportFormat)
error.pdf