[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fY-Gv5v_la0V_ejaqEgg-KEcYN8a_FjfoVPhlyNDh9Zg":3},{"item":4},{"id":5,"idKnowledge":6,"slug":7,"title":8,"description":9,"bodyMarkdown":10,"bodyHtml":11,"author":12,"date":13,"createdAt":14,"topics":15,"image":17,"hasDownload":18,"fileName":19},"68","1A8B310B-C997-034B-A221-DCFF087ED24A","printing-from-filemaker-server-is-possible","Printing from FileMaker Server is possible","In some business processes it is of great use if prints are available without executing the print command from a client workstation. In a high capacity workflow like i.e. order picking, printing is basically a waste of time. Having a server print packing slips as orders come in, is much easier and f","[\n\n![](https:\u002F\u002Floggix.com\u002Fwp-content\u002Fuploads\u002F2025\u002F06\u002FFMS_Printing.jpg)](https:\u002F\u002Floggix.com\u002Fwp-content\u002Fuploads\u002F2025\u002F06\u002FFMS_Printing.jpg#36452)\n\n[](https:\u002F\u002Floggix.com\u002Fwp-content\u002Fuploads\u002F2025\u002F06\u002FFMS_Printing.jpg#36452)\n\n##### **In some business processes it is of great use if prints are available without executing the print command from a client workstation. In a high capacity workflow like i.e. order picking, printing is basically a waste of time. Having a server print packing slips as orders come in, is much easier and faster.**\n\nUnfortunately [FileMaker](http:\u002F\u002Ffilemaker.com\u002F) does not support the print functionality when executed in a script on the server. Filemaker Server (FMS) is what we call ‘headless’ and does support printer setup but not the actual print command. This renders the standard “scheduled scripts” as execution option useless. Even when you could print, where would you print to? The server is usually a cloud-machine that has not printers connected right?  \n  \nNow, is printing from a cloud FMS to local printers possible?\n\nSetup FMS Printing\n\nYes, if you want to prevent a ‘workstation as printer robot’ in your network and would like FMS Server to take care of the printing, this is possible. Even when your FileMaker Server is in the cloud and you do not have a in-house print server! There are 4 steps needed to print from FMS:  \n  \n1\\. a document to print (i.e. a PDF file)  \n2\\. a system script that can handle the documents and offer them to get printed  \n3\\. PDF reader that can open en print the document  \n4\\. a network printer that can receive the print command and output your document.\n\n**Ad. 1 Generating a File from a script**\n\nGenerating a file (i.e. a PDF) from a Filemaker script is luckily an option that is supported by FMS. The option “Save record as PDF” for example will give you the option to save your selected record(s) based on the current layout to a (multi page) PDF file. There are also plugins that can help you do this.  \n  \nAd. 2. System Scripts\n\nFileMaker Server offers us the option to execute scheduled FileMaker Scripts, this must be a familiar option to most of you. But besides scheduling Filemaker Scripts, FMS will let you also execute so called System Scripts. These are scripts that run on the server (i.e. Applescripts on Mac or PowerShell scripts on Windows).  \n  \nUsing this System Script option we are able to call “Print” functionality outside of FMS that is not available inside FMS. Below you find an example of some basic scripts that can be used to achieve printing from FMS by a Windows PowerShell script (ps1). Because FMS does not handle .ps1 script very well, in this example we call a batch script (.bat) that in itself calls the .ps1 script.\n\n![](https:\u002F\u002Floggix.com\u002Fwp-content\u002Fuploads\u002F2025\u002F06\u002Fscripts.jpg)\n\nSo as seen in the screen shot above we call: run-printscript.bat which looks like this:\n\npowershell.exe -ExecutionPolicy Bypass -File \"C:\\\\Program Files\\\\FileMaker\\\\FileMaker Server\\\\Data\\\\Scripts\\\\print-pdfs.ps1\"\n\nAnd the “run-printscript.bat” will call: print-pdfs.ps1 which looks like this:\n\n$watchFolder = \"C:\\\\PrintQueue\"\n$logFile = \"$watchFolder\\\\fms-print-log.txt\"\n$printedPath = Join-Path -Path $watchFolder -ChildPath \"Printed\"\n$failedPath = Join-Path -Path $watchFolder -ChildPath \"Failed\"\n$sumatraPath = \"C:\\\\Program Files\\\\SumatraPDF\\\\SumatraPDF.exe\"\n\n# Ensure subfolders exist\nif (!(Test-Path -Path $printedPath)) {\n    New-Item -ItemType Directory -Path $printedPath | Out-Null\n}\nif (!(Test-Path -Path $failedPath)) {\n    New-Item -ItemType Directory -Path $failedPath | Out-Null\n}\n\n$printerMap = @{\n    \"P1\" = \"Kyocera ECOSYS M5526cdn\"\n    \"P2\" = \"Kyocera ECOSYS P2040dn KX\"\n    \"P3\" = \"Kyocera P2040dn Bol Printer\"\n    \"P4\" = \"Kyocera Filemaker-KBLANCO\"\n}\n\nAdd-Content -Path $logFile -Value \"\\`n\\[$(Get-Date)\\] Starting print job...\"\n\nGet-ChildItem -Path $watchFolder -Filter \\*.pdf | ForEach-Object {\n    $pdf = $\\_.FullName\n    $fileName = $\\_.Name\n\n    Add-Content -Path $logFile -Value \"\\[$(Get-Date)\\] Found file: ${fileName}\"\n\n    $prefixMatched = $false\n    if ($fileName -match \"^(P\\\\d+)\\_\") {\n        $prefix = $matches\\[1\\]\n        $prefixMatched = $true\n        Add-Content -Path $logFile -Value \"\\[$(Get-Date)\\] Matched prefix: ${prefix}\"\n\n        if ($printerMap.ContainsKey($prefix)) {\n            $printerName = $printerMap\\[$prefix\\]\n            Add-Content -Path $logFile -Value \"\\[$(Get-Date)\\] Printer mapped: ${printerName}\"\n        }\n        else {\n            Add-Content -Path $logFile -Value \"\\[$(Get-Date)\\] Unknown prefix: ${prefix}\"\n        }\n    }\n\n    if ($prefixMatched) {\n        try {\n            Add-Content -Path $logFile -Value \"\\[$(Get-Date)\\] Attempting to print ${fileName} with SumatraPDF...\"\n            $p = Start-Process -FilePath $sumatraPath -ArgumentList \"-print-to \\`\"$printerName\\`\" \\`\"$pdf\\`\"\" -PassThru\n            $p | Wait-Process -Timeout 20\n            if ($p.HasExited) {\n                $destination = Join-Path -Path $printedPath -ChildPath $fileName\n                Move-Item -Path $pdf -Destination $destination\n                Add-Content -Path $logFile -Value \"\\[$(Get-Date)\\] SUCCESS: Printed ${fileName}\"\n            } else {\n                Stop-Process -Id $p.Id -Force\n                $failedDest = Join-Path -Path $failedPath -ChildPath $fileName\n                Move-Item -Path $pdf -Destination $failedDest\n                Add-Content -Path $logFile -Value \"\\[$(Get-Date)\\] ERROR: Timeout printing ${fileName}\"\n            }\n        } catch {\n            Add-Content -Path $logFile -Value \"\\[$(Get-Date)\\] ERROR printing ${fileName}: ${\\_}\"\n            $failedDest = Join-Path -Path $failedPath -ChildPath $fileName\n            Move-Item -Path $pdf -Destination $failedDest\n        }\n    } else {\n        Add-Content -Path $logFile -Value \"\\[$(Get-Date)\\] Skipped ${fileName}: no valid prefix\"\n        $skippedDest = Join-Path -Path $failedPath -ChildPath $fileName\n        Move-Item -Path $pdf -Destination $skippedDest\n    }\n}\n\nAdd-Content -Path $logFile -Value \"\\[$(Get-Date)\\] Print job finished.\"\nexit 0\n\n**Ad.3. PDF Software**\n\nAs you can see in the code above we call with this script the [SumatraPDF](https:\u002F\u002Fwww.sumatrapdfreader.org\u002Ffree-pdf-reader) software. This is a lightweight PDFreader that we prefer (because of size and ‘silent printing option’) over Adobe Acrobat. So to make this happen download and installe SumatraPDF on the server. Make sure the path to the .exe is correct.\n\n**  \nAd.4. Contact the printer**\n\nLast but not least we need to reach a printer. In the code above you see we wrote some additional lines to make printing to several different printers possible. Depending on the prefix we route the print to the corresponding network printer. What do we mean by network printer, because FMS has no printers conected right? Correct, and here is where the last magic comes in. We installed: [Printix](https:\u002F\u002Fprintix.net\u002F).\n\n![](https:\u002F\u002Floggix.com\u002Fwp-content\u002Fuploads\u002F2025\u002F06\u002Fimage.png)\n\nPrintix is a cloud-printing-service that is extremely affordable and easy to use in combination with your FileMaker Server. Simply install a printix client in your office network and on your database server and all printers in your office will become available to any application on your cloud based database server. Which means: a print command executed on the FMS will end up printing on your local office printer!\n\n![](https:\u002F\u002Floggix.com\u002Fwp-content\u002Fuploads\u002F2025\u002F06\u002Fimage-1.png)\n\nConclusion\n\nPrinting from FileMaker Server is possible. And in the right production process it is actually more then necessary. Based on above code do not forget to create a PrintQueue folder with a “printed” and “failed” folder inside. Any document saved in the PrintQueue will automatically be printed to the assigned printer. When anything goes wrong – printer not available etc. – documents might end up in the “failed” folder. You can another script to keep track of the fails and i.e. message an administrator when this happens.\n\nIf you’re considering or operating with FileMaker for your business, now is the perfect time to contact us and see how we can help you automate your processes.\n\nDo not hesitate to contact us if you want to know more!\n\nShare\n\n[](https:\u002F\u002Fwww.facebook.com\u002Fsharer\u002Fsharer.php?u=https%3A%2F%2Floggix.com%2Fprinting-from-filemaker-server-is-possible%2F)[](https:\u002F\u002Ftwitter.com\u002Fintent\u002Ftweet?text=Printing+from+FileMaker+Server+is+possible+-+Loggix+%7C+Software+Development.+https%3A%2F%2Floggix.com%2Fprinting-from-filemaker-server-is-possible%2F)[](https:\u002F\u002Fwww.linkedin.com\u002FshareArticle?mini=true&url=https%3A%2F%2Floggix.com%2Fprinting-from-filemaker-server-is-possible%2F)[](https:\u002F\u002Fpinterest.com\u002Fpin\u002Ffind\u002F?url=https%3A%2F%2Floggix.com%2Fprinting-from-filemaker-server-is-possible%2F)","\u003Cp>[\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Floggix.com\u002Fwp-content\u002Fuploads\u002F2025\u002F06\u002FFMS_Printing.jpg\" alt=\"\">](\u003Ca href=\"https:\u002F\u002Floggix.com\u002Fwp-content\u002Fuploads\u002F2025\u002F06\u002FFMS_Printing.jpg#36452\">https:\u002F\u002Floggix.com\u002Fwp-content\u002Fuploads\u002F2025\u002F06\u002FFMS_Printing.jpg#36452\u003C\u002Fa>)\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Floggix.com\u002Fwp-content\u002Fuploads\u002F2025\u002F06\u002FFMS_Printing.jpg#36452\">\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch5>\u003Cstrong>In some business processes it is of great use if prints are available without executing the print command from a client workstation. In a high capacity workflow like i.e. order picking, printing is basically a waste of time. Having a server print packing slips as orders come in, is much easier and faster.\u003C\u002Fstrong>\u003C\u002Fh5>\n\u003Cp>Unfortunately \u003Ca href=\"http:\u002F\u002Ffilemaker.com\u002F\">FileMaker\u003C\u002Fa> does not support the print functionality when executed in a script on the server. Filemaker Server (FMS) is what we call ‘headless’ and does support printer setup but not the actual print command. This renders the standard “scheduled scripts” as execution option useless. Even when you could print, where would you print to? The server is usually a cloud-machine that has not printers connected right?  \u003C\u002Fp>\n\u003Cp>Now, is printing from a cloud FMS to local printers possible?\u003C\u002Fp>\n\u003Cp>Setup FMS Printing\u003C\u002Fp>\n\u003Cp>Yes, if you want to prevent a ‘workstation as printer robot’ in your network and would like FMS Server to take care of the printing, this is possible. Even when your FileMaker Server is in the cloud and you do not have a in-house print server! There are 4 steps needed to print from FMS:  \u003C\u002Fp>\n\u003Cp>1. a document to print (i.e. a PDF file)\u003Cbr>2. a system script that can handle the documents and offer them to get printed\u003Cbr>3. PDF reader that can open en print the document\u003Cbr>4. a network printer that can receive the print command and output your document.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Ad. 1 Generating a File from a script\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Generating a file (i.e. a PDF) from a Filemaker script is luckily an option that is supported by FMS. The option “Save record as PDF” for example will give you the option to save your selected record(s) based on the current layout to a (multi page) PDF file. There are also plugins that can help you do this.  \u003C\u002Fp>\n\u003Cp>Ad. 2. System Scripts\u003C\u002Fp>\n\u003Cp>FileMaker Server offers us the option to execute scheduled FileMaker Scripts, this must be a familiar option to most of you. But besides scheduling Filemaker Scripts, FMS will let you also execute so called System Scripts. These are scripts that run on the server (i.e. Applescripts on Mac or PowerShell scripts on Windows).  \u003C\u002Fp>\n\u003Cp>Using this System Script option we are able to call “Print” functionality outside of FMS that is not available inside FMS. Below you find an example of some basic scripts that can be used to achieve printing from FMS by a Windows PowerShell script (ps1). Because FMS does not handle .ps1 script very well, in this example we call a batch script (.bat) that in itself calls the .ps1 script.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Floggix.com\u002Fwp-content\u002Fuploads\u002F2025\u002F06\u002Fscripts.jpg\" alt=\"\">\u003C\u002Fp>\n\u003Cp>So as seen in the screen shot above we call: run-printscript.bat which looks like this:\u003C\u002Fp>\n\u003Cp>powershell.exe -ExecutionPolicy Bypass -File &quot;C:\\Program Files\\FileMaker\\FileMaker Server\\Data\\Scripts\\print-pdfs.ps1&quot;\u003C\u002Fp>\n\u003Cp>And the “run-printscript.bat” will call: print-pdfs.ps1 which looks like this:\u003C\u002Fp>\n\u003Cp>$watchFolder = &quot;C:\\PrintQueue&quot;\n$logFile = &quot;$watchFolder\\fms-print-log.txt&quot;\n$printedPath = Join-Path -Path $watchFolder -ChildPath &quot;Printed&quot;\n$failedPath = Join-Path -Path $watchFolder -ChildPath &quot;Failed&quot;\n$sumatraPath = &quot;C:\\Program Files\\SumatraPDF\\SumatraPDF.exe&quot;\u003C\u002Fp>\n\u003Ch1>Ensure subfolders exist\u003C\u002Fh1>\n\u003Cp>if (!(Test-Path -Path $printedPath)) {\n    New-Item -ItemType Directory -Path $printedPath | Out-Null\n}\nif (!(Test-Path -Path $failedPath)) {\n    New-Item -ItemType Directory -Path $failedPath | Out-Null\n}\u003C\u002Fp>\n\u003Cp>$printerMap = @{\n    &quot;P1&quot; = &quot;Kyocera ECOSYS M5526cdn&quot;\n    &quot;P2&quot; = &quot;Kyocera ECOSYS P2040dn KX&quot;\n    &quot;P3&quot; = &quot;Kyocera P2040dn Bol Printer&quot;\n    &quot;P4&quot; = &quot;Kyocera Filemaker-KBLANCO&quot;\n}\u003C\u002Fp>\n\u003Cp>Add-Content -Path $logFile -Value &quot;`n[$(Get-Date)] Starting print job...&quot;\u003C\u002Fp>\n\u003Cp>Get-ChildItem -Path $watchFolder -Filter *.pdf | ForEach-Object {\n    $pdf = $_.FullName\n    $fileName = $_.Name\u003C\u002Fp>\n\u003Cpre>\u003Ccode>Add-Content -Path $logFile -Value &quot;\\[$(Get-Date)\\] Found file: ${fileName}&quot;\n\n$prefixMatched = $false\nif ($fileName -match &quot;^(P\\\\d+)\\_&quot;) {\n    $prefix = $matches\\[1\\]\n    $prefixMatched = $true\n    Add-Content -Path $logFile -Value &quot;\\[$(Get-Date)\\] Matched prefix: ${prefix}&quot;\n\n    if ($printerMap.ContainsKey($prefix)) {\n        $printerName = $printerMap\\[$prefix\\]\n        Add-Content -Path $logFile -Value &quot;\\[$(Get-Date)\\] Printer mapped: ${printerName}&quot;\n    }\n    else {\n        Add-Content -Path $logFile -Value &quot;\\[$(Get-Date)\\] Unknown prefix: ${prefix}&quot;\n    }\n}\n\nif ($prefixMatched) {\n    try {\n        Add-Content -Path $logFile -Value &quot;\\[$(Get-Date)\\] Attempting to print ${fileName} with SumatraPDF...&quot;\n        $p = Start-Process -FilePath $sumatraPath -ArgumentList &quot;-print-to \\`&quot;$printerName\\`&quot; \\`&quot;$pdf\\`&quot;&quot; -PassThru\n        $p | Wait-Process -Timeout 20\n        if ($p.HasExited) {\n            $destination = Join-Path -Path $printedPath -ChildPath $fileName\n            Move-Item -Path $pdf -Destination $destination\n            Add-Content -Path $logFile -Value &quot;\\[$(Get-Date)\\] SUCCESS: Printed ${fileName}&quot;\n        } else {\n            Stop-Process -Id $p.Id -Force\n            $failedDest = Join-Path -Path $failedPath -ChildPath $fileName\n            Move-Item -Path $pdf -Destination $failedDest\n            Add-Content -Path $logFile -Value &quot;\\[$(Get-Date)\\] ERROR: Timeout printing ${fileName}&quot;\n        }\n    } catch {\n        Add-Content -Path $logFile -Value &quot;\\[$(Get-Date)\\] ERROR printing ${fileName}: ${\\_}&quot;\n        $failedDest = Join-Path -Path $failedPath -ChildPath $fileName\n        Move-Item -Path $pdf -Destination $failedDest\n    }\n} else {\n    Add-Content -Path $logFile -Value &quot;\\[$(Get-Date)\\] Skipped ${fileName}: no valid prefix&quot;\n    $skippedDest = Join-Path -Path $failedPath -ChildPath $fileName\n    Move-Item -Path $pdf -Destination $skippedDest\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>}\u003C\u002Fp>\n\u003Cp>Add-Content -Path $logFile -Value &quot;[$(Get-Date)] Print job finished.&quot;\nexit 0\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Ad.3. PDF Software\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>As you can see in the code above we call with this script the \u003Ca href=\"https:\u002F\u002Fwww.sumatrapdfreader.org\u002Ffree-pdf-reader\">SumatraPDF\u003C\u002Fa> software. This is a lightweight PDFreader that we prefer (because of size and ‘silent printing option’) over Adobe Acrobat. So to make this happen download and installe SumatraPDF on the server. Make sure the path to the .exe is correct.\u003C\u002Fp>\n\u003Cp>**\u003Cbr>Ad.4. Contact the printer**\u003C\u002Fp>\n\u003Cp>Last but not least we need to reach a printer. In the code above you see we wrote some additional lines to make printing to several different printers possible. Depending on the prefix we route the print to the corresponding network printer. What do we mean by network printer, because FMS has no printers conected right? Correct, and here is where the last magic comes in. We installed: \u003Ca href=\"https:\u002F\u002Fprintix.net\u002F\">Printix\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Floggix.com\u002Fwp-content\u002Fuploads\u002F2025\u002F06\u002Fimage.png\" alt=\"\">\u003C\u002Fp>\n\u003Cp>Printix is a cloud-printing-service that is extremely affordable and easy to use in combination with your FileMaker Server. Simply install a printix client in your office network and on your database server and all printers in your office will become available to any application on your cloud based database server. Which means: a print command executed on the FMS will end up printing on your local office printer!\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Floggix.com\u002Fwp-content\u002Fuploads\u002F2025\u002F06\u002Fimage-1.png\" alt=\"\">\u003C\u002Fp>\n\u003Cp>Conclusion\u003C\u002Fp>\n\u003Cp>Printing from FileMaker Server is possible. And in the right production process it is actually more then necessary. Based on above code do not forget to create a PrintQueue folder with a “printed” and “failed” folder inside. Any document saved in the PrintQueue will automatically be printed to the assigned printer. When anything goes wrong – printer not available etc. – documents might end up in the “failed” folder. You can another script to keep track of the fails and i.e. message an administrator when this happens.\u003C\u002Fp>\n\u003Cp>If you’re considering or operating with FileMaker for your business, now is the perfect time to contact us and see how we can help you automate your processes.\u003C\u002Fp>\n\u003Cp>Do not hesitate to contact us if you want to know more!\u003C\u002Fp>\n\u003Cp>Share\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.facebook.com\u002Fsharer\u002Fsharer.php?u=https%3A%2F%2Floggix.com%2Fprinting-from-filemaker-server-is-possible%2F\">\u003C\u002Fa>\u003Ca href=\"https:\u002F\u002Ftwitter.com\u002Fintent\u002Ftweet?text=Printing+from+FileMaker+Server+is+possible+-+Loggix+%7C+Software+Development.+https%3A%2F%2Floggix.com%2Fprinting-from-filemaker-server-is-possible%2F\">\u003C\u002Fa>\u003Ca href=\"https:\u002F\u002Fwww.linkedin.com\u002FshareArticle?mini=true&url=https%3A%2F%2Floggix.com%2Fprinting-from-filemaker-server-is-possible%2F\">\u003C\u002Fa>\u003Ca href=\"https:\u002F\u002Fpinterest.com\u002Fpin\u002Ffind\u002F?url=https%3A%2F%2Floggix.com%2Fprinting-from-filemaker-server-is-possible%2F\">\u003C\u002Fa>\u003C\u002Fp>\n","jeroen","2025-06-27",1781520661000,[16],"FileMaker","\u002Fapi\u002Fknowledge\u002Fimage\u002F68\u002F?v=aacc529eaf99",false,""]