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.
The names for links in the PDF may often have names from the original content. For example our documentation uses the function names there as link names. But this can be optimized with the NewLinkNames flag and rename the internal link names with a running counter. This saves a few bytes for each link, which can sum up with thousands of link names.
Some drawing paths have an no-op operator on the end. Instead of defining a path and not using it, we can remove the definition. This usually happens in a lot of tools to create PDFs, as paths are defined automatically. e.g. you may have a rectangle to group items on the layout and the rectangle is not visible as it has no stroke and no fill. The resulting path is there, but has no output.
If you pass FlattenLayers flag, all the layers may get flattened and non visible layers may get removed. As some layers may have content behind other layers, the invisible paths check above may kick in and remove content.
See also FlattenAnnots and FlattenForm functions.
The PDF may contain additional things, which can safely be removed. This includes private data from applications like Indesign or Adobe Illustrator. Those store details for editing of the PDF with the PDF as a BLOB. We can skip this data and get a smaller PDF size. Usually a PDF viewer will ignore any item it doesn't understand.
We can remove thumbnails embedded in the pictures as those will be generated in the viewer if needed. Same for alternative representations of images. For example an application may include a CMYK and a RGB representation and we can remove one (the one marked as alternative).
Convert to colorspace
Beside optimization, we can do some extra operations like converting colors to other color spaces. This includes converting to grayscale, RGB or CMYK. If you like to convert a PDF to grayscale, converting colors here may be useful. Otherwise if you have to send a PDF to a printer, you can convert to CMYK. Usually you don't need this as the printer will raster the PDF in CMYK color space. Converting CMYK content to RGB may reduce size as images have only 3 instead of 4 color spaces.
The flag ConvertAllColors allows to convert separation, DeviceN and NChannel color spaces to RGB/CMYK colors. This usually means you loose color information as the alternative colors will be used and those are specified in RGB, CMYK or LAB color spaces. For example a printer may have cyan, magenta, yellow, black and a special colors like gold and silver colors. An area marked with a Device color like gold will be printed with the gold ink to produce the shiny effect on the paper. Replacing those colors with their alternative CMYK color will remove that and the color is then printer with a mixture of yellow.
Finally the flag ConvertGrayTo1Bit can be used to convert colors to black and white. For this you can pass UseOtsuFilter flag to request to use Otsu filter.
Convert Text to Outlines
Recently added in the last weeks, DynaPDF can now convert text to outlines. This removes fonts and text information from the PDF and leaves the content as vector graphics. You can still read it as human, but a computer needs OCR to get back text.
Optionally you can pass ConvNonEmbFontsOnly flag to limit the conversion of text to outlines only for non embedded files. This way a PDF referencing fonts on your computer can convert those to outlines. Great to email your PDF to printer shop, where they don't have the required font and you can still get your PDF printed well.
Annotations and form fields are not affected by the conversion. In order to consider these objects too it is possible to flatten all annotations and form fields before calling Optimize. See FlattenAnnots and FlattenForm functions.
The flags above can be combined in various ways. In general Optimize should be called at the end of your PDF processing just before outputting the PDF document. Our plugin may render preview and close the PDF file.
To use the Optimize function, you need a DynaPDF license with Pro or Enterprise level. Starter or Lite versions are not enough.
Without a license key you can test this feature and see how it works.
For more details, please check the DynaPDF manual on the Optimize function. For FileMaker specific notes, please check DynaPDF.Optimize function in our documentation. For Xojo specific things, please check Optimize function in DynaPDFMBS class.
Check also DuplicateCheck flag for SetImportFlags2 function to enable duplication check. This helps to reduce the file size as duplicate font, image, templates and extended graphics state are replaced with references to first one.
Please do not hesitate to contact us with your questions.
I updated my SwiftFM repo for the FileMaker 19 Data API.
Notable improvements include support for the new `validateSession()`, and moving the server `message` into the completion block. So now you can access the message in the closure, where it's more helpful. Better examples as well. Give it a ⭐️ on GitHub if you find it useful. Thanks! 😘
We are having this issue with the change of any of this variables
FileMaker Server 18
FileMaker Go 18
We have a Layout for FileMaker go to upload photos from an iPod Touch or iPhone Pro 11, and when we use a script to take the photo directly from the camera works perfectly, but when we use the another one that has to open the library from the device it will happen either of this 2 things
1. It will duplicate on the mini preview the last "good" picture and when try to maximize the picture nothing shows up
2. It will happen this weird "no signal tv" ( that's how I call this lol ) image and there's no way to see the picture
On MacOS the pictures looks great, also con iOS , it seems that windows it's not detecting as a valid file when the photo is taken from the library of the iPhone or the iPod Touch (this never happen in older versions of filemaker or iOS)
Any ideas ?
The "swiss army knife" plug-in is now compatible with iOS App SDK 19 and can execute macOS and Windows system scripts asynchronously
Prague, CZ -- June 23, 2020 -- 24U Software announces the version 3.1 of 24U Toolbox Plug-In for FileMaker, toolbox of the most useful calculation functions for daily use. This update adds compatibility with iOS App SDK 19 and makes it possible to execute macOS and Windows system scripts asynchronously (without waiting for result).
Version 3.1 brings:
Function Toolbox_DoSystemScript can be called asynchronously Support for iOSAppSDK 19 added Fixed issue when 3 or more serial numbers are registered which caused FileMaker to freeze Compatibility and performance fixes
About 24U Toolbox Plug-In
24U Toolbox Plug-In is a robust FileMaker Pro plug-in which allows FileMaker Pro databases to:
Execute FileMaker or System shell scripts to automate tasks inside/outside of FileMaker Pro Execute SQL commands to develop faster and keep your solution clean Match & replace regular expressions to find & replace text fast using patterns Merge data values into text while maintaining styling to quickly and easily apply templates Lookup DNS name for IP & vice versa to find out who is connecting from wher Get current public IP to know more about clients and discover potential security attacks Define global keyboard shortcuts to avoid unnecessarily excessive use of script triggers Obtain precise microsecond timestamps to measure nearly unmeasurable chunks of time Get the type of a FileMaker variable to let your scripts make the right decisions Share variables between databases to avoid creating too many external data sources Get rich text as HTML to generate crystal clean HTML and CSS Support for iOS App SDK and FileMaker Cloud makes the plug-in work on the whole FileMaker Platform
System Requirements and Compatibility:
24U Toolbox Plug-In 3.1 requires any Intel Mac since 2008, 2048 MB RAM, Mac OS X 10.10 Yosemite, FileMaker Pro 15. Recommended is any Intel Mac, 4 GB RAM, Mac OS X 10.10 Yosemite, FileMaker Pro 16 Advanced or newer (including FileMaker 19).
1 GHz processor, 2048 MB RAM, Windows 8.1 and FileMaker Pro 15 are minimum requirements for using the plug-in on the Windows platform. 1.6 GHz processor, 4 GB RAM, Windows 8.1 or newer, FileMaker Pro 16 Advanced or newer (including FileMaker 19) are recommended.
For using 24U Toolbox Plug-In 3.1 with iOS are required macOS 10.12, FileMaker Pro or Pro Advanced (for creating FileMaker solutions), Xcode8 (Swift 3.0), iOS 10.0, developer.apple.com account (for testing and deployment on device) and FileMaker iOSAppSDK 18
Availability and Pricing
24U Toolbox Plug-In 3.1 is immediately available for download free of charge as a fully functional 14-days trial version, which can be activated after purchasing a license. Licenses for 24U Toolbox Plug-In start at US$49 per user, $499 per server. Volume discounts are available for 5 or more users. iOS app licence for Toolbox Plug-In starts at US $499 for up to 20 users.
More information: https://www.24usoftware.com/Toolbox/
About 24U Software
With customers in 75 countries and 29 years of experience with the Claris FileMaker platform, 24U excels in developing new or taking care of existing custom apps, optimizing their performance, identifying and resolving potential issues and liabilities, improving reliability, stability and scalability, integrating them with other systems including various hardware devices, and extending them beyond expectation.
As a Claris Platinum Partner, 24U helps global businesses around the world to maintain sustainable growth by working with their in-house developers or completely taking care of the maintenance and development of their business solutions.
(c)2020 24U s.r.o. All rights reserved. 24U and 24U Software are trademarks of 24U s.r.o. Claris and FileMaker area trademarks of Claris International, Inc., registered in the U.S. and other countries. All other trademarks are the property of their respective owners. Pricing and availability are subject to change without notice.
Our lead developer Milan made his dream come true and built a pond controlled by FileMaker and Raspberry Pi.
The pond contains about 35 cubic meters of water (about 9246 gallons) and it’s 2 meters (6.5 feet) deep in its deepest point. It is equipped with both mechanical and pressurized filter, UV light, pumps for filtration and waterfall, and an air pump. There are water plants, fish, and other water animals living in the pond. To keep the pond in good conditions, Milan has automated control of its environment with the help of Claris FileMaker and Raspberry Pi…
Click here to read how he made it all work and even watch it in action