Please check the Claris™ Engineering Blog with a lot of interesting articles. Just recently they added one for plugin installation for FileMaker Server 19.3 with Data API:
- Enabling plug-ins for FileMaker Data API in FileMaker Server (June 24, 2021)
- Claris FileMaker 19.3.1 Platform bug fixes (June 23, 2021)
- FileMaker Platform performance improvements on Apple silicon (June 23, 2021)
- Verifying SSL for FileMaker Server (May 6, 2021)
- Uploading large databases to FileMaker Cloud using the FileMaker Admin API (March 18, 2021)
- Working around FileMaker Data API authorization timeouts (March 4, 2021)
- Modifying web publishing behavior for FileMaker Server (February, 8, 2021)
- Upgrading to FileMaker Server 19.2.1 (January 26, 2021)
- PHP bundling deprecation and removal from FileMaker Server (January 8, 2021)
- HTTP/2 support in FileMaker Server (December 22, 2020)
- Understanding FileMaker database memory caches (December 10, 2020)
- Migration options for FileMaker Cloud for AWS (November 11, 2020)
- Performance, stability, and reliability improvements in Claris FileMaker Server 19.1.2 (October 28, 2020)
- Considerations for configuring SSL certificates for FileMaker Server (October 20, 2020)
- Best Practices for Database Administration (September 25, 2020)
- Configuring Microsoft Azure Active Directory for authenticating FileMaker Cloud users (September 18, 2020)
- Authenticating Claris ID and Granting Access to FileMaker Admin API and Data API (August 27, 2020)
- Updated: Understanding Your Claris FileMaker Cloud Instance (January 19, 2021)
- Best Practices for Upgrading to FileMaker Server 19 (July 27, 2020)
- Top Tips: Optimizing Performance of FileMaker WebDirect in the Cloud (July 1, 2020)
- Top Tips: Optimizing Performance of FileMaker Custom Apps in the Cloud (June 5, 2020)
Years ago we added
OCR functions to
MBS FileMaker Plugin. We decided to go with the Tesseract engine, which was available as C++ library with an open source license. We integrated Tesseract in version 3.02 and stayed with that version for a long time. Since each version requires compatible data files, we could not easily change the library without you guys changing data files.
That brings us to the version 4.11 of Tesseract. We had plans to use the new version and looked for a way to make the transition easy for our plugin users. But since the newer tesseract library exports a C interface, we can load it dynamically at runtime. This way we can give you a
OCR.Load function to opt-in to use the newer library. If you don't do an
OCR.Load, you would keep the older version and your existing scripts continue to work as before. But once you loaded the newer library, you need the newer data files matching the library version.
(more)
New in this prerelease of version 11.3 of the MBS FileMaker Plugin:
Download at
monkeybreadsoftware.com/filemaker/files/Prerelease/, in
Dropbox folder or ask for being added to the dropbox shared folder.
Sometimes you need a preview picture of a PDF document. Our
PDF Library example shows how to browse a PDF with each page being shown in a record with a preview picture. Great to avoid interactive containers and especially avoid the user getting the whole PDF transferred from server to the client computer.
We have several ways to render PDF pictures:
DynaPDF.GeneratePreview
With DynaPDF Pro you can render PDF pages cross platform (macOS, Windows, iOS and Linux) as you have your own PDF engine on hand.
DynaPDF.GeneratePreview is a convenience function to quickly pass in a container value with a PDF inside and get back a PDF with preview. Great way to add previews when inserting a PDF on Windows or Linux. With a preview, the PDF can be shown in a non-interactive container.
Set Variable [ $OutputPDF ; Value: MBS( "DynaPDF.GeneratePreview"; $InputPDF) ]
The function has a flag to only give you an image, so you can also use it like this:
Set Variable [ $OutputPicture; Value: MBS( "DynaPDF.GeneratePreview"; $InputPDF; 1; "preview.jpg") ]
Of course you can do more with
DynaPDF.RenderPage as you see before.
PDFKit.GeneratePreview
PDFKit is the PDF library coming with macOS and iOS. You can use
PDFKit.GeneratePreview function to add a preview to a PDF container value like the one above and then store the PDF with preview in the database.
Set Variable [ $OutputPDF ; Value: MBS( "PDFKit.GeneratePreview"; $InputPDF) ]
You may run a bot to look through PDF containers, check with our
Container.GetTypes function if a preview is there and add it if necessary.
DynaPDF.RenderPage
With DynaPDF we can initialize the library with
DynaPDF.Initialize function and then load a PDF in memory and render individual pages. The following script imports the whole PDF and then renders a given page specified by the page number:
# Start new PDF workspace
Set Variable [$pdf; Value:MBS("DynaPDF.New")]
# Load PDF from container
Set Variable [$r; Value:MBS("DynaPDF.OpenPDFFromContainer"; $pdf; Test::data)]
# Import all pages
Set Variable [$r; Value:MBS("DynaPDF.ImportPDFFile"; $pdf)]
# Render one page as Picture
Set Variable [$r; Value:MBS("DynaPDF.RenderPage"; $pdf; $pageNumber)]
# Put in Container
Set Field [Test::PageImage; $r]
# cleanup
Set Variable [$r; Value:MBS("DynaPDF.Release"; $pdf)]
The
DynaPDF.RenderPage function can take much more parameters and you may specify the DPI you like to get. And you may specify various flags like for excluding form fields. You can specify the desired image file format (TIFF, JPEG, PNG, BMP or JPC) and pixel format (1bit, gray, RGB, BGR, RGBA, BGRA, ARGB, ABGR, CMYK, CMYKA and GrayA) or compression filter (Flate, JPEG, CCITT3, CCITT4, LZW or JP2K). For example the following call creates a 300 dpi CMYK tiff file:
Set Variable [ $r ; Value: MBS("DynaPDF.RenderPage"; $pdf; 1; 300; 0; 0; "default"; "CMYK"; "Flate"; "Tiff"; "test.tif") ]
If you need a DynaPDF Pro license, please check our pricing website and there we have a bundle of MBS Plugin for Server with DynaPDF Pro license.
PDFKit.GetPDFPageImage
With the
PDFKit.GetPDFPageImage function you can query the picture for a page using PDFKit on macOS or iOS:
Set Variable [ $OutputPicture; Value: MBS( "PDFKit.GetPDFPageImage"; MyTable::PDFContainer; $pageNumber; "jpeg"; "test.jpg"; 300; 1 ) ]
As you see we can specify page number, desired image type (JPEG, PNG, GIF or BMP), the DPI for the resolution and what box to use. Like DynaPDF we prefer crop box, but fall back to media box for the page. Media box defines the paper size, while crop box would tell the printing company, where to crop the paper to get the desired final page size.
A client surprised me by presenting me a big calculation to send emails:
SMail(htmlText, EmRecipient, FromEmail, FromName, plainText, Subject, SMTPServer, SMTPName, SMTPpw, EmailID, Send)
Let ( [
$ToEmail = MBS ( "FM.executesql" ; "SELECT \"Email\" FROM \"RM\" WHERE \"EmailID\" = " & EmailID & " AND \"Type\" = 'TO' " ) ;
$ToName = MBS ( "FM.executesql" ; "SELECT \"Name\" FROM \"RM\" WHERE \"EmailID\" = " & EmailID & " AND \"Type\" = 'TO' " ) ;
$ToEmailcc = MBS ( "FM.executesql" ; "SELECT \"Email\" FROM \"RM\" WHERE \"EmailID\" = " & EmailID & " AND \"Type\" = 'CC' " ) ;
$ToNamecc = MBS ( "FM.executesql" ; "SELECT \"Name\" FROM \"RM\" WHERE \"EmailID\" = " & EmailID & " AND \"Type\" = 'CC' " ) ;
$ToEmailbcc = MBS ( "FM.executesql" ; "SELECT \"Email\" FROM \"RM\" WHERE \"EmailID\" = " & EmailID & " AND \"Type\" = 'BCC' " ) ;
$ToNamebcc = MBS ( "FM.executesql" ; "SELECT \"Name\" FROM \"RM\" WHERE \"EmailID\" = " & EmailID & " AND \"Type\" = 'BCC' " ) ;
$AttCont = MBS ( "FM.sql.execute" ; "" ; "SELECT \"Container\" FROM \"AT\" WHERE \"EmailID\" = " & EmailID & " AND \"Path\" IS NULL " ) ; AttCount = MBS("FM.SQL.RowCount"; $AttCont ) ;
$AttPath = MBS ( "FM.executesql" ; "SELECT \"Path\" FROM \"AT\" WHERE \"EmailID\" = " & EmailID & " AND \"Path\" IS NOT NULL " ) ; AttCountP = ValueCount ( $AttPath ) ;
$AttNameC = MBS ( "FM.executesql" ; "SELECT \"Name\" FROM \"AT\" WHERE \"EmailID\" = " & EmailID & " AND \"Path\" IS NULL " ) ;
$AttTypeC = MBS ( "FM.executesql" ; "SELECT \"Type\" FROM \"AT\" WHERE \"EmailID\" = " & EmailID & " AND \"Path\" IS NULL " ) ;
$AttNameP = MBS ( "FM.executesql" ; "SELECT \"Name\" FROM \"AT\" WHERE \"EmailID\" = " & EmailID & " AND \"Path\" IS NOT NULL " ) ;
$AttTypeP = MBS ( "FM.executesql" ; "SELECT \"Type\" FROM \"AT\" WHERE \"EmailID\" = " & EmailID & " AND \"Path\" IS NOT NULL " ) ;
(more)
The video of the MBS Plugin Talk session from
dotfmp conference 2021 is now available on YouTube:
Watch the
MBS FileMaker Plugin, June 2021 News video, which shows what is new in our plugins.
Thanks for Egbert to organize the conference and provide the videos.
You saw the following dialog in FileMaker 19.3?
You can use the checkbox, but it's not permanent. To make it permanent, you need to use regedit and edit the registry:
- Go to HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft
- Create new key "Edge" if it is missing
- Inside Edge, create a new "WebView2" key.
- Inside WebView2, please create a new string value named "AutoLaunchProtocolsFromOrigins" with this value: [{"allowed_origins":["*"],"protocol":"fmp"}]
- Exit Regedit and start FileMaker Pro to check if fmp URL works now.
Sadly we can't do those commands with our plugin as it needs to happen with administrator permissions. It should then look like this in RegEdit:
If you automatically install FileMaker, you may do this via command line with a script or regedit import file.
Let us know if you have questions.
With Claris FileMaker 19.3.1 you can install the MBS Plugin 11.2 for the Data API process.
To install our plugin manually, just copy the plugin to /FileMaker Server/Web Publishing/publishing-engine/wip/Plugins/ folder. Then check in Admin Console to make sure you have plugins enabled for the Data API. The Admin Console doesn't list plugins for Data API. If the plugin is not yet available, you may need to restart the wip process or the whole server to recognize the new plugin.
The exact location is for macOS:
/Library/FileMaker Server/Web Publishing/publishing-engine/wip/Plugins/
For Windows:
C:\Program Files\FileMaker\FileMaker Server\Web Publishing\publishing-engine\wip\Plugins
And for Ubuntu Linux:
/opt/FileMaker/FileMaker Server/Web Publishing/publishing-engine/wip/Plugins
If you have no toggle for Data API plugins in your Admin Console, you may need to get a newer FileMaker Server version.
Our plugins creates you log files in the Logs folder for the output: StdErrDataAPI.log and StdOutDataAPI.log. This way you can watch messages written out via our
Trace function in scripts run via Data API.
Please try and don't hesitate to contact us with questions.
PS: This was actually asked to Claris via Ideas section:
Support plugins in Data API and older idea
Support plugins in Data API.
Nickenich, Germany - (June 24th, 2021) -- MonkeyBread Software today is pleased to announce their support for FileMaker version 19.3. Our MBS FileMaker Plugin 11.2 for macOS, iOS, Linux and Windows has been tested with FileMaker 19.3 and we like to report on compatibility:
Apple M1
Our MBS Plugin in version 11.2 ships with Apple Silicon support included. We built the plugin for macOS to include both code for Intel and ARM, so you have only one file to install. If you load external libraries like dynapdf.dylib or libxl.dylib please refer to the included updated libraries.
Ubuntu
Our plugin supports the new Ubuntu Linux distribution for server as well as the older CentOS 7.x distributions. One plugin version for both environments makes installing our plugin easy.
Data API
Since FileMaker 19.3 supports plugins for the DATA API, you can install our plugin into the right folder and enable plugins. Just copy the plugin to Web Publishing/publishing-engine/wip/Plugins folder for your server on macOS, Windows or Linux. Or install it by using the Install Plugin Script Step.
Windows Microsoft Edge
On Windows Claris moved the Web Viewer to use Microsoft Edge. Instead of the deprecated Internet Explorer engine, they now use new components based on the Chrome project. As of today our WebView functions do not support the newer engine.
All customers are welcome to try the new FileMaker version, update their plugin if needed. We can provide
trial licenses for testing or assist with ordering a newer license.
Please test your solution with the new FileMaker versions before updating all your clients and servers.
As you may have seen, Claris Inc. released the new version 19.3.1 of its FileMaker product family.
This update brings a lot of improvements to the product with Native Apple silicon support, Microsoft Edge support for Windows, Ubuntu Linux for Linux and the updated quick start experience. Read more in the releases notes.
MBS Plugin has been updated in
version 11.2 to take advantage of the latest FileMaker Plugin SDK for version 19.3. Our plugin works well natively on Apple Silicon as well as Ubuntu.
See
Announcement in the community: Claris FileMaker 19.3 is now available!
Claris Blog: More power. No limits. The latest Claris product release.
Claris FileMaker Pro 19.3.1 Release Notes
Claris FileMaker Server 19.3.1 Release Notes
Claris FileMaker Cloud 2.19.3.1 Release Notes
Downloads
To download the new version, you may use the download page for your licensed software (see your license email for a link) or use the in-product updater next week.
New in this prerelease of version 11.3 of the MBS FileMaker Plugin:
Download at
monkeybreadsoftware.com/filemaker/files/Prerelease/, in
Dropbox folder or ask for being added to the dropbox shared folder.
You may know that our
MBS FileMaker Plugin has functions for barcode generation and recognition. The
Barcode.Detect function is based on the open source zxing library can recognize various types, but sadly not all QRCodes recently.
To solve this we add support for the zbar open source library with our new
Barcode.Scan function. Since the library is GPL, you have to include the library file with the application and load it at runtime with
Barcode.LoadLibrary function. You may get a zbar library from the project website or from our
Libs folder in download section. Our example project shows how to load the library at startup of application. On Linux you may just be able to install libzbar0 package and get libzbar installed.
When you like to scan a barcode, get a picture for the barcode. Make sure contrast is good and your barcodes are fully visible with a bit of border space around. Since scanning is done in black and white, you can preprocess the image to increase visibility with auto leveling, e.g.
GMImage.Level function. You call Scan() function and pass the picture and you receive a JSON array with barcodes found. You may get multiple result with different quality values, so you may pick the highest one. Sometimes a few lines or some text is recognized as a barcode. To increase reliability you may limit the list of barcodes types you like to have and thus ignore all others.
Supported types includes EAN-13/UPC-A, UPC-E, EAN-8, Code 128, Code 39, Interleaved 2 of 5 and QR Code.
Our tests show that zbar can recognize a few barcodes, which didn't work with
Barcode.Detect. But since we also found EAN and UPC barcodes recognized in zxing, but not in zbar. Well, you may eventually use both to see what recognizes what.
(more)
Recently a client contacted us for a problem they have. A solution hosted via FileMaker Server with Web Direct shows a layout with a container. Users can click on a button to upload an image, which uses Insert from Device script step. But if the user has an iPhone, the uploaded image may be an HEIF one. The High Efficiency Image File Format is great to preserve images in high quality, but other tools may not be able to read it. And we run into the problem, that the container is marked to be of type JPEG, which confuses other scripts (see Container.GetTypes function).
Here is a script to look on the inserted image and convert it to PNG with our Container.ReadImage function:
# let user take a picture
Insert from Device [ Contacts::Photo Container ; Type: Camera ; Camera: Back; Resolution: Full ]
#
# check filename
Set Variable [ $name ; Value: GetAsText(Contacts::Photo Container) ]
Set Variable [ $extension ; Value: Right ( $name ; 5 ) ]
If [ $extension = ".heif" or $extension = ".heic" ]
# we got a HEIF image
#
# get new file name
Set Variable [ $name ; Value: Substitute($name; ".heif"; ".png") ]
Set Variable [ $name ; Value: Substitute($name; ".heic"; ".png") ]
#
# now convert to PNG
Set Variable [ $image ; Value: MBS( "Container.ReadImage"; Contacts::Photo Container; "PNG"; $name ) ]
If [ MBS("IsError") = 0 ]
# save on success to container
Set Field [ Contacts::Photo Container ; $image ]
Else
Show Custom Dialog [ "Read Image Failed?" ; $image ]
End If
End If
As you see we also rename the name for the container, so it matches the content. You can decide if you prefer JPEG (smaller, no alpha channel), PNG (higher quality and alpha channel possible) or another type.
This script can be used on FileMaker Server on macOS where our plugin can use the built-in system functions. Otherwise you can run it in FileMaker Pro or in your iOS app based on the FileMaker iOS SDK.
PS: fixed set field line to use $image instead of $name.
Since we got this nice database for JavaScript to do custom functions (see blog article:
Custom Functions in JavaScript), we further thought about doing this with FileMaker directly. Imaging to have your custom function in a central start database. Your solution opens, defines your own environment to store them and then loads all your custom functions from a table in the database. You may even have flags to define which are active vs. inactive, testing vs. production quality or maybe limited to admins. Once you have them loaded in memory, you can call them anywhere in any open file as long as FileMaker is running.
Here is our example database:
As you see we can define functions with as many parameters as needed. Then you enter the body of the function with whatever code you have in your custom functions. We got a button for macOS to format the calculation with our
Syntaxcoloring functions. Then we got a button to check errors, which will let FileMaker parse your code with the parameter definition included, so we can find syntax errors. Sadly we can't tell where the error is exactly, but we may tell you if the syntax is okay or what error code we got.
(more)
New in this prerelease of version 11.3 of the MBS FileMaker Plugin:
Download at
monkeybreadsoftware.com/filemaker/files/Prerelease/, in
Dropbox folder or ask for being added to the dropbox shared folder.
We saw a presentation at dotfmp conference from Philipp Puls about him storing his custom functions in a table inside the database. With help of one custom function in FileMaker itself, he can run them all. This dispatcher function would use
execute SQL functions in
MBS FileMaker Plugin to query the expression by name, then add the parameter inside and evaluate it. Quite convenient to have all custom functions stored in one database. Based on that idea we developed two new ways at MBS to do custom functions in JavaScript and later without.
Custom Functions in JavaScript
Since
MBS FileMaker Plugin comes with a built-in JavaScript engine, which works without web viewer and even on a server side script, we can use it to define custom functions, which we can call anywhere in FileMaker:
This example database included with 11.3pr2 shows how to do it. It sets up the whole thing in the start script. With
JS.New we make a new JavaScript environment with the special name "js". Instead of getting a handle number from the plugin, we define the identifier ourselves. This way we can refer to this JavaScript environment everywhere. It's global for all files and all solutions opened in FileMaker and can be initialized in FileMaker Pro, Server (Scripting + Web Direct) as well as FileMaker iOS SDK based applications.
(more)
Event planning strategies for virtual conferences, online events and hybrid meetings
After my blog post
What is needed for a good virtual conference from last weekend, I got some feedback. Thanks for everyone replying. The setup listed in the blog post was heavily inspired from the
dotfmp conference, but other conferences may have a different and less chaos in the setup.
After over a year of virtual conferences, online meetings and a lot of cancellations, people are eager to get back to normal live. While some enjoy the virtual conferences, others dislike them. When we talked about the user group, it looks like some groups like to stay virtual, but others want to go back to local meetings in-person. Other groups may mix virtual meetings for presentations and in-person restaurant meetings for the social gathers. Like one month virtual and other month in-person. Quite a few people want to travel again, so long term virtual only conferences may no longer happen.
(more)
Check out the
FMTraining.tv website. Richard Carlton and his team do a
daily free live stream about FileMaker to watch. And they have a huge library of FileMaker training material to watch and learn all about the Claris FileMaker product family.
A few days ago Christian Schmitz from Monkeybread Software joined a live episode to talk a bit about the
MBS FileMaker Plugin. Watch it on
YouTube.
Do you like this video?
Please let Richard know and send him your wishes or ideas for future live broadcast as well as topics for training videos. And check out the FileMaker Training bundles as well as their new book for FileMaker, updated for2021.
If you use WebViewer in FileMaker or HTMLViewer in Xojo on Windows with IE11 engine and you show PDF documents, you need a PDF plugin for IE. To check whether you have Adobe PDF Reader browser support installed for IE11, please start Internet Explorer (not Edge!), then go to the menu (gear icon in the toolbar on the right) and to the Manage Add-ons dialog:
Select toolbars and extensions first on the left, then go down to pick all add-ons in the popup menu. Then on the right, you should see Adobe PDF Reader in the list. This should show 32-bit and 64-bit versions there. If one is missing, repair your Adobe Reader installation. Seems like one version of Adobe Reader shipped this year where the 64-bit part was missing. You may get current one where it is included again.
PS: See also
Windows updates breaks PDF display in FileMaker
Please be aware that Microsoft Windows got an update KB5003637, which breaks FileMaker displaying PDFs in an interactive container.
You may want to not install this update for some time or uninstall it when you find it installed.
An upcoming FileMaker release may switch to use Edge/Chrome for rendering PDF documents, so this will get fixed soon by Claris.
Alternatively you can use our
MBS FileMaker Plugin to render PDF pages (
DynaPDF.RenderPage) and have them show as JPEG or PNG pictures in a container.
See also posting in Claris Community:
Suddenly PDF are not shown in FileMaker (since today !) in multiple computer / different customer
PS: the newer KB5004760 patch for Windows 10 may fix this.
New in this prerelease of version 11.3 of the MBS FileMaker Plugin:
Download at
monkeybreadsoftware.com/filemaker/files/Prerelease/, in
Dropbox folder or ask for being added to the dropbox shared folder.
Check out the
FMTraining.tv website. Richard Carlton and his team do a
daily free live stream about FileMaker to watch. And they have a huge library of FileMaker training material to watch and learn all about the Claris FileMaker product family.
On
Wednesday, 9th June 2021 at 1 PM PDT (22:00 o'clock in Germany), we may show you a few MBS Plugin examples and answer questions:
Please bring questions!
Let's collect what you may need to run a virtual conference. This blog post may be updated later to add more details, so please send us feedback. MBS has hosted over 10 conferences/events in the past, but since we may run a virtual one someday, let's think about what may be needed for a company to run such a virtual conference:
Attendees
- Virtual conference, so no per person cost like food or chairs, so make it free to join.
- Use existing logins for company's forum/community to avoid people register again. Preferable single sign-on for everything.
- Email all your users, prospects and customers to let them know, early to mark dates in calendar and later to remind them.
- Take signups before and while the conference runs.
- Let attendees sign a checkbox or so for them being okay with recordings showing them if they ask a question or present in a session.
(more)
Check out the
FMTraining.tv website. Richard Carlton and his team do a
daily free live stream about FileMaker to watch. And they have a huge library of FileMaker training material to watch and learn all about the Claris FileMaker product family.
A few days ago Christian Schmitz from Monkeybread Software joined a live episode to talk a bit about the
DynaPDF functions in the
MBS FileMaker Plugin. Watch it on
YouTube.
Next video stream with MBS will be on Wednesday, 9th June 2021. And the recording from the Q&A session from 4th June 2021 should be available soon.
Do you like this video?
Please let Richard know and send him your wishes or ideas for future live broadcast as well as topics for training videos. And check out the FileMaker Training bundles as well as their new book for FileMaker, updated for2021.
New in this prerelease of version 11.3 of the MBS FileMaker Plugin:
Download at
monkeybreadsoftware.com/filemaker/files/Prerelease/, in
Dropbox folder or ask for being added to the dropbox shared folder.
For dotfmp 2021 we present what is new this year in MBS FileMaker Plugin:
(more)