From Lazarus wiki
Jump to navigationJump to search

English (en) español (es)


PascalSane provides pascal bindings for the libsane library, enabling Lazarus and FreePascal applications to access scanners under Linux.

Principal operations  :

  • list available scanners
  • list options for a specified scanner
  • set options for a scanner
  • capture scanner input in PNM format

The download contains the libsane bindings and a unit saneutils.pas which provides some simple functions for manipulating scanner data. It also contains a demonstration Lazarus application, which contains examples of operations that can be performed using libsane.


Malcolm Poole: mgpoole at


The libsane headers are in the public domain. The demo application is licensed under the GPL


The latest stable release can be found at

Change Log

  • Version 0.2 8 May 2011
- Added missing functions and bitwise enumerations
- corrected translation of constraint union in SANE_Option_Descriptor
- fixed a number of memory management issues in demo project
- added libsane test backend to demo project
  • Version 0.1 19 November 2008

Dependencies / System Requirements

  • Linux
  • libsane (libsane-dev for Ubuntu)


Documentation for the Sane API covers all the functions provided by the bindings. The C source code for scanimage and other simple scanning applications are recommended for guidance.

How to include PascalSane in a Lazarus application

  • add 'sane' to the uses statement
  • in the Project Options dialog, add the path to sane.pas in the Other Unit Files section.

The PascalSane Example Application

  • Open pascalsanedemo.lpi
  • set path to sane.pas in Project Options dialog
  • compile
  • run