NAPS2.Sdk
0.1.0-alpha03
Prefix Reserved
See the version list below for details.
dotnet add package NAPS2.Sdk --version 0.1.0-alpha03
NuGet\Install-Package NAPS2.Sdk -Version 0.1.0-alpha03
<PackageReference Include="NAPS2.Sdk" Version="0.1.0-alpha03" />
paket add NAPS2.Sdk --version 0.1.0-alpha03
#r "nuget: NAPS2.Sdk, 0.1.0-alpha03"
// Install NAPS2.Sdk as a Cake Addin #addin nuget:?package=NAPS2.Sdk&version=0.1.0-alpha03&prerelease // Install NAPS2.Sdk as a Cake Tool #tool nuget:?package=NAPS2.Sdk&version=0.1.0-alpha03&prerelease
NAPS2.Sdk
NAPS2.Sdk is a fully-featured scanning library, supporting WIA, TWAIN, SANE, and ESCL scanners on Windows, Mac, and Linux.
Packages
NAPS2.Sdk is modular, and depending on your needs you may have to reference a different set of packages.
Required Packages
- NAPS2.Sdk
- Contains core scanning functionality for all platforms.
- Exactly one of:
- NAPS2.Images.Gdi
- For working with
System.Drawing.Bitmap
images. (Windows Forms)
- For working with
- NAPS2.Images.Gtk
- For working with
Gdk.Pixbuf
images. (Linux)
- For working with
- NAPS2.Images.Mac
- For working with
AppKit.NSImage
images. (Mac)
- For working with
- NAPS2.Images.ImageSharp
- For working with
ImageSharp
images.
- For working with
- NAPS2.Images.Gdi
Optional Packages
- NAPS2.Sdk.Worker.Win32
- For scanning with TWAIN on Windows.
- NAPS2.Pdfium.Binaries
- For importing PDFs.
- NAPS2.Sane.Binaries
- For using SANE drivers on Mac. (Linux has them pre-installed, and Windows isn't supported.)
- NAPS2.Tesseract.Binaries
- For running OCR. (You can also use a separate Tesseract installation if you like.)
Usage
See the Samples for more examples and description.
// Set up
using var scanningContext = new ScanningContext(new GdiImageContext());
var controller = new ScanController(scanningContext);
// Query for available scanning devices
var devices = await controller.GetDeviceList();
// Set scanning options
var options = new ScanOptions
{
Device = devices.First(),
PaperSource = PaperSource.Feeder,
PageSize = PageSize.A4,
Dpi = 300
};
// Scan and save images
int i = 1;
await foreach (var image in controller.Scan(options))
{
image.Save($"page{i++}.jpg");
}
// Scan and save PDF
var images = await controller.Scan(options).ToListAsync();
var pdfExporter = new PdfExporter(scanningContext);
await pdfExporter.Export("doc.pdf", images);
Drivers
Windows | Mac | Linux | |
---|---|---|---|
WIA | X | ||
TWAIN | X | * | |
Apple | X | ||
SANE | X | X | |
ESCL | X | X | X |
WIA (Windows Image Acquisition) is a Microsoft technology for scanners (and cameras). Many scanners provide WIA drivers for Windows.
TWAIN is a cross-platform standard for image acquisition. Many scanners provide TWAIN drivers for Windows and/or Mac.
Apple's ImageCaptureCore provides access to TWAIN and ESCL scanners on Mac devices.
SANE is an open-source API and set of backends for various scanners. Primarily for Linux, supported devices use backends made by open-source contributors or the manufacturer themselves.
ESCL, also known as Apple AirScan, is a standard protocol for scanning over a network. Many modern scanners support ESCL, and as it's a network protocol, specific drivers aren't required. ESCL can also be used over a USB connection in some cases.
Choosing a Driver
Each platform has a default driver (WIA on Windows, Apple on Mac, and SANE on Linux). To use another driver, you only need to specify it:
var devices = await controller.GetDeviceList(Driver.Twain);
...
options.Driver = Driver.Twain;
Worker Processes
Using the TWAIN driver on Windows usually requires the calling process to be 32-bit. If you want to use TWAIN from a 64-bit process, NAPS2 provides a 32-bit worker process:
// Reference the NAPS2.Sdk.Worker.Win32 package and call this method
scanningContext.SetUpWin32Worker();
Contributing
Looking to contribute to NAPS2 or NAPS2.Sdk? Have a look at the wiki.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-macos10.15 is compatible. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Framework | net462 is compatible. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
-
.NETFramework 4.6.2
- GrpcDotNetNamedPipes (>= 2.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 6.0.3)
- Microsoft.Win32.Registry (>= 5.0.0)
- NAPS2.Images (>= 0.1.0-alpha03)
- NAPS2.Internals (>= 0.1.0-alpha03)
- NAPS2.Wia (>= 2.0.3)
- Nullable (>= 1.2.0)
- SharpZipLib (>= 1.3.3)
- SixLabors.Fonts (>= 1.0.0-beta18)
- System.Collections.Immutable (>= 6.0.0)
- System.Resources.Extensions (>= 6.0.0)
- System.Threading.Tasks.Dataflow (>= 6.0.0)
- ZXing.Net (>= 0.16.8)
-
net6.0
- GrpcDotNetNamedPipes (>= 2.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 6.0.3)
- Microsoft.Win32.Registry (>= 5.0.0)
- NAPS2.Images (>= 0.1.0-alpha03)
- NAPS2.Internals (>= 0.1.0-alpha03)
- NAPS2.Wia (>= 2.0.3)
- SharpZipLib (>= 1.3.3)
- SixLabors.Fonts (>= 1.0.0-beta18)
- System.Collections.Immutable (>= 6.0.0)
- System.Resources.Extensions (>= 6.0.0)
- System.Threading.Tasks.Dataflow (>= 6.0.0)
- ZXing.Net (>= 0.16.8)
-
net6.0-macos10.15
- GrpcDotNetNamedPipes (>= 2.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 6.0.3)
- NAPS2.Images (>= 0.1.0-alpha03)
- NAPS2.Images.Mac (>= 0.1.0-alpha03)
- NAPS2.Internals (>= 0.1.0-alpha03)
- SharpZipLib (>= 1.3.3)
- SixLabors.Fonts (>= 1.0.0-beta18)
- System.Collections.Immutable (>= 6.0.0)
- System.Resources.Extensions (>= 6.0.0)
- System.Runtime.InteropServices.NFloat.Internal (>= 6.0.1)
- System.Threading.Tasks.Dataflow (>= 6.0.0)
- ZXing.Net (>= 0.16.8)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.1.3 | 799 | 10/5/2024 |
1.1.2 | 1,284 | 8/17/2024 |
1.1.1 | 132 | 8/17/2024 |
1.1.0 | 212 | 8/11/2024 |
1.0.2 | 841 | 7/6/2024 |
1.0.1 | 13,303 | 4/14/2024 |
1.0.0 | 312 | 4/9/2024 |
0.6.0 | 1,211 | 3/11/2024 |
0.5.0 | 190 | 3/3/2024 |
0.4.0 | 140 | 3/1/2024 |
0.3.0 | 418 | 2/7/2024 |
0.2.3 | 262 | 1/15/2024 |
0.2.2 | 214 | 12/30/2023 |
0.2.1 | 150 | 12/30/2023 |
0.2.0 | 157 | 12/30/2023 |
0.1.0-alpha08 | 186 | 12/17/2023 |
0.1.0-alpha07 | 130 | 12/14/2023 |
0.1.0-alpha06 | 125 | 12/13/2023 |
0.1.0-alpha05 | 319 | 10/11/2023 |
0.1.0-alpha04 | 176 | 9/5/2023 |
0.1.0-alpha03 | 206 | 8/30/2023 |
0.1.0-alpha02 | 137 | 8/30/2023 |
0.1.0-alpha01 | 206 | 8/26/2023 |