Domanda:
Libreria di scansione .Net
Isaac Kleinman
2015-06-11 23:17:18 UTC
view on stackexchange narkive permalink

Sono stato assegnato a un progetto che prevede l'utilizzo di un'API di scansione dei documenti per ottenere i documenti dell'utente. L'applicazione sarà scritta in C # e avrà come destinazione il framework .NET in esecuzione sul desktop di Windows.

Da quello che ho raccolto, la scelta sensata è quella di utilizzare una libreria TWAIN. Tuttavia, non sono sicuro se utilizzare librerie open source come dotnettwain e (le più recenti) NTwain o opzioni commerciali come dynamsoft e Atalasoft.

Non mi interessa confrontare le funzionalità poiché è probabile che i miei requisiti siano molto semplici. La mia preoccupazione principale è il tempo dello sviluppatore e sono perplesso dal readme di Ntwain che afferma

Per usare correttamente questa libreria dovrai avere una ragionevole familiarità con le specifiche TWAIN e capire come funziona in generale

e

Non ci sono funzioni di alto livello, scansiona-una-pagina-per-me-adesso

D'altra parte, le soluzioni commerciali menzionate sembrano funzionare con le vecchie versioni delle specifiche TWAIN e non sembrano essere sviluppate molto attivamente.

Tre risposte:
Berto10
2017-01-31 03:47:46 UTC
view on stackexchange narkive permalink

Se stai cercando una libreria commerciale che offra scansioni di alto livello in PDF, ti consiglio di dare un'occhiata a LEADTOOLS TWAIN SDK. Questo SDK è compatibile con le versioni 1.X e 2.X di TWAIN. La scansione di un'immagine in PDF sarebbe semplice come segue:

  twnSession = new TwainSession (); twnSession.Startup (this.Handle, "", "", "", "", TwainStartupFlags.None); twnSession.SelectSource (string.Empty); twnSession.AcquirePage + = new EventHandler<TwainAcquirePageEventArgs> (twnSession_AcquirePage);  

Questo avvia una sessione di due e richiede un dialogo per scegliere il dispositivo di scansione (puoi specificare lo scanner a livello di programmazione se non vuoi una finestra di dialogo). Per ogni pagina scansionata e acquisisci viene attivato l'evento e in questo caso puoi salvarlo come file PDF.

Ecco un esempio di codice su come salvare l'immagine come PDF:

  private void twnSession_AcquirePage (object sender, TwainAcquirePageEventArgs e) {using (RasterCodecs codecs = new RasterCodecs ()) {codecs.Save (e.Image, @ "Test.PDF", RasterImageFormat.RasPdf, 0, 1, -1,1, CodecsSavePageMode.Append)}}  

Per favore note sono un dipendente di questo strumento.

Jogai
2015-07-14 12:24:22 UTC
view on stackexchange narkive permalink

Da una rapida occhiata ai prodotti, le librerie open source stanno cercando di implementare le specifiche twain mentre i prodotti commerciali consentono di chiamare il driver twain.

Quest'ultimo ti è più utile immagino. Ecco un progetto più aggiornato che supporta la specifica TWAIN 1.x / 2.x: https://sarafftwain.codeplex.com/

Asprise Support
2016-08-19 07:07:53 UTC
view on stackexchange narkive permalink

Le app a 64 bit accedono ai driver TWAIN a 32 bit

La parte difficile è che la maggior parte dei fornitori fornisce solo driver TWAIN a 32 bit. Se stai sviluppando applicazioni a 64 bit, considera di utilizzare Asprise SDK di scansione C # VB.NET che consente di accedere correttamente a scanner TWAIN da applicazioni x64 - Offre anche funzionalità come scansione di massa ADF su PDF multipagina e riconoscimento della lettura di codici a barre.

Non è necessario comprendere le specifiche TWAIN

Non mi interessa il confronto delle funzionalità poiché è probabile che i miei requisiti siano molto semplici. La mia preoccupazione principale è il tempo dello sviluppatore

Di seguito è riportato il codice effettivo per la selezione del dispositivo ed eseguire scansioni TWAIN e salvare in un file PDF multipagina:

  utilizzando asprise_imaging_api; Risultato risultato = new AspriseImaging (). Scan (new Request () .SetTwainCap (TwainConstants.ICAP_PIXELTYPE, TwainConstants.TWPT_RGB) .SetPromptScanMore (true) // richiede di eseguire la scansione di più pagine. .FORMAT_PDF) .SetSavePath (". \\ $ {TMS} $ {EXT}")), // Le variabili d'ambiente nel percorso verranno espanse "select", true, true); // "select" richiede la finestra di dialogo per la selezione del dispositivo. List<string> files = result == null? null: result.GetImageFiles (); Console.WriteLine ("Scanned:" + string.Join (",", files == null? new string [0]: files.ToArray ()));  

In alternativa, puoi utilizzare il DSL di scansione TWAIN di C # VB.NET:

  Result result = new AspriseImaging (). Scan ("{" + "\" twain_cap_setting \ ": {"+" \ "ICAP_PIXEXELTYPE \": \ "TWPT_RGB \" "+"}, "+" \ "prompt_scan_more \": true, "+" \ "output_settings \": [{"+" \ "type \" : \ "save \", "+" \ "format \": \ "pdf \", "+" \ "save_path \": \ ". \\\\ $ {TMS} $ {EXT} \" "+ "}]" + "}", "seleziona", true, true);  

Se decidi di creare la tua libreria, questo è un buon punto di partenza: github.com/tmyroadctfig/twaindotnet



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...