Jump to content


  • Posts

  • Joined

  • Last visited

  • Days Won


MonkeybreadSoftware last won the day on April 21 2019

MonkeybreadSoftware had the most liked content!


Profile Information

  • Title
  • Industry
  • Gender
  • Location
  • Interests
    FileMaker, Xojo, Hiking, Traveling

Contact Methods

  • Website URL
  • Skype

FileMaker Experience

  • Skill Level
  • FM Application
    16 Advanced

Platform Environment

  • OS Platform
  • OS Version

FileMaker Partner

  • Certification
    Not Certified
  • Membership
    FileMaker TechNet
    FileMaker Business Alliance

Recent Profile Visitors

11,520 profile views

MonkeybreadSoftware's Achievements


Proficient (10/14)

  • First Post
  • Collaborator
  • Conversation Starter
  • Week One Done
  • One Month Later

Recent Badges



  1. Have you watched recent videos about MBS FileMaker Plugin on YouTube? MBS and FileMaker Custom Functions Run Via Plug-In MBS Plugin Talk - Christian Schmitz FileMaker and MBS Functions Spotlight FileMaker and MBS DynaPDF Functions Spotlight MBS FileMaker Plugin 2021 FMDiSC Meeting 3/12/2021 Monkeybread Plugin for FileMaker FileMaker Developers in Southern California MBS FileMaker Plugin 11.1 We keep videos of our own videos on the website, but when we show something in FMTraining's Live Broadcast or at a FileMaker groups like FMDisc, we have only the YouTube videos to link to. Enjoy!
  2. High Sierra is macOS version 10.13, so you'd need FileMaker Pro 18 there. You should migrate database from FM 5.5 to current one, which may involving converting it to newer format with FileMaker 11 and then converting again with FileMaker 18 or 19. The FileMaker Server 19 may still let FMP 18 connect.
  3. You can now try this with the new version 11.3 of MBS Plugin: MBS FileMaker Plugin 11.3
  4. Nickenich, Germany - (July 12th, 2021) -- MonkeyBread Software today is pleased to announce MBS FileMaker Plugin 11.3 for macOS, iOS, Linux and Windows, the latest update to their product that is easily the most powerful plugin currently available for Claris FileMaker produce line. As the leading database management solution for Windows, macOS, iOS and the web, the Claris FileMaker Pro Integrated Development Environment supports a plugin architecture that can easily extend the feature set of the application. MBS FileMaker Plugin11.3 has been updated and now includes over 6500 different functions, and the versatile plugin has gained more new functions: With this release we integrate zbar as an option for barcode detection. If you have a picture of a barcode to detect, you can try Barcode.Detect with zxing. Or you load the zbar library with Barcode.LoadLibrary function and then try the new Barcode.Scan function. Supported barcodes in zbar includes EAN-13/UPC-A, UPC-E, EAN-8, Code 128, Code 39, Interleaved 2 of 5 and QR Code. For years we have OCR functions using tesseract 3.02 and that library got dated. We now allow you to opt-in to use OCR.Load and load the current version 4.1 of tesseract and benefit from the enhancements in the library. With the new version you can recognize with multiple languages in the same text and pass a picture directly to the engine. You may use custom functions in FileMaker. Would you enjoy having them stored in a table? You could keep multiple versions like production vs. development and then load them at startup of FileMaker into memory. Then you can call them anywhere with our FM.CF function and pass variable number of parameters. Works across multiple files and can be used server side or in FileMaker iOS SDK. For CURL we added a support for pre-signed URLs. You can use our examples for Amazon S3 to upload files and then generate time limited URLs to access those files with CURL.AWSPresignURL to load them e.g. in a WebViewer. The CAInfo file can now be passed from a container. Use the new JS.CF function to define custom functions in JavaScript and run them via our plugin at any time. Store the functions in a table and load them on startup of FileMaker. Then use them across files as long as FileMaker runs, including server side scripts or FileMaker iOS SDK. Enjoy all the built-in JavaScript functions for math, arrays, JSON or define your own functions including reaching out to FileMaker via evaluate, SQL queries or script triggering. Create named JavaScript environments with JS.New, list existing ones with JS.List function and call functions via JS.CallFunctionValues. For Windows we improved our Screenshot function to work on multiple screens. We implemented more RTF functions like the new Text.RTFToText function. And that includes Clipboard.GetStyledText and Clipboard.SetStyledText to now work on Windows as well as TextView.GetStyledText and TextView.SetStyledText. For macOS we added the option to get private browsing for WebViewers with WebView.SetUsePrivateBrowsing function, we support more barcode types for Vision.DetectBarcode and the PageSetupDialog functions can now define a custom paper size. We added SystemInfo.isMonterey to check for the upcoming macOS version. For iOS the QuickLook panel can now disable sharing with QLPreviewPanel.SetSharingAllowed function. The SystemInfo.IsLowPowerModeEnabled can tell you whether user is low on battery. We added Archive.GZipDecompress to quickly decompress gzip data in memory. Our script search now jumps to a matching line with return key, XML.Query function got new flags and new App.PlaySystemSound function allows to play system sounds. We added newer list functions like List.MapEntries and List.GetColumn, a new FM.ErrorMessage function to query error messages for FileMaker error codes and we got a Text.FromStyles function to turn JSON from Text.Styles back to styled text. Finally we updated curl library to version 7.77.0, DynaPDF to, openssl library to 1.1.1k, SQLite to 3.36.0 and Xcode to version 12.5.1 See release notes for a complete list of changes. More details in the release notes. Please take the time to check our 600 example databases and check where you can use our plugin features in your solutions. System Requirements: * macOS 10.9 or later, including macOS 11.0 Big Sur * Windows 7 and newer, including Windows 10 and Windows Server 2020 * FileMaker Pro 7 to 19.3 * FileMaker iOS SDK * FileMaker Server for Linux, Windows oder macOS * FileMaker Cloud for AWS Pricing and Availability: MBS FileMaker Plugin is available directly from the MonkeyBread Software website with licenses starting at just $149 (USD). You can just download and try the plugin without a license or request a trail license. Not all functions are available in all platforms, please check specifications. Please join us on the next conferences and visit our booth. Monkeybread Software: https://www.monkeybreadsoftware.com/ MBS FileMaker Plugin Website: https://www.monkeybreadsoftware.com/filemaker/ Function Reference: https://www.mbsplugins.eu/ Download Free Trial: https://www.monkeybreadsoftware.com/filemaker/download.shtml Events and conferences: https://www.monkeybreadsoftware.com/filemaker/events/ Logo: https://www.monkeybreadsoftware.com/images/MBSLogo.jpg Release notes: https://www.monkeybreadsoftware.com/filemaker/releasenotes.shtml Located in beautiful Nickenich, Germany, MonkeyBread Software is a privately held company founded in 2000 by Christian Schmitz. MonkeyBread Software focuses on the Macintosh, Linux and Windows platforms. With over twenty years as a software developer, Christian's aim is developing unique and useful utilities, complemented by first-class customer support. Copyright 2000-2021 Christian Schmitz Software GmbH. MonkeyBread Software is a registered trademark of Christian Schmitz, Nickenich. All Rights Reserved. Apple, and the Apple logo are registered trademarks of Apple Computer in the U.S. and/or other countries. FileMaker Pro and FileMaker are trademarks of Claris International, Inc. Other trademarks and registered trademarks may be the property of their respective owners. Greetings Christian Schmitz Monkeybread Software
  5. We like to show you what you can do with our DynaPDF features in our MBS FileMaker Plugin. Please see the topics below and take a look on the relevant example projects once you downloaded our plugin. Create New PDF from scratch Start a new blank PDF and add content to it. Just call DynaPDF.Append to add a new page and then while the page is open, draw some content on it. This may involve setting color with DynaPDF.SetFillColor or DynaPDF.SetStrokeColor functions and calling drawing functions like DynaPDF.MoveTo and DynaPDF.LineTo to draw a line. With DynaPDF.Rectangle, DynaPDF.DrawArc, DynaPDF.Bezier123 and our other drawing functions, you may build complex vector graphics. To write text you can use DynaPDF.WriteText for simple text. Or you use a function like DynaPDF.WriteStyledTextEx to fill in some styled text from FileMaker directly into a rectangle on the page. You can play pictures with DynaPDF.InsertImage function right from a container or with DynaPDF.InsertImageFile from a picture file. But if the picture should be a barcode, please consider using DynaPDF.InsertBarcode function instead to get your code as vector graphics. Load PDF documents You can load PDF documents into memory. Either you use DynaPDF.OpenPDFFromContainer for a container value, which may be a container field or some variable. Or you have a file and then use DynaPDF.OpenPDFFromFile function to open it. After you loaded a PDF and then you can inspect it: Get page count via DynaPDF.GetImportPageCount Get page sizes via DynaPDF.GetImportPageBounds Get metadata via DynaPDF.GetInMetadata, DynaPDF.GetImportDocInfo, DynaPDF.GetInDocInfoCount, DynaPDF.GetImportDocInfoAsJSON Finally import individual pages (DynaPDF.ImportPDFPage) or whole file (DynaPDF.ImportPDFFile). Extract text Once you have a page or the whole PDF imported, you can use DynaPDF.ExtractText function to extract text from a page or multiple pages. A special possibility is to specify an area in a page and only extract the text from that area, e.g. to read an invoice number. You can store text of the whole document or per page into fields and later search for this text. That is how our PDF Library example can provide search and find words and know which page they belong to. See Extract Text.fmp12 and PDF Library.fmp12 Extract images With DynaPDF.GetImageCount function you can query how many images you have in your current PDF document. Then loop over them with DynaPDF.GetImage and query various values for those images like width and height. MBS( "DynaPDF.GetImage"; $PDF; $Index; "Picture"; "test.jpg"; "JPEG" ) And his provides you the picture as JPEG file and you can assign it to a container field to show. See Extract Images.fmp12 Merge PDF documents Since you can import pages from a PDF file, you may loop and import from various PDF documents. Just call DynaPDF.OpenPDFFromContainer or DynaPDF.OpenPDFFromFile multiple times for different input PDF documents. Then import the content as needed with DynaPDF.ImportPDFFile or DynaPDF.ImportPDFPagefunctions for each document. There is always only one open import PDF, so you may switch between different ones with opening a new import document. You can also add pictures as PDF pages. While you can do it manually with DynaPDF.AppendPage and DynaPDF.InsertImage, we got a convenience function for you: DynaPDF.AppendImagePage. With DynaPDF.AppendImagePages you can easily pass a list of native file paths and we loop over them to insert them all as pages. If you like to split a PDF into new PDFs for each page, check the split example. We simply loop over page count, import one page into each its own new document. And than save each PDF into a separate field or container. If you like to have chapter marks, you can check our bookmark functions. See Merge PDFs.fmp12, Merge PDFs to File.fmp12, Split PDF.fmp12, Picture to PDF.fmp12, Bookmarks.fmp12 and Scan with WIA to PDF.fmp12 Add pages numbers You may have a document created already, then import it and start to edit pages. The DynaPDF.GetPageCount function tells how many pages you have, so you can loop over them and call DynaPDF.EditPage to edit a page. As in our examples you may best just use DynaPDF.WriteFTextEx to draw your page number left or right aligned within a text box on the bottom right or left of a page. See Add Page Numbers.fmp12 and Personalized PDFs.fmp12 Add watermark You can use the same function as DynaPDF uses internally for the demo watermark in your own PDFs. So if you like to have a blue "PRIVATE" or "UNDER NDA" text on the page, you can set the color and use our DynaPDF.WriteDemoText function. Since we can also do transparency for text or images, your watermark can be any text or image placed on the pages with high transparency. You may even place invisible text on a page to include information like the name of the user, who downloaded a confidential PDF, so you can identify it later. See Watermark pages.fmp12 and Personalized PDFs.fmp12 Add links to pages or websites When you merge PDFs, you may want to add an index page like in our merge example database. Once you draw the index page and you know where you draw the names and which page to jump to, you can add link annotations with DynaPDF.PageLink function. Since you may not yet know where to jump to, please use named destinations. You define a link with DynaPDF.PageLinkEx function to a named destination named e.g. "document1". Later when you add the pages for that, you add a named destination with DynaPDF.CreateNamedDest function. If you use table functions to create the index page, you may use DynaPDF.CreateNamedDest, DynaPDF.CreateGoToActionEx and DynaPDF.Table.SetCellAction together. This creates the named destination, the go to action and then puts it in the cell to react on clicks. the big advantage is that you can merge documents and build the table while you loop the records. Once you merged all and your table is correct, you insert new pages on the beginning to output the table. See Add Weblinks.fmp12 and "Merge with Table Of Content" script in Merge PDFs.fmp12 Draw styled text and multi page text You can convert styled text from FileMaker format to the format needed in DynaPDF and output the text on a PDF page. And you can have text output over multiple pages with a calculation expression to decide what to do when the current box is full. Like you can decide to continue on a second column on the page. Or you create a new page and continue there. See Live Styled Text.fmp12, Styled Text.fmp12, WriteFText.fmp12 and Multi Column Output.fmp12 Render pages and previews Instead of showing the full PDF in an interactive container and download the PDF every time someone goes to a record, you may just show a preview of the first page as picture. That may be much faster to show and produces less load on the server. And people may not export/print the PDF from the preview. Use DynaPDF.GeneratePreview as a lightweight function to quickly get a preview for the PDF document. Or render various pages with DynaPDF.RenderPage function like our PDF Library example does. That way you can browser FileMaker records to see the various pages. Rendered pages may also get rendered with CMYK or in lower/higher resolution. See Generate Previews.fmp12, PDF Library.fmp12, DynaPDF Batch Preview.fmp12 and Render Page.fmp12 Replace pictures You may place pictures on a PDF page. But if you use a template PDF from your users, you may replace images. For example a real estate agency may have some fancy design, where some pictures of a house is shown with a framing picture on top. Then you may put in a default picture and use DynaPDF.ReplaceImage function to replace with with the actual picture you like to use. See Replace Image.fmp12 Optimize PDF documents File sizes for PDFs created in FileMaker may high. Images embedded may have higher resolution than desired and there may be duplicate content (pictures or fonts) embedded. Or for a template document, the designer used Indesign or Adobe Illustrator and those include extra information used for editing. All those things can be reduced and so the DynaPDF.Optimize function may produce a much smaller PDF document. You can define how to scale down images and compress them as JPEG. We usually only take high res pictures and lower them to maximum 150 dpi for PDF documents sent via email. See Optimize PDF.fmp12 Create PDF documents in PDF/A format If you have a DynaPDF Lite license, you can create blank new PDF documents in PDF/A format and use DynaPDF.CheckConformance function. If you like to convert any PDF to PDF/A, please buy a Pro license and the PDF/A converter add-on to DynaPDF from us. The PDF document you loaded can then be converted and fixed to be a valid document for the PDF/A version you need. See Create Text as PDFA.fmp12 and Convert to PDFA.fmp12 Create invoices with Factur-X and ZUGFeRD There exists several standards for digital invoices with PDF for print and an embedded XML file for automatic processing. DynaPDF supports ZUGFeRD in various versions from 1.0 to 2.1 currently as well as Factur-X. You can apply our sample script to create such an invoice and use your own PDF template and build the XML for the invoice to include it with DynaPDF functions. See ZUGFeRD examples. Work with form fields You can create form fields on a page. Then you can set the values for the form fields. You could also load a government issued PDF and fill the values and send it back to the government. Or send a PDF with form fields to your clients, have them fill it and when you get back use DynaPDF to read the form values and put them into your database. We can also work with newer XFA forms using XML definitions. But we still prefer traditional PDF forms. See Form.fmp12, Create Form.fmp12, Create PDF with sum form field.fmp12, Fill Form Fields.fmp12, Show PDF Fields.fmp12, List XFA Streams.fmp12 and List XFA Fields.fmp12 Crypographically sign a PDF When you create PDF documents, you can digital sign them with your digital certificate, e.g. a PKCS#12 file. Your PDF is then sealed and the receiver of the PDF can verify that you signed it and the PDF was not altered. And for the validation of the signature, you can place your own badge on the PDF where the Adobe Reader will show a checkmark in green if signature is valid or a red cross if not. You can customize this appearance. You may also do form fields to take signatures in Adobe Reader. See DynaPDF.CreateSigField function. See Signature Appearance.fmp12 Print PDF You can use DynaPDF.Print function on Windows to send a PDF to a printer directly. For macOS and iOS, check our PDFKit functions. To customize the printing, you can only import the pages you like to print into the current PDF. And you may use print dialogs optionally or load settings you saved before. This is great to print on a Windows server with a local printer in your network. Think about having created an invoice in FileMaker Go. Then you run a PSoS script on the server to make a PDF of the record and pass it to DynaPDF to send to the printer. See Print PDF.fmp12 and Print PDF with options.fmp12 Place PDF pages The DynaPDF.PlaceTemplate function in DynaPDF Pro is very powerful. You can take an existing PDF and place it on a new PDF. This way you can do things like placing two or four pages next to each other on a new page. You can also place one page (with transparent background) on top of another page as in our letter paper example. You can rotate the coordinate system to rotate the page. That is what our DynaPDF.RotateTemplate function conveniently for you. When you output the new template on a page, you can choose the size and position. This way you can place different templates on a big page. For example you can create your own imposition software to place lots of pages on a printing page. See Convert to 2 Pages.fmp12, Apply Letter Paper to PDF.fmp12, Shrink PDF pages.fmp12 and DynaPDF PlaceTemplate.fmp12 Barcodes DynaPDF can draw barcodes on a PDF page as vector graphics. This has advantages over placing an image with a barcode as it is always sharp at any resolution. And you can CMYK black to draw the barcode and have it print perfectly in black and white. We have an example for QR-Codes used in Switzerland for payments. And one of our blog posts shows how to make an EPC, the European Payment Code. If you place those codes on the invoices, you can make sure your users can use them and get payments done correctly. Like you specify the destination bank account and the subject line, so you can better match payments to invoices. See Generate EPC-QR-Code in FileMaker. See DynaPDF Barcodes.fmp12 and Swiss QRCode.fmp12 More There is even much more like highlighting text on a page, comparing two pages visually, replacing text, extracting attachments, cropping PDF pages and much more. Try our examples or look through the function names. You may test without a license key or with a MBS trial license. Please don't hesitate to contact us with your questions.
  6. 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. macOS with Homebrew One way for macOS is to use the homebrew project to install the tesseract library with data files on a Mac. So after installing homebrew package manager via Terminal, you would use a command to install the packages like this: And then you would do two OCR.Load function calls to load the libraries, first the leptonica image library and then the actual OCR library on top: If both return OK, you are good to go. macOS with our download Or you go to our website where we have a disk image for you. This is a bit special as we provide you with one dylib for both libraries (leptonica and tesseract) as well as both architectures: Intel and ARM. So you put this dylib somewhere with the files somewhere and then you can load the plugin here: Once loaded, you are ready to go. Linux On Linux with Ubuntu you can install the tesseract files via Terminal using the apt-get command: This should install all the dependencies and the tesseract package. Once that is done, you can simply load it: Please notice that we don't pass a path since the libraries are installed in the default location for Linux, so the loader will find them automatically. If both return OK, you are good to go. Windows On Windows you may use an installer for tesseract to get the data files and the DLLs into place. We got an installer for you from the University of Mannheim on our Download Libs folder. Once installed you can load it: As you see we have to first switch the current working directory to the right folder. Then we load first the leptonica library and then the tesseract library. Since the tesseract one depends on the others, we load it first to have the DLL loader find it. But if all three functions returned OK, you a good to go. Initialize it Now the library is loaded, the MBS FileMaker Plugin switches to use Tesseract 4 for all OCR function calls. Next you call OCR.Initialize function to initialize it. Pass the path to the language files, except on Linux or with homebrew, where it may go with the default location instead. When initializes, you can start the other functions. Basically you can just move this all to the start script of your solution or first time you like to use OCR functions. Best may be to check with OCR.IsInitialized function if initialize call is needed. New tricks Since we got version 4, we added a few new functions: First OCR.SetImageContainer and OCR.SetImageFile allow you to pass image files and containers directly without going through GraphicsMagick. And the newer engine can be initialized for multiple languages, e.g. "eng+deu" for loading both English and Deutsch (German). To help you with the version change, you can use OCR.Version function to know which one is in use. Or use OCR.IsLoaded function to know whether the new library is loaded. You can try this with 11.3pr plugin today. Please do not hesitate to contact us with your questions.
  7. With Claris FileMaker 19.3.1 you can install the MBS FileMaker 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: For Windows: And for Ubuntu Linux: 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.
  8. 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. Monkeybread Software: https://www.monkeybreadsoftware.com/ MBS FileMaker Plugin Website: https://www.monkeybreadsoftware.com/filemaker/ Function Reference: https://www.mbsplugins.eu/ Download Free Trial: https://www.monkeybreadsoftware.com/filemaker/download.shtml Events and conferences: https://www.monkeybreadsoftware.com/filemaker/events/ Logo: https://www.monkeybreadsoftware.com/images/MBSLogo.jpg Release notes: https://www.monkeybreadsoftware.com/filemaker/releasenotes.shtml Located in beautiful Nickenich, Germany, MonkeyBread Software is a privately held company founded in 2000 by Christian Schmitz. MonkeyBread Software focuses on the Macintosh, Linux and Windows platforms. With over twenty years as a software developer, Christian's aim is developing unique and useful utilities, complemented by first-class customer support. Copyright 2000-2021 Christian Schmitz Software GmbH. MonkeyBread Software is a registered trademark of Christian Schmitz, Nickenich. All Rights Reserved. Apple, and the Apple logo are registered trademarks of Apple Computer in the U.S. and/or other countries. FileMaker Pro and FileMaker are trademarks of Claris International, Inc. Other trademarks and registered trademarks may be the property of their respective owners. Greetings Christian Schmitz Monkeybread Software
  9. 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. Please ty with 11.3pr3 or later and please don't hesitate to contact us with your questions. For macOS and iOS see also Vision.DetectBarcode and Vision.SupportedSymbologies functions to use Apple's Vision framework.
  10. 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 ; $name ] 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.
  11. 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. Our start script set ups a global dictionary named "CF" in our example using Dictionary.CreateNamed function. Then you add functions there with Dictionary.SetValueForKeyone by one or with Dictionary.AddSQL function as a block. Each function would have comments in front to name the parameters. We use "/// " & $name there, e.g. "/// value". Then later you can call the custom function with our FM.CF function. You pass the dictionary identifier, "CF" in our example. Then you pass the name of the function (case sensitive) and the parameters. As many parameters as you need, so you may define your function with 10 parameters, but only pass 2 or 3 depending on what you do. The dictionary is 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. Since we use a dictionary identifier, you can have different sets of custom functions in different namespaces. Please try the JS.CF function with MBS FileMaker Plugin in version 11.3pr3 or later.
  12. 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. Next we fill the JavaScript environment with JS.AddFunction function to define our custom functions in JavaScript. If you like, you can use JS.AddFileMakerEvaluateFunction, JS.AddFileMakerRunScriptFunction and JS.AddFileMakerSQLFunction to allow JavaScript to evaluate FileMaker expressions, e.g. to call Get functions, trigger scripts or run a SQL command. You can also use JS.SetGlobalPropertyValue or JS.SetGlobalProperty to store global data for JavaScript to use later, like big tables or JSON objects. Since functions for JavaScript can have variable number of parameters, you can also pass as many as needed via our plugin. Now when you like to use the custom functions in JavaScript, you can just call JS.CF function in our plugin, pass the function name and the parameters. The plugin converts them to JavaScript (as text or numbers), performs the function and returns the result as value. JS.CF is a shortcut to JS.CallFunctionValues with passing "js" as the identifier of the environment. But you can of course also call JS.CallFunctionValues or JS.CallFunction as needed. The last one passes values as JSON, so texts go in quotes. If you have some JavaScript code to do some math, text manipulation, checksum calculation, JSON processing or otherwise be useful, you can now use it like a custom function. Please try the JS.CF function with MBS FileMaker Plugin in version 11.3pr2 or later. Part two will follow soon to explain how to do this without JavaScript and replace the normal custom functions you know.
  13. Do you use MBS FileMaker Plugin? You could try the WebView.PostURL to pretend you are a different bowser than IE.
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.