Wahid_NAPS2.Sdk
2.0.0
dotnet add package Wahid_NAPS2.Sdk --version 2.0.0
NuGet\Install-Package Wahid_NAPS2.Sdk -Version 2.0.0
<PackageReference Include="Wahid_NAPS2.Sdk" Version="2.0.0" />
paket add Wahid_NAPS2.Sdk --version 2.0.0
#r "nuget: Wahid_NAPS2.Sdk, 2.0.0"
// Install Wahid_NAPS2.Sdk as a Cake Addin #addin nuget:?package=Wahid_NAPS2.Sdk&version=2.0.0 // Install Wahid_NAPS2.Sdk as a Cake Tool #tool nuget:?package=Wahid_NAPS2.Sdk&version=2.0.0
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 | net is compatible. 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.Escl (>= 0.1.0-alpha05)
- NAPS2.Images (>= 0.1.0-alpha05)
- NAPS2.Internals (>= 0.1.0-alpha05)
- 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.Escl (>= 0.1.0-alpha05)
- NAPS2.Images (>= 0.1.0-alpha05)
- NAPS2.Internals (>= 0.1.0-alpha05)
- 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.Escl (>= 0.1.0-alpha05)
- NAPS2.Images (>= 0.1.0-alpha05)
- NAPS2.Images.Mac (>= 0.1.0-alpha05)
- NAPS2.Internals (>= 0.1.0-alpha05)
- 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.