iText and FileMaker: Solving a PDF Problem
How to merge PDFs and consecutively number them in FileMaker
Sounds like it should be easy, almost built in, but it is not. Adding page numbers to PDFs is not a trivial task without additional software like Adobe Acrobat. Merging several FileMaker reports with additional PDFs and adding consecutive page numbers to the new document seems like it requires magic.
I recently had the opportunity to try my hand at this elusive problem and found that if you are familiar with Java and it is done correctly, it can make for a great solution to many workflow issues. A special thanks to Matt Petrowsky for his great example file that was very helpful at getting me started.
Here’s the situation: You have several reports that you create in FileMaker. You have additional PDF documents that you need to merge with them, and you also need them to be numbered so that you can email just one final PDF to your customers or team. To go through the process in Acrobat isn't too bad the first one or two times, but when you need to do it often, it becomes a real chore.
Fortunately, there is a great Java library called iText. I have worked with iText on other projects and have found it to be very helpful. iText is an incredible open-source Java library that allows you to create and manipulate PDFs. It is worth checking out if you are a developer. It is a great library; you can merge PDFs, number them, get details about pages, and even create pages with content.
With iText and Java, it would seem our job is almost done, but how do you get FileMaker to run Java? Well that is where the last piece of the puzzle comes in, via a great tool by 360Works called ScriptMaster. ScriptMaster is a plug-in for FileMaker that allows you to write FileMaker custom functions able to run Java and provide access to Java libraries, using a Java language called Groovy.
If we team these three items up, we’re almost there. Let me recap, you take FileMaker, add a ScriptMaster plugin (to run Java), add the iText Java libraries, and then write FileMaker custom functions with Groovy that use Java library classes. Now you can make all the magic happen!
Aside from solving the above problem, what else can you do once you have these dependencies in place? One example would be to create a Document Library where you can store PDFs. Given the tools by iText, you can capture details about the PDFs when you add them to the library - like page size and page count - and then store that information in FileMaker. Later, you can group documents of your choice together, change their order, even merge and number them on command. Once you have created a final PDF document you can add the newly merged PDF back into the document library. This provides a great deal of flexibility for managing PDFs. Couple that with some of FileMaker’s other features and with the click of a button FileMaker can merge PDF reports with external PDF documents, put signatures on them, number them, and email them. Ta-da!
New Staff: Xandon Frogget
You may have noticed the new name on the iText article. We have welcomed a new staff person, Xandon Frogget, recently. Xandon's background in FileMaker and his desire to help individuals make him a great addition to our team! He's written a little bit about himself:
I‘ve been working as a FileMaker developer for the past 12 years. Much of that time was spent working for OfficeMax/Office Depot creating propriety in-house software that automated production and print solutions. I love working with data and solving problems but I also enjoy working with people and making their lives easier.
I am a father of twin, 5 year old girls. My hobby/passion (other than building databases) is Robotics. One of my most enjoyable projects was building and refining an autonomous Bob Duallie baby jogging stroller for my girls when they were two. It allowed them to drive the stroller around using a Wii steering wheel, while the obstacle avoidance kept them from bumping into things. Talk about a milk run! Just kidding. We used it in parks or at the mall.
Presently I spend my spare time working on an autonomous wheelchair to figure out how to make people's lives easier. You’ll find me one Saturday a month with The Seattle Robotics Society tinkering with my wheelchair and learning about everyone else’s latest projects.
Alternate Button-Label Editing
In any solution, buttons drive the majority of the user interface. Have you ever double-clicked a button, expecting to edit the text for the button label, but get the button setup dialog instead? Happens to me all the time. Years ago, I discovered a little trick to editing button labels without having to click a button, click the Text Tool, then return back to the button to edit the label. Sure, it may only save me about 20 nanoseconds, but when a single layout has a large number of buttons on it, that saved time adds up quickly. Besides, these little tricks are fun!
The trick? Group the button with another object.
- In layout mode, select the button object and shift-select any other object.
- Then group the objects together using the "Group" button in the Position tab of the Inspector (or Command+R).
- Once the button is grouped, you can double-click the button to edit the label.
- Once you're done editing the label, you can ungroup the objects using the "Ungroup" button in the Position tab of the Inspector (or Command+Shift+R).
In most solutions these days, buttons and icons go hand in hand. A handy way to use this trick is to always group buttons with either an image or container field that holds the related image icon. This way, there’s no need to ever ungroup the objects.
Remote Technical Support
One of the technologies that really make it possible to work in a virtual office environment are remote tech support tools (remote control/screen sharing). I remember when I first started IT consulting - a depressingly long time ago - having to make emergency trips out to client's offices to fix a bug. Most of the time now, that is a thing of the past. It's also really handy for doing tech support on my parent's computers. :) It only takes a few minutes to remotely log into the other person's computer, vs going onsite or trying to walk someone through a series of steps over the phone.
We started out using a remote support appliance tool from a company called Bomgar. We've been happy with that for well over ten years, but Bomgar has discontinued support for our piece of hardware and so finding a new option became necessary. I would have just bought a new Bomgar Box, but the company has moved to focusing on the higher end of the market, organizations having dozens or hundreds of support technicians.
What do we want out of a remote tech support tool?
The ability to have the remote computer permanently accessible when needed
File transfer capability
Mac & Windows support (fairly standard these days)
For simple needs, the ability to screen share via Skype or might be all you need, and both are free. I don't think the performance with Skype is all that good and the free LogMeIn.com service doesn't permit file transfers. If you already use GoToMeeting for webinars, its ability to move screen control between meeting attendees might be sufficient. Once again, no file transfers though.
There are many paid options - GoToSupport, Teamviewer, LogMeIn (paid), etc.
In the end, we decided to go with Teamviewer to eventually replace our Bomgar appliance. Its expensive up front, but does not have monthly or annual fees. It has a Teamviewer Host version that allows unattended access to the remote computer and allows for bi-directional file transfers. Teamviewer has a webinar functionality as well, so you can do group meetings and presentations via the web. It does have iOS and Android support, though due to security restrictions in iOS, there is no ability to actual remotely control the device, which is unfortunate.
DevCon this year will include a new "Training Day" series, available without a full conference pass. You can get an entire day of instructor-led training by a FileMaker Business Alliance trainer for only $99 USD, at either a beginner or intermediate level. DevCon is in Las Vegas, Nevada this year, and the training day is July 20, from 8-5. To register for the full conference, or for either of the training options, go to http://devcon.filemaker.com. Early bird registration for the full conference ends on May 26.
Keep Up to Date with FileMaker and 4th Dimension
FileMaker is issuing a new update to resolve issues with SSL certificates; it is doing so in two stages, with v13.0.9 available now and the v12 update available later. NOTE: If you have a mixed v12 and v13 environment, you should not upgrade until both versions are available. FileMaker Server 13.0v9 and FileMaker Pro/Advanced 13.0v9 are available now; FileMaker Go 13.0.9, FileMaker Server 12 Security Update and FileMaker Pro/Advanced 12 Security Update should be available within the next few weeks. FileMaker Go 12 will not be updated.
Who We Are
- FileMaker Pro & 4th Dimension upgrade and development
- MS Access to FileMaker conversions
- FileMaker Pro & 4th Dimension integration with other data environments
- Web/Database integration
- FileMaker Instant Web Publishing
Seattle - 425.481.8175 | Austin - 512.827.8517
Mailing Address: 17115 NE 163rd Place, Woodinville, WA 98072