We moved earlier in August 2020 to the newer Visual Studio version 2019 to build our plugins. All our Windows plugins are now build with that version.
But there was/is one problem: Some of the plugins got a new dependency to VCRuntime140_1.dll, which is part of the Visual Studio 2019 runtime libraries. That is annoying since it requires all our users to install those libraries. It would be much easier to not have that dependency and be only relaying on the Visual Studio 2015 libraries. Those are required for FileMaker Pro/Server as well as Xojo and so preinstalled with installing those. And Windows 10 comes with those libraries pre-installed as well.
For MBS Xojo Plugins 21.0 we removed the dependency and we are looking forward to keep all newer versions for at least this year free of the VCRuntime140_1.dll dependency.
A client asked how to detect who locks a field or record in FileMaker. Since a recent FileMaker version (16 maybe) the error dialog shows who edits the record, but how to know in a script?
We recently learnt that setting a field of a locked error will return the error 301 and the error detail shows the name of the user with the account name in brackets, e.g. Christian Schmitz (admin).
Here is a test script:
Set Error Capture [ On ]
Set Field [ Contacts::Title ; Contacts::Title ]
# @variable $name
# @variable $error
Set Variable [ $r ; Value: Let ( [ $error = Get(LastError); $name = Get(LastExternalErrorDetail ) ]; "") ]
Show Custom Dialog [ $error ; $name ]
As you see we use Let statement to query LastError and LastExternalErrorDetail in one calculation. Why? Because if you split it in two lines, the Set Variable would clear the error state. If you notice the comments above it, we use those to tell MBS FileMaker Plugin that there are variables declared in the Let statement. Otherwise our variable check would be unhappy.
Not sure if you know, but for about 20 years already we offer academic discounts for students learning to program. Both our FileMaker and Xojo plugins are available with academic discounts including DynaPDF licenses.
Recently we cleaned up our order pages, so academic prices are no longer listed. This basically cuts the list of store items by half for us. It's much easier to provide you with a coupon code to order and use the same website as everyone else.
If you are interested in an academic license, please contact us via email and provide a proof of status. That may be a copy of a university or school identity card. For young people below age of 25, we may just accept a proof of birth date.
Over the years we got quite a few students, some of which grown up to now use full commercial licenses for their work. From time to time we also granted academic status to retired, unemployed or other people, who asked for this with a compelling reason.
Please note that an order for an academic license from a company doesn't usually work. We expect companies to buy commercial licenses. Same if you receive any compensation for your work.
For Non-Profit organization supporting humanity, we also provide a discount on request.
Please don't hesitate to contact us if you have questions.
As you may know we have a great Optimize command for DynaPDF. You can use it on PDF documents in both FileMaker and Xojo plugins. Over time the command got more and more powerful and we like to write here about some of the features.
In general the function rebuilds the content stream of all pages, templates, patterns, annotations, and form fields. This may remove errors in the content stream and produce a consistent document.
When you specify the flags, the default flag value (0) just rebuilds the content stream and fixes errors.
You may specify "InMemory" to have changes made in a way, that the PDF is in memory and not flushed to the current output. Normally you may not notice the difference, but if you like to continue writing to the PDF, the memory flag is needed.
The Optimize function can reduce the file size of PDF files. You can pass the ScaleImages flag and then all images are checked. You can define a minimum and target resolution for images. All pictures with at least the minimum resolution are checked. This avoids that we look on icons for example and only process pictures with a significant resolution. DynaPDF scales the images down to the target resolution and compresses them with the compression algorithm you specify, usually JPEG. If the final picture is smaller in size, we store it, otherwise we keep the original image. The reason is that often one bit tiff images can be smaller than a reduced resolution JPEG file.
You can pass flag SkipMaskedImages to skip masked images as JPEG compression may not work well with pictures, where a specific color is used to mark transparency.
The check whether new picture is smaller than original image can be disabled via NoImageSizeCheck flag.
If you like to get images compressed with JBIG2, you can use CompressWithJBIG2 flag. This can drastically reduce the file size since JBIG2 compression achieves much higher compression rates than any other 1 bit image filter that PDF supports. The JBIG2 compression filter in DynaPDF is lossless, that means the original image quality will be preserved. Great to combine with ConvertGrayTo1Bit flag discussed below.
When you output styled text via MBS Plugins and DynaPDF, we convert the styled text for you in commands for DynaPDF. For this conversion we recently added a leading factor to define the line spacing based on the font size. You can still define leading (distance between two base lines) in points if you like, but the relative measure to font size is probably better for a lot of cases. Of course only makes an effect if font size changes within a text.
For Xojo we added LeadingFactor parameter for WriteStyledText, WriteStyledTextEx and ConvertStyledText methods in DynaPDFMBS class. The default value for the new parameter is -1, which allows us to detect whether you use the parameter.
For all the functions, please pass nothing (omit parameter) or zero for automatic behavior like it used to be: Leading being the font size. You can pass a factor like 1.2 or 1.5 to increase line spacing as needed.
Available in current pre-release. Please don't hesitate to contact us with your questions.
Today Xojo Inc. asked whether I want to join their MVP Program.
Well, as a close contributor to the Xojo community for over 20 years, there was no hesitation to join the opportunity this gives.
Beside the honor of being recognized as a valuable member in the community, this may bring a few communications privileges. Like a place to chat with Xojo people directly, but now under NDA, so it may be about different topics. Not sure yet whether this comes with any feedback or forum privileges.
As a new member of the informal advisory committee, I am keen to see what Xojo Inc. will present to MVPs ahead of development and launch. Especially getting an insight into future projects in planing and alpha state may be good to advise the company about what they are about to implement. One thing to monitor over years is whether such an advisory board (or call it a partner council) actually has an effect on the course of action. Not just being informed early and say our opinion, but actually to have the company change their plans for the better after a discussion.
We'll see how well it works out. I may invite all the other MVPs to a dinner in London around the next Xojo conference for a discussion about the program.
Thanks for Gavin for his time on the board. And thanks for the MVP and staff members, who voted for me to be invited.
The January/February (19.1) issue of xDev Magazine is now available. Here's a quick preview of what's inside:
Moving to Apple Silicon by Marc Zeedar
Apple has just revolutionized the PC desktop with a major leap ahead in performance, power efficiency, and value by introducing their own CPU architecture. But just what does Apple Silicon mean to the Xojo developer?
Working with Workers by Marc Zeedar
Writing multi-core apps in Xojo has traditionally been difficult. Now Xojo introduces Workers, a system that lets Xojo do the heavy lifting so you can take advantage of a multi-core CPU. Learn how to use them to speed up your app's processing power.
Get Ready for Git (Part 2) by Justin Elliott
In part 1, Justin showed how to install, setup, and use Git. This time he demonstrates how to use Git with your Xojo projects, track changes, manage branches, fix sync conflicts, and more.
MapKit (Part 8) by Markus Winter
Markus shows how to further customize annotation views in Apple's MapKit in Xojo.
PLUS: MacBook Air M1 review, creating gradients with Xojo, Xojo 2020 Release 2, Best of the Web, and more!
We have a new example for a client to add cutting edges and a crop box to a PDF document.
The picture on the left shows the debug version, where you see the red lines we add and a rectangle around the content. The crop box is put around the content, so the printing shop will crop the paper at the right position. Only for debugging, we show you the rectangle and leave the crop box away, so you see it.
Today I have the opportunity to résumé about these two years. I have learned a lot in this time, especially I got to know the programming language Xojo and the FileMaker platform and was allowed to realize some exciting projects. I also wrote some articles for the German FileMaker Magazine (see here) and the Xojo Developer Magazine. I also gave presentations at conferences on- and offline.
2020 was a very special year in which we all outgrew ourselves and had to find new solutions for problems that were unprecedented until then. Digitalization got the 7 mile boots on and home office was the new work routine for many. I was able to learn a lot in the last two years. Not only technical knowledge, but I also got to know many kind and interesting people and was allowed to work with them. I would like to thank all of you who have welcomed me so kindly into the community. I am looking forward to many new and interesting exchanges in the next few years, hopefully some of them will take place offline again.
I wish you now a happy, successful and healthy year 2021!
We updated the Plugin License Decision Graph for the newer targets:
Since Data API and FileMaker Go can't run the plugin directly, you have to use Perform Script on Server there. With FileMaker Pro and FileMaker Go you can use Perform Script on Server to do enjoy plugin functions.
Please let us know if you have a question or comment.
A long term project came to delivery just before Christmas 2020:
DynaPDF got a new feature to convert texts to outlines. And it's just a new flag for the Optimize function: ConvTextToOutlines.
The benefit of this conversion is that you can send the PDF to a printer shop and be sure that it will look exactly as you need. No font trouble, no missing fonts and no font rendering issues.
Please note that the process is not reversible. Once the text is converted, the text is gone. Just the look of the text stays, so you need OCR to convert it back to text. Copy & Paste is not possible for outlines, but for some uses this may be desired.
To show you what outlines means, we made this picture:
Based on our GlyphOutline example, we made a variations, which would change color for each line in drawing a character. This way you see the individual segments.
Please contact us if you have questions about DynaPDF, especially when using it with FileMaker or Xojo projects. This feature is available free of charge for all customers with a DynaPDF Pro license valid at least till 23rd December 2020 to include version 18.104.22.168. For MBS plugins, we included it in pr4 and will ship final plugins in January.