示例#1
0
    internal ScannerContext(IScannerDevice device, ILogger?logger = null)
    {
        _device = device;
        _logger = logger;

        if (_logger is not null)
        {
            device.MonitorChanged += (sender, eventArgs) => _logger.Log(eventArgs.Data?.ToString() ?? "");
        }
    }
示例#2
0
    internal ScannerContext(IScannerDevice device, string outputDirectory)
    {
        _device          = device;
        _outputDirectory = outputDirectory;

        _device.NewScanEvent += (sender, eventArgs) =>
        {
            _imageProcessorPipeline?.Run(eventArgs.Picture !);
            Save(eventArgs.FileName !, eventArgs.Picture !);
        };
    }
示例#3
0
    public ScannerContext(IScannerDevice device, IScanStrategyResolver scanStrategyResolver, ScanStrategyName strategyName, ILogger <ScannerContext> logger)
    {
        _device = device;
        _logger = logger;
        _saver  = scanStrategyResolver.GetScanSaverByName(strategyName.Name ?? "");

        if (_logger is not null)
        {
            device.MonitorChanged += (sender, eventArgs) => _logger.LogInformation(eventArgs.Data?.ToString() ?? "");
        }
    }
示例#4
0
    public override void ScanAndSave(IScannerDevice device, string fileName)
    {
        if (Path.GetExtension(fileName).ToLower() != ".docx")
        {
            throw new IOException("Ошибка формата файла");
        }

        using var writer = new FileStream(fileName, FileMode.Create);
        var reader = device.Scan();
        var buffer = new byte[1024];
        int read   = 0;

        while ((read = reader.Read(buffer, 0, buffer.Length)) > 0)
        {
            writer.Write(buffer, 0, read);
        }
    }
示例#5
0
 private ScannerContextBuilder(IScannerDevice device, string outputDirectory) => (_device, _outputDirectory) = (device, outputDirectory);
示例#6
0
 private ScannerContextBuilder(IScannerDevice device) => _device = device;
示例#7
0
 public abstract void ScanAndSave(IScannerDevice device, string fileName);