I want to fill a PDF form from my MS-Access 2003 .mdb project. The PDF has been created with Adobe LifeCycle Designer ES 8.2, all fields have significant names. However, the users who will run the PDf-filling functionnality don't have LifeCycle installed but only Adobe Reader 9.5 instead (might migrate to Adobe Reader X soon, I would like my code to be a little bit future proof).
How can I implement this? Most threads that I've seen on the Web redirect to the official Adobe SDK documentation, which is completely a mess when you're only doing VBA.
Thank you.
Yes, we can fill PDF forms automatically and generate PDF files from them. With an on-premises version of SharePoint and custom development, many of us have used iTextSharp DLLs to read and generate PDF files. There are multiple options available in office 365 as well.
Enable the Auto-Complete optionChoose Edit > Preferences (Windows) or Acrobat / Acrobat Reader > Preferences (Mac OS). Select Forms on the left. Under Auto-Complete, choose Basic or Advanced from the menu. Select Remember Numerical Data if you want the Auto-Complete memory to store numbers that you type into forms.
Although many people often use Microsoft Access to store text information, you can add files to a database as well. Access makes this possible by defining a special attachment field that can hold complex data. After you add an attachment field to an Access table, you can import PDF files into any of the table's rows.
Finally managed to get something working after merging some lines of code. Here it is. It works with the Adobe Acrobat 9.0 Type Library set as reference in my VBA project.
Dim FileNm, gApp, avDoc, pdDoc, jso
FileNm = "c:\form.pdf" 'File location
Set gApp = CreateObject("AcroExch.app")
Set avDoc = CreateObject("AcroExch.AVDoc")
If avDoc.Open(FileNm, "") Then
Set pdDoc = avDoc.GetPDDoc()
Set jso = pdDoc.GetJSObject
jso.getField("topmostSubform[0].Page1[0].fieldName[0]").value = "myValue"
pdDoc.Save PDSaveIncremental, FileNm 'Save changes to the PDF document
pdDoc.Close
End If
'Close the PDF; the True parameter prevents the Save As dialog from showing
avDoc.Close (True)
'Some cleaning
Set gApp = Nothing
Set avDoc = Nothing
Set pdDoc = Nothing
Set jso = Nothing
Note that topmostSubform[0].Page1[0]
is the default name that Adobe LiveCycle Designer gives to your main PDF document, while fieldName[0]
is the name of your field. If you have multiple fields with the same name, Adobe LiveCycle Designer automatically adds index numbers so you can easily loop through your fields.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With