Published 2025-09-16
Local services that perform specific tasks, executed as external process on the local machine.

When a service is not already available, the library asks to install it by using either apt (Linux), brew (MacOS), or chocolately (Windows), depending on the given platform.
sudo apt install ffmpeg fontconfig git imagemagick libreoffice mupdf-tools pngquant poppler-utils subversion libimage-exiftool-perl
pipx install rembg[gpu,cli]
Install brew, then:
brew install --cask libreoffice
brew install create-dmg
brew install ffmpeg
brew install fontconfig
brew install imagemagick
brew install mono
brew install mupdf-tools
brew install pngquant
brew install poppler
brew install subversion
brew install exiftool
pip install rembg[gpu,cli]
In an administrative shell, install chocolatey, then:
choco install svn git vcredist-all imagemagick ghostscript mupdf poppler libreoffice-fresh poppler mupdf ffmpeg pngquant exiftool
pip install rembg[gpu,cli]
/etc/hosts
192.168.22.40 ict ict.huighaverlag.nl
192.168.22.190 pub.dev.huighaverlag.nl
Go to 'https://www.mono-project.com/' and follow the directions to install the Mono .NET framework.
Needs an installation of OpenOffice or LibreOffice.
Needs an installation of Poppler.
Needs an installation of Poppler.
Needs an installation of ImageMagick and MuPDF.
Needs an installation of Poppler.
Needs an installation of Mono, and uses the embedded query executable from pkg_sql_socket_connection (writtenin C# (Mono)).
Check and fetch a mounted mediabase volume.
See rembg.
Copies exif info from one image to another.
You can use something like this in your main() function to check beforehand if a service required by your program is available by providing one or more LocalService values:
try {
LocalServices.require([
LocalService.pdfToPng,
LocalService.pdfToText,
LocalService.pdfInfo,
LocalService.sqlQuery,
LocalService.htmlToSpreadsheet,
LocalService.mediabaseMount,
]);
} catch (e) {
//ignore : avoid_print
print(e);
}
If the requirements are satisfied, you can use the services like this (to convert the first page in a PDF file to PNG for example):
PdfToPngService().toPNG(
File(r'Schapkaarten_001.pdf').withParent(Directory(
[r'test', r'assets'].join(Platform.pathSeparator))),
pageIndex: 0,
)
pkg_xml_validator dependency.XmlValidatorService.argument error: Illegal number of colorants (indicates that the PDF file you're trying to process contains an invalid number of color components). Fallback to ImageMagick in this case (slower), otherwise your output file will be blank.png files (they support transparency).FontInfoService::getInfo results.FileToPreviewService, only first frame of gif files.FileToThumbnailService, only first frame of gif files.soffice tsv to xlsx/ods commandline options to force @text cells.CpuArchitectureService to determine the platform cpu type.postscriptname to FontInfo.BrewService (linuxbrew).mutools version to be 1.24.0, use imagemagick convert utility otherwise, due to wrong colors in the output files.BrewService to check for updated brew formulae.PdfInfo.fromJson then the json was empty.PdfInfo::toJson where PdfRects would not be serialized properly as json object.ImagesToMovieService to convert a folder of images to an mp4 movie.verbose and density to FileToPreviewService and FileToThumbnailService.PdfInfoService::getInfo 10 times faster by grouping the data on page number.PdfToJpgService::density.PdfToJpgService::useTrimbox.PdfToJpgService::verbose.PdfToPngService::density.PdfToPngService::useTrimbox.PdfToPngService::verbose.PdfCustomColorsService: extract custom colors from a pdf file.exif unit test.ExifService to copy exif info from one image to another.RemoveBackgroundService to remove backgrounds from images.PdfInfoService: removed PdfBox and replace it with pkg_core::PdfRect.PdfInfoService: added json serialization to PdfInfo.PdfInfoService: added option to only parse the first pdf page.prerequisites to README.md.FileToPreviewService and FileToThumbnailService are now sync.FontInfo family parsing.ImageInfoService.PdfInfoService now retrieves info of all pages and boxes (not just the first).FileToPreviewService and FileToThumbnailService now rely on pkg_mime_info to determine a file type.FileToPreviewService and FileToThumbnailService now only handle the first frame from video files.FileToPreviewService now has a page-count for the maximum number of pages to process.FileToPreviewService and FileToThumbnailService now make use of mupdf-tools because it is much faster dan imagemagick when converting pdf files.PdfBox.fromDimensions.FontInfoService.async constructs.FileToPreviewService now returns a list of files.FileToThumbnailService now returns a list of files.FileToPreviewService.PngOptimizeService.CHANGELOG.md: PdfToThumbnailService was meant to be FileToThumbnailService.PdfToThumbnailService.await unawaited futures.unawaited.outputName option to PdfToPng and PdfToJpg.forceOverwrite flag to PdfToPng and PdfToJpg.surface to PdfBox.SpreadsheetService now converts tsv files to ods or xlsx via proper soffice settings.toDimensionsInMm to `PdfBox'.HtmlToSpreadsheetService to `SpreadsheetService'.PdfToJpgService.MediabaseMountService.