private string Get_PDIScan_Error_Details(pdiscan_errors pdiscan_error) { try { string error_string = string.Empty; IntPtr short_description = Marshal.AllocHGlobal(256); IntPtr long_description = Marshal.AllocHGlobal(256); IntPtr extra_info = Marshal.AllocHGlobal(256); if (pdiscan_error != pdiscan_errors.PDISCAN_ERR_NONE) { PdiScanWrap.PdGetErrorShortDescription(scanning_handle, pdiscan_error, short_description); PdiScanWrap.PdGetErrorLongDescription(scanning_handle, pdiscan_error, long_description); PdiScanWrap.PdGetErrorExtraInfo(scanning_handle, extra_info); error_string = "Error Number: " + ((int)pdiscan_error).ToString() + "\n" + "Short Description: " + Marshal.PtrToStringAnsi(short_description) + "\n" + "Long Description: " + Marshal.PtrToStringAnsi(long_description) + "\n" + "Extra Info: " + Marshal.PtrToStringAnsi(extra_info) + "\n"; } Marshal.FreeHGlobal(short_description); Marshal.FreeHGlobal(long_description); Marshal.FreeHGlobal(extra_info); return(error_string); } catch (Exception ex) { Common.Utils.LogManager.Error("Get_PDIScan_Error_Details exception: " + ex.ToString()); return(string.Empty); } }
private void imprinter_string_callback(int PageNumber, IntPtr ImprinterString, IntPtr UserData) { try { Common.Utils.LogManager.Info("imprinter_string_callback"); IntPtr impstr = Marshal.StringToHGlobalAnsi("imprinttest we do\n word wrap"); PD_IMPRINT_SETUP setup = new PD_IMPRINT_SETUP(); setup.eBase = pd_imprinter_horizontal_offset_bases.PD_IMPRINTER_HORIZONTAL_OFFSET_BASE_LEADING_EDGE; setup.eDirection = pd_imprint_directions.PD_IMPRINT_DIRECTION_FORWARD; setup.eTextOrientation = pd_imprinter_text_orientations.PD_IMPRINTER_TEXT_ORIENTATION_90; setup.iOffset = 0; pdiscan_errors pdiscan_error = PdiScanWrap.PdImprintDocument(scanning_handle, pd_imprint_types.PD_IMPRINT_TYPE_TEXT, impstr, ref setup); } catch (Exception ex) { Common.Utils.LogManager.Error("imprinter_string_callback exception: " + ex.ToString()); } }
public bool Disconnect() { try { if (scanner_connected) { pdiscan_errors pdiscan_error = PdiScanWrap.PdDisconnectFromScanner(scanning_handle); // this command will make document stuck scanner_connected = false; return(true); } return(false); } catch (Exception ex) { Common.Utils.LogManager.Error("Disconnect exception: " + ex.ToString()); return(false); } }
/// <summary> /// /// </summary> /// <param name="documentScannerCallback">DocumentScannerCallback(string frontPath, string error)</param> public bool StartScanning(Action <string[], string> documentScannerCallback) { try { // If scanner is not initiated, run Connect() first if (!scanner_connected) { if (!Connect()) { Common.Utils.LogManager.Error("StartScanning.PdEnableFeeder failed"); return(false); } } _documentScannerCallback = documentScannerCallback; if (scanner_connected && !enablefeeder) { //MessageBox.Show("StartScanning"); pdiscan_errors pdiscan_error = PdiScanWrap.PdEnableFeeder(scanning_handle); if (pdiscan_error != pdiscan_errors.PDISCAN_ERR_NONE) { display_pdiscan_error(pdiscan_error); //MessageBox.Show("StartScanning.PdEnableFeeder failed"); return(false); } //MessageBox.Show("StartScanning.PdEnableFeeder OK"); enablefeeder = true; return(true); } return(false); } catch (Exception ex) { Common.Utils.LogManager.Error("StartScanning exception: " + ex.ToString()); return(false); } }
public void display_pdiscan_error(pdiscan_errors pdiscan_error) { string error_string; IntPtr short_description = Marshal.AllocHGlobal(256); IntPtr long_description = Marshal.AllocHGlobal(256); IntPtr extra_info = Marshal.AllocHGlobal(256); if (pdiscan_error != pdiscan_errors.PDISCAN_ERR_NONE) { PdiScanWrap.PdGetErrorShortDescription(scanning_handle, pdiscan_error, short_description); PdiScanWrap.PdGetErrorLongDescription(scanning_handle, pdiscan_error, long_description); PdiScanWrap.PdGetErrorExtraInfo(scanning_handle, extra_info); error_string = "Error Number: " + ((int)pdiscan_error).ToString() + "\n" + "Short Description: " + Marshal.PtrToStringAnsi(short_description) + "\n" + "Long Description: " + Marshal.PtrToStringAnsi(long_description) + "\n" + "Extra Info: " + Marshal.PtrToStringAnsi(extra_info) + "\n"; Common.Utils.LogManager.Error("display_pdiscan_error: " + error_string); } Marshal.FreeHGlobal(short_description); Marshal.FreeHGlobal(long_description); Marshal.FreeHGlobal(extra_info); }
private void scanning_error_callback(pdiscan_errors ScanningError, string ExtraInfo, IntPtr UserData) { Common.Utils.LogManager.Error("scanning_error_callback: " + ExtraInfo); }
//Callbacks occur on a different thread. In order to return to the main thread we must use delegates. public void page_end_callback(int PageNumber, IntPtr FrontSideDIB, IntPtr BackSideDIB, ref int AbortRequested, IntPtr UserData) { try { if (_documentScannerCallback != null) { Debug.Assert(FrontSideDIB != IntPtr.Zero); string curDir = Directory.GetCurrentDirectory(); // create directory if (!Directory.Exists(curDir + "\\Temp")) { Directory.CreateDirectory(curDir + "\\Temp"); } // set file path string frontPath = string.Empty; string backPath = string.Empty; string error = string.Empty; //Front if (FrontSideDIB != IntPtr.Zero) { frontPath = curDir + "\\Temp\\document_front" + DateTime.Now.ToString("yyyyMMddHHmmssFFF") + ".jpg"; pdiscan_errors retval = PdiScanWrap.PdSaveImageToDisk(FrontSideDIB, frontPath); if (retval == pdiscan_errors.PDISCAN_ERR_NONE) { // Scale image Image image = Image.FromFile(frontPath); Image newImage = Trinity.Common.CommonUtil.ScaleImage(image, 768, 1024); image.Dispose(); newImage.Save(frontPath, ImageFormat.Jpeg); newImage.Dispose(); } else { error = Get_PDIScan_Error_Details(retval); } } if (BackSideDIB != IntPtr.Zero) { //PdiScanWrap.PdSaveImageToDisk(BackSideDIB, curDir + "\\Temp\\document_back" + DateTime.Now.ToString("yyyyMMddHHmmssFFF") + ".jpg"); backPath = curDir + "\\Temp\\document_back" + DateTime.Now.ToString("yyyyMMddHHmmssFFF") + ".jpg"; pdiscan_errors retval = PdiScanWrap.PdSaveImageToDisk(BackSideDIB, backPath); if (retval == pdiscan_errors.PDISCAN_ERR_NONE) { // Scale image Image image = Image.FromFile(backPath); Image newImage = Trinity.Common.CommonUtil.ScaleImage(image, 768, 1024); image.Dispose(); newImage.Save(backPath, ImageFormat.Jpeg); newImage.Dispose(); } else { error = Get_PDIScan_Error_Details(retval); } } // callback _documentScannerCallback(new string[] { frontPath, backPath }, error); } } catch (Exception ex) { Common.Utils.LogManager.Error("page_end_callback exception: " + ex.ToString()); // callback _documentScannerCallback(new string[] {}, ex.Message); _documentScannerCallback = null; } }
public static extern void PdGetErrorLongDescription(IntPtr ScanningHandle, pdiscan_errors ErrorCode, IntPtr LongDescription);