未找到

未发布 ByteScout旗下产品更新合集丨附下载
by Harriet666 keys 分享 1490853095097
ByteScout
Bytescout公司主要为家庭和商业用户提供软件产品及为软件开发商(AactiveX和.NET SDK)提供开发工具。产品主要包含条形码、文档管理、音频视频以及文件格式转换等类型。

BarCode Reader SDK
一款支持多种图像格式、线型条码和二维条码的条码读取器开发包。
更新详情:BarCode Reader SDK 更新至v8.90.0.1651>>>
点击下载:最新版BarCode Reader SDK >>>

Bytescout PDF To HTML SDK
用于PDF转换HTML,并且不需要任何第三方软件支持。
更新详情:Bytescout PDF To HTML SDK更新至v8.3.0.2794>>>
点击下载:最新版Bytescout PDF To HTML SDK>>>

Spreadsheet SDK
无需MS Excel而只使用本地的.NET库来写、读、修改、计算电子表格的电子表格控件。
更新详情:Spreadsheet SDK更新至v2.8.1.1601>>>
点击下载:最新版Spreadsheet SDK>>>
BarCode Generator SDK
在Visual Basic 6、.NET WinForm和ASP.NET应用中生成和显示1D(线性)和2D条形码。

更新详情:BarCode Generator SDK更新至v4.57.0.925>>>
点击下载:最新版BarCode Generator SDK>>>
SWF To Video and Images SDK
一款可以将SWF与Flash电影转换为WMV/AVI视频的多功能工具包。

更新详情:SWF To Video and Images SDK更新至v2.13.1038>>>
点击下载:最新版SWF To Video and Images SDK>>>
Image To Video SDK
将图片转换为WMV、AVI视频并进行幻灯片播放,你还可以自定义设置2D、3D滚动效果。

更新详情:Image To Video SDK更新至v2.12.1038>>>
点击下载:最新版Image To Video SDK>>>
Screen Capturing SDK
一款具有屏幕录制功能的控件,你可以用它录制高质量的视频、音频。

更新详情:Screen Capturing SDK更新至v2.54.1044>>>
点击下载:最新版Screen Capturing SDK>>>
PDF Extractor SDK
一款可以转换PDF为txt、CSV、XML,从PDF文件中提取图像和信息的多功能工具包。

更新详情:PDF Extractor SDK更新至v8.3.0.2792>>>
点击下载:最新版PDF Extractor SDK>>>
未发布 ActiveX组件CADViewX v12发布,支持最新的AutoCAD®DWG 2018版本
by Harriet666 keys 分享 1497342612988
CADViewX一款能让应用程序具有强大CAD图像浏览和打印功能的图像处理工具,无需任何CAD软件或查看器即可打开、浏览、打印AutoCAD等几十种格式的图像文件,还能享受直观的鼠标滚轮缩放、拖拽、平铺印画功能。
 
【CADViewX 12最新版下载>>>】
 
CADViewX v12更新内容

CADViewX v12是用于导入和导出CAD文件的新版本的ActiveX组件。
现在,CADViewX Lite支持最新的DWG版本 - AutoCAD®DWG 2018。借助CADViewX Lite开发的应用程序将能够查看最新的图纸。
c971427152d14ce4b2f480de2dc696d5ojpg
要测试CADViewX Lite并将DWG 2018查看功能添加到应用程序中,请下载试用>>>
 
 

试用、下载、了解更多产品信息请点击"咨询在线客服"   
7
未发布 全面的.NET图像处理包DotImage v10.7.0.7发布丨附下载
by Harriet666 keys 分享 1491038264122
DotImage

Atalasoft DotImage 是一款功能完善的图像处理包,它主要针对.NET的开发。它为基于.Net框架开发的Windows应用程序以及基于IE的Asp.Net程序提供高级的图像处理功能。DotImage 提供了很多Microsoft .NET Framework一样的设计模式,并向开发者提供功能丰富,高性能,授权方式灵活的对象模式。 
最新版DotImage点击下载>>>
 
DotImage v10.7.0.7更新内容

v10.7.0.7中的修复的问题

  • [TiffDecoder]Customer图片会导致TiffDecoder出现SEHException异常。
  • [AdvancedDocClean] LineRemovalCommand在某些图像上会引起不可修复的System.AccessViolationException,从而破坏主机进程。
  • [AbbyyEngine] OcrTableRegion.Cells没有被填充。
  • WebDocumentViewer getDocumentInfo对removePage的调用不成功。

上一个版本中修复的问题

  • 在特定的PDF中使用修复功能会导致新版本出现异常。
  • [MVC] NuGet库中缺少Atalasoft.dotImage.WebControls.MVC(包括x86和x64)。
  • [WDV] Async方法可能会在浏览器页面刷新期间/之后引起控制台发生错误。
  • 使用PdfDocument.Save格式保存时,Multipage PDF页面会引用前几页的资源。
  • 保存PDF时,无效的PDF属性值会引起异常。
  • [PdfAnnotationDataExporter]使用OverwriteExistingAnnotations = true保存到特定图层时,会覆盖掉上一层。
  • PDF417条形码不可读取。
  • Customer DWG文件在DwgDecoder中呈现时丢失图像。
  • WebDocumentViewer会调用触发了ThreadAbortException的Response.End。
  • PdfDocument.Repair对于某些格式不正确的链接可能会删除而不是修复。
  • [PdfTextDocument]文本提取结果在某些文档上使用时会丢失内容。
  • 当SelectionMode = ThumbnailSelectionMode.MultiSelect时WinForms ThumbnailView / FolderThumbnailView SelectionIndexChanged会触发两次。
  • RawDecoder注册时,Customer file会引起System.AccessViolation异常。
  • [PdfGeneratedDocument] PdfTextLine会忽略通过构造函数传递的FillColor和OutlineColor值。
  • [PdfDocument]一些PDF文件在PdfDocument中打开时会发生StackOverflow问题。
  • [PdfDocument]使用PdfDocument / PdfAnnotationDataImporter打开一些PDF时会出现Overflow问题。
  • WebDocumentThumbnailer:当tabular:true set时,滚动条未正确更新。
  • 客户在Logger中报告的竞争条件/非线程安全行为。
  • “不支持Colourspace转换”的Customer tiffs无法打开。
  • 755266:WDV - 打开non-relative web根路径将导致WDV保存失败。
  • [PdfDocument]如果我们多次将新页面添加到文档时,Adobe Acrobat将无法读取pdf文件。
  • 只有页面可见时,WebDocumentViewer Rotate方法才会更新。
  • [OfficeDecoder]无论解码器分辨率如何设置,Office文件始终呈现默认的DPI(大多数系统上为96)。
  • [PdfEncoder]使用PdfCompressionMode.Segmented保存大文件(大量页面)会发生内存的问题。
  • [BarCodeReader] DataMatrix条形码读取速度非常慢
  • PdfCompressionMode.Segmented强制将灰度图像变为黑白,且这种行为没有记录。
  • PdfDocument打开/保存时Customer PDF被损坏。
  • [OfficeDecoder]部分office文件的表格标题中缺少内容。
  • 带有AnnotationStreamWritten事件的WDV 10.7中的行为发生变化。
  • 载入注释中的WDV regression。
  • [DotTwain] HP scanners DeviceEvent 会使device.State进入无效状态。
  • Barcoding.Reading.BarcodeReader没有读取到相应的客户代码。
  • 10.7 WDV更改会破坏WingScan-only的许可。
  • [PdfAnnotationDataExporter] EmbeddedImageAnnotation会增加目标PDF文件大小。
  • [BarCodeReader] - 在其他引擎中读取的PDF-417条形码的Customer images在BarCodeReader中无法读取。
  • [BarCodeReader]当前的BarCodeReader引擎无法读取旧的9.x(Inlite)引擎读取的条形码的全部内容。
  • [PdfDocument]Customer PDF会引起关于MLPdfLabColorSpace的PdfException异常。修复后提示成功,但所有内容也会丢失。
未发布 条码控件Dynamsoft Barcode Reader教程:从PDF417驾驶执照中提取数据
by Harriet666 keys 分享 1499929296192
根据AAMVA卡的设计标准,PDF417二维条码符号系统是符合驾驶执照/识别文件必须存在的最低强制性机读技术。条形码编码关于持卡人的关键信息,包括姓名、出生日期、性别、眼睛颜色、身高等等。
 
从驾驶执照中提取数据有两种方法。我们可以使用OCR技术识别ID上打印的字符。或者,我们可以使用条形码识别技术对PDF417符号系统进行解码,然后将其解析为可读的格式。一般来说,后者比前者更准确,性价比更高。
 
本文将讨论如何使用Dynamsoft Barcode Reader SDK从驾驶执照中提取文本。
 
Dynamsoft Barcode Reader最新版下载>>>

在线演示

要了解这是如何进行的,你可以尝试在线演示 - 查看驾驶执照的PDF417条码
 
请注意,此演示还提供文档扫描,由Dynamsoft Web TWAIN SDK提供支持。

如何从PDF417驾驶执照中提取数据

步骤1.检测并解码PDF417代码
var barcodeImage = DWObject.GetImageURL(index, -1, -1);
dbrObject.readURLAsync(barcodeImage,
    index,
    GetBarcodeInfo,
    OnBarcodeReadFailure);
function OnBarcodeReadFailure(sImageIndex, errorCode, errorString) {
    console.log(errorString);
}
function GetBarcodeInfo(sImageIndex, result) {//This is the function called when barcode is read successfully
    //Retrieve barcode details
    var count = result.getCount();
    if (count == 0) {
        alert("The barcode for the selected format is not found.");
        return;
    } else {
        for (i = 0; i < count; i++) {
            Barcode_text = result.get(i).text;
            var x = result.get(i).x1;
            var y = result.get(i).y1;
            var format = result.get(i).formatString;
            var barcodeText = ("barcode[" + (i + 1) + "]: " + "\n" + Barcode_text + "\n");
            extractInformation();
        }
    }
}
 
步骤2.将其解析成可读的格式
driverLicenseFields = [
        { 'abbreviation': 'DAA', 'description': 'Full Name' }
        , { 'abbreviation': 'DAB', 'description': 'Last Name' }
        , { 'abbreviation': 'DAB', 'description': 'Family Name' }
        , { 'abbreviation': 'DAC', 'description': 'First Name' }
        , { 'abbreviation': 'DAC', 'description': 'Given Name' }
        , { 'abbreviation': 'DAD', 'description': 'Middle Name or Initial' }
        , { 'abbreviation': 'DAD', 'description': 'Middle Name' }
        , { 'abbreviation': 'DAE', 'description': 'Name Suffix' }
        , { 'abbreviation': 'DAF', 'description': 'Name Prefix' }
        , { 'abbreviation': 'DAG', 'description': 'Mailing Street Address1' }
        , { 'abbreviation': 'DAH', 'description': 'Mailing Street Address2' }
        , { 'abbreviation': 'DAI', 'description': 'Mailing City' }
        , { 'abbreviation': 'DAJ', 'description': 'Mailing Jurisdiction Code' }
        , { 'abbreviation': 'DAK', 'description': 'Mailing Postal Code' }
        , { 'abbreviation': 'DAL', 'description': 'Residence Street Address1' }
        , { 'abbreviation': 'DAM', 'description': 'Residence Street Address2' }
        , { 'abbreviation': 'DAN', 'description': 'Residence City' }
        , { 'abbreviation': 'DAO', 'description': 'Residence Jurisdiction Code' }
        , { 'abbreviation': 'DAP', 'description': 'Residence Postal Code' }
        , { 'abbreviation': 'DAQ', 'description': 'License or ID Number' }
        , { 'abbreviation': 'DAR', 'description': 'License Classification Code' }
        , { 'abbreviation': 'DAS', 'description': 'License Restriction Code' }
        , { 'abbreviation': 'DAT', 'description': 'License Endorsements Code' }
        , { 'abbreviation': 'DAU', 'description': 'Height in FT_IN' }
        , { 'abbreviation': 'DAV', 'description': 'Height in CM' }
        , { 'abbreviation': 'DAW', 'description': 'Weight in LBS' }
        , { 'abbreviation': 'DAX', 'description': 'Weight in KG' }
        , { 'abbreviation': 'DAY', 'description': 'Eye Color' }
        , { 'abbreviation': 'DAZ', 'description': 'Hair Color' }
        , { 'abbreviation': 'DBA', 'description': 'License Expiration Date' }
        , { 'abbreviation': 'DBB', 'description': 'Date of Birth' }
        , { 'abbreviation': 'DBC', 'description': 'Sex' }
        , { 'abbreviation': 'DBD', 'description': 'License or ID Document Issue Date' }
        , { 'abbreviation': 'DBE', 'description': 'Issue Timestamp' }
        , { 'abbreviation': 'DBF', 'description': 'Number of Duplicates' }
        , { 'abbreviation': 'DBG', 'description': 'Medical Indicator Codes' }
        , { 'abbreviation': 'DBH', 'description': 'Organ Donor' }
        , { 'abbreviation': 'DBI', 'description': 'Non-Resident Indicator' }
        , { 'abbreviation': 'DBJ', 'description': 'Unique Customer Identifier' }
        , { 'abbreviation': 'DBK', 'description': 'Social Security Number' }
        , { 'abbreviation': 'DBL', 'description': 'Date Of Birth' }
        , { 'abbreviation': 'DBM', 'description': 'Social Security Number' }
        , { 'abbreviation': 'DBN', 'description': 'Full Name' }
        , { 'abbreviation': 'DBO', 'description': 'Last Name' }
        , { 'abbreviation': 'DBO', 'description': 'Family Name' }
        , { 'abbreviation': 'DBP', 'description': 'First Name' }
        , { 'abbreviation': 'DBP', 'description': 'Given Name' }
        , { 'abbreviation': 'DBQ', 'description': 'Middle Name' }
        , { 'abbreviation': 'DBQ', 'description': 'Middle Name or Initial' }
        , { 'abbreviation': 'DBR', 'description': 'Suffix' }
        , { 'abbreviation': 'DBS', 'description': 'Prefix' }
        , { 'abbreviation': 'DCA', 'description': 'Virginia Specific Class' }
        , { 'abbreviation': 'DCB', 'description': 'Virginia Specific Restrictions' }
        , { 'abbreviation': 'DCD', 'description': 'Virginia Specific Endorsements' }
        , { 'abbreviation': 'DCE', 'description': 'Physical Description Weight Range' }
        , { 'abbreviation': 'DCF', 'description': 'Document Discriminator' }
        , { 'abbreviation': 'DCG', 'description': 'Country territory of issuance' }
        , { 'abbreviation': 'DCH', 'description': 'Federal Commercial Vehicle Codes' }
        , { 'abbreviation': 'DCI', 'description': 'Place of birth' }
        , { 'abbreviation': 'DCJ', 'description': 'Audit information' }
        , { 'abbreviation': 'DCK', 'description': 'Inventory Control Number' }
        , { 'abbreviation': 'DCL', 'description': 'Race Ethnicity' }
        , { 'abbreviation': 'DCM', 'description': 'Standard vehicle classification' }
        , { 'abbreviation': 'DCN', 'description': 'Standard endorsement code' }
        , { 'abbreviation': 'DCO', 'description': 'Standard restriction code' }
        , { 'abbreviation': 'DCP', 'description': 'Jurisdiction specific vehicle classification description' }
        , { 'abbreviation': 'DCQ', 'description': 'Jurisdiction-specific' }
        , { 'abbreviation': 'DCR', 'description': 'Jurisdiction specific restriction code description' }
        , { 'abbreviation': 'DCS', 'description': 'Family Name' }
        , { 'abbreviation': 'DCS', 'description': 'Last Name' }
        , { 'abbreviation': 'DCT', 'description': 'Given Name' }
        , { 'abbreviation': 'DCT', 'description': 'First Name' }
        , { 'abbreviation': 'DCU', 'description': 'Suffix' }
        , { 'abbreviation': 'DDA', 'description': 'Compliance Type' }
        , { 'abbreviation': 'DDB', 'description': 'Card Revision Date' }
        , { 'abbreviation': 'DDC', 'description': 'HazMat Endorsement Expiry Date' }
        , { 'abbreviation': 'DDD', 'description': 'Limited Duration Document Indicator' }
        , { 'abbreviation': 'DDE', 'description': 'Family Name Truncation' }
        , { 'abbreviation': 'DDF', 'description': 'First Names Truncation' }
        , { 'abbreviation': 'DDG', 'description': 'Middle Names Truncation' }
        , { 'abbreviation': 'DDH', 'description': 'Under 18 Until' }
        , { 'abbreviation': 'DDI', 'description': 'Under 19 Until' }
        , { 'abbreviation': 'DDJ', 'description': 'Under 21 Until' }
        , { 'abbreviation': 'DDK', 'description': 'Organ Donor Indicator' }
        , { 'abbreviation': 'DDL', 'description': 'Veteran Indicator' }
        , { 'abbreviation': 'PAA', 'description': 'Permit Classification Code' }
        , { 'abbreviation': 'PAB', 'description': 'Permit Expiration Date' }
        , { 'abbreviation': 'PAC', 'description': 'Permit Identifier' }
        , { 'abbreviation': 'PAD', 'description': 'Permit IssueDate' }
        , { 'abbreviation': 'PAE', 'description': 'Permit Restriction Code' }
        , { 'abbreviation': 'PAF', 'description': 'Permit Endorsement Code' }
        , { 'abbreviation': 'ZVA', 'description': 'Court Restriction Code' }
    ]
未发布 jQuery JavaScript的综合性UI组件库jQWidgets更新至v5.0.0丨附下载
by Harriet666 keys 分享 1502444658573
jQWidgets是一个基于jQuery JavaScript的综合性和创新性的HTML5 UI组件库,旨在帮助开发者创建专业、跨平台的Web应用程序,并最大限度的节省开发时间。jQWidgets包含30多种UI组件,是最快的JavaScript UI框架之一。

【最新版jQWidgets v5.0.0点击下载>>>】

jQWidgets v5.0.0更新内容:
新增:
  • 自定义元素
修复:
  • 修复了jqxTooltip中关于open方法与refresh方法相结合的问题。CSS类被多次添加。
  • 修复了jqxDataTable中有关确保行可见键的问题。
  • 修复了jqxButtonGroup中关于百分比大小的问题。
  • 修复了jqxButton中当定义图像时关于动态设置值属性的问题。
  • 修复了jqxDropDownList中关于UL列表初始化的的问题。
  • 修复了jqxMenu中关于closeItem方法行为的问题。

未发布 MailBee.NET Objects退回邮件教程(二):POP3部分
by Harriet666 keys 分享 1503567760428
MailBee.NET Objects是一款为创建、发送、接收以及处理电子邮件而设计的健壮、功能丰富的.NET控件。几行代码便可为应用程序添加E-Mail支持,
简单高效。具备“必需”以及独特的功能,这些控件帮助开发人员简单快速地将复杂的电子邮件功能添加到他们的应用程序中。

MailBee.NET Objects介绍和试用点击查看>>>
 
 
本文主要介绍了SMTP服务器退回邮件的代码示例。目前MailBee.NET Objects在线订购享75折优惠正在进行中,欢迎您下载试用版进行运用!
 
在上期的SMTP部分中,我们将退回的电子邮件发送到指定的单个电子邮件地址。
 
每封退回的电子邮件都包含失败的电子邮件地址(以及其他信息)。这个失败的地址是我们想知道的。这个任务看起来很简单 - 你需要做的是扫描退回的
邮件以确定地址的典型字段。但是有一个隐藏的危险:每个邮件服务器都有自己的邮件退回格式。虽然它们几乎具有相同的“From”和“主题”字段,但是退回地址可以在邮件的任何位置。MailEnable服务器的典型退回邮件如下所示:
From: POSTMASTER@domain.com
To: jdoe@domain.com
Subject: Message Delivery Failure

MailEnable: Message Delivery Failure.

The following recipient(s) could not be reached: 

Recipient: [SMTP: bill@domain.com] Reason: The message could not be delivered because the domain name (domain.com) does not appear 

to be registered.

函数GetInvalidEmailAddressME()检查邮件是否被退回,并从退回的邮件中提取失败的地址。由于退回邮件格式不同,此功能仅对MailEnable服务器有效。例如,如果你正在使用Communigate Pro服务器,则退回消息如下所示:
From: MAILER-DAEMON@domain.local
To: jdoe@localhost Subject:
Undeliverable mail:

Failed to deliver to ''
 
正如你所看到的,这个退回的邮件与前一个几乎相同。使用哪个服务器并不重要,退回信息总是有From,To和Subject字段,退回信息在其正文中有失败的地址。函数GetInvalidEmailAddressCP()与前一个函数几乎相同; 区别仅在于检查邮件字段并搜索失败的地址。支持尽可能多的退回电子邮件格式至关重要。这就是为什么你需要修改GetInvalidEmailAddress()函数,以适应服务器使用的退回电子邮件格式。
 
注意:在某些情况下,你可能需要扫描退回的电子邮件以获取其他信息。如果由于暂时的问题,退回的邮件到达,则不要删除电子邮件地址:邮箱超过配
额,邮件服务器关闭等。退回邮件可以分为两种类型:硬邮件和软邮件。如果是不存在的帐户或域,则会发生硬性退回。其他故障,如完整的邮箱或暂时
不可用的域,则是软性退回。你可以为数据库中的每个地址进行计算。也许下一次尝试发送邮件到具有一些软性退回的地址时将成功。
 
代码示例:
在此示例中,我们从指定的帐户中检索退回的电子邮件,然后从每个退回的电子邮件中提取失败的电子邮件地址。失败的地址传递给RemoveEmailFromDatabase子程序,该子程序必须从数据库中删除失败的地址。应用程序还会从服务器中删除退回的电子邮件,以避免下次处理。
C#:
// Create POP3 object
Pop3 pop = new Pop3();

// Enable logging to file
pop.Log.Enabled = true;
pop.Log.Filename = @"C:\log.txt";
pop.Log.Clear();

// Connect to POP3 server
pop.Connect("mail.domain.com");
pop.Login("bounce", "secret");

// Download headers and bodies of all messages.
MailMessageCollection msgs = pop.DownloadMessageHeaders(1, -1, -1);
                        
// Loop through all messages in the mailbox
foreach (MailMessage msg in msgs)
{
        string strLine = msg.BodyPlainText;
        Console.WriteLine("From: " + msg.From.Email);
                                
        // Get failed email address
        string str_invalid_email =  GetInvalidEmailAddressME(msg);

        // If str_invalid_email is non-empty then failed email 
        // address was found
        if (str_invalid_email.Length > 0)
        {
                // Remove failed email from database
                RemoveEmailFromDatabase(str_invalid_email);

                // Display invalid adress
                Console.WriteLine("Invalid email: " + str_invalid_email);                

                // Delete bounced email from server to avoid
                // processing it next time
                pop.DeleteMessage(msg.IndexOnServer);
        }
}

// Disconnect from POP3 server
pop.Disconnect();

// The function checks whether the message is bounced and extracts 
// failed address 
// from bounced message. Valid only for MailEnable servers
static string  GetInvalidEmailAddressME(MailMessage msg)
{
        string str_invalid_email = msg.BodyPlainText;

        // Check if this is a bounced message report
        if (msg.Subject.IndexOf("Delivery Failure") == -1)
{ 
                return "";
        }
        if (msg.From.ToString().IndexOf("POSTMASTER") == -1)
        {
                return "";
        }

        // Now we're sure this is a bounced message report
        int i_start;
        i_start = str_invalid_email.IndexOf("SMTP:");

        // Check if bounced message report contains "Recipient:" field
        if (i_start == -1)
        {
                return "";
        }
                        
        // Get failed address
        i_start += 5;
        i_end = str_invalid_email.IndexOf("]",i_start);
        str_invalid_email.Substring(i_start, i_end);
                        
        return str_invalid_email;
}

// The function checks whether the message is bounced and extracts 
// failed address 
// from bounced message. Valid only for Communigate Pro servers
static string  GetInvalidEmailAddressCP(MailMessage msg)
{
string str_invalid_email = msg.BodyPlainText;

        // Check if this is a bounced message report
        if (msg.Subject.IndexOf("Undeliverable mail") == -1) 
        {
                return "";
        }
        if (msg.From.ToString().IndexOf("MAILER-DAEMON") == -1) 
        {
                return "";
        }

        // Now we're sure this is a bounced message report
        int i_start;
        i_start = str_invalid_email.IndexOf("to '<");

        // Check if bounced message report contains 
        // "Failed to deliver to " field
        if (i_start == -1)
        { 
                return "";
        }
                        
        // Get failed address
        i_start += 5;
        i_end = str_invalid_email.IndexOf("]",i_start);
        str_invalid_email.Substring(i_start, i_end);
                        
        return str_invalid_email;
}

// This function must remove (or disable) specified
// email address from mailing list
static void RemoveEmailFromDatabase(string str_invalid_email)
{
// TODO: Add your code here                        
}
 
VB.NET:
Dim pop As New Pop3

' Enable logging to file
pop.Log.Enabled = True
pop.Log.Filename = "C:\log.txt"
pop.Log.Clear()

' Connect to POP3 server
pop.Connect("mail.domain.com")
pop.Login("jdoe", "secret")

' Download headers and bodies for all messages.
Dim msgs As MailMessageCollection = pop.DownloadMessageHeaders(1, -1, -1)

' Loop through all messages in the mailbox
Dim msg As MailMessage
For Each msg In msgs
        Dim strLine As String = msg.BodyPlainText
        Console.WriteLine("From: " + msg.From.Email)

        ' Get failed email address
        Dim str_invalid_email As String = GetInvalidEmailAddressME(msg)

        ' If str_invalid_email is non-empty then failed email 
        ' address was found
        If str_invalid_email.Length > 0 Then
                'Remove failed email from database
                RemoveEmailFromDatabase(str_invalid_email)

                ' Display invalid address
                Console.WriteLine("Invalid email: " & str_invalid_email)

                ' Delete bounced email from server to avoid
                ' processing it next time
                pop.DeleteMessage(msg.IndexOnServer)
        End If
Next
Console.ReadLine()

' Disconnect from POP3 server
pop.Disconnect()

' The function checks whether the message is bounced and extracts 
' failed address 
' from bounced message. Valid only for MailEnable servers
Function GetInvalidEmailAddressME(ByVal msg As MailMessage) As String
        Dim str_invalid_email As String = msg.BodyPlainText

        ' Check if this is a bounced message report
        If msg.Subject.IndexOf("Delivery Failure") = -1 Then
                Return ""
        End If
        If msg.From.ToString().IndexOf("POSTMASTER") = -1 Then
                Return ""
        End If

        ' Now we're sure this is a bounced message report
        Dim i_start As Integer, i_end As Integer
        i_start = str_invalid_email.IndexOf("SMTP:")

        ' Check if bounced message report contains "Recipient:" field
        If i_start = -1 Then
                Return ""
        End If

        ' Get failed address
        i_start += 5
        i_end = str_invalid_email.IndexOf("]", i_start)
        str_invalid_email.Substring(i_start, i_end)

        Return str_invalid_email
End Function

' The function checks whether the message is bounced and extracts 
' failed address 
' from bounced message. Valid only for Communigate Pro servers
Function GetInvalidEmailAddressCP(ByVal msg As MailMessage) As String
        Dim str_invalid_email As String = msg.BodyPlainText

        ' Check if this is a bounced message report
        If msg.Subject.IndexOf("Undeliverable mail") = -1 Then
                Return ""
        End If
        If msg.From.ToString().IndexOf("MAILER-DAEMON") = -1 Then
                Return ""
        End If

        ' Now we're sure this is a bounced message report
        Dim i_start As Integer, i_end As Integer
        i_start = str_invalid_email.IndexOf("to '<")

        ' Check if bounced message report contains 
        ' "Failed to deliver to " field
        If i_start = -1 Then
                Return ""
        End If

        ' Get failed address
        i_start += 5
        i_end = str_invalid_email.IndexOf("]", i_start)
        str_invalid_email.Substring(i_start, i_end)

        Return str_invalid_email
End Function

' This function must remove (or disable) specified
' email address from mailing list
Sub RemoveEmailFromDatabase(ByVal str_invalid_email As String)
        ' TODO: Add your code here                        
End Sub
未发布 .Net文档图像处理工具包GdPicture.NET发布v14.0.25,提升1D条形码引擎
by Harriet666 keys 分享 1510565126468
GdPicture.NET是一款功能全面且可无限分发的文档图像处理工具包,开发者可将其作为.NET组件运用在他们的C#, VB.NET和CodeGear应用程序中,从而实现文档生成,显示,获取,编辑和打印等功能。
在您的程序中使用GdPicture.NET,可实现文档显示,获取TWAIN扫描图像,进行图像处理,执行光学字符识别操作,其涵盖了所有主流领域的其他文件成像技术。
 
GdPicture.NET v14最新版下载>>>
GdPicture.NETv14.0.25更新内容:
  • 提高了1D条形码引擎的准确性和速度。
  • 改进了颜色检测引擎的准确性。
  • 使用type 3字体改进PDF渲染。
  • 改进TWAIN采集。
  • 根据屏幕比例改进GdViewer(WinForm)渲染和行为。
  • 改进PDF解析器,更好地处理一些损坏的数据。
  • DocuVieware:新属性EnableDocumentsDrop()。
  • DocuVieware:新的JavaScript函数RegisterOnFullscreenModeChanged()。

2017慧都十四周年狂欢搞事情!砸金蛋100%抽现金红包、满额豪送iPhone X、iPhone 8、DevExpress汉化免费送、团队升级培训套包劲省10万元......更多惊喜等您来探索!

未发布 3D造型引擎3D ACIS Modeling 发布2018.1.0版本
by Harriet666 keys 分享 1511947459181
3D ACIS® Modeler (ACIS) 是 Spatial 久负盛名的 3D 造型引擎,为超过 350 种客户应用程序所采用,全球应用量超过 150 万套。ACIS 采用面向对象的开放 C++ 架构,拥有强大的 3D 造型能力。ACIS 集成了线框、曲面和实体造型的功能,支持流形和非流形拓扑,具备非常丰富的几何运算集,因此非常适用于构建具有混合造型功能的 3D 应用程序。
 
ACIS不仅具备非常完善的 3D 造型功能,而且灵活性强,可满足各种应用程序要求。此外,3D Modeling 的 ACIS 扩展功能还能满足特定的应用需求,其中包括隐藏线去除、可变形造型、高级遮盖和特征去除。
 
3D ACIS Modeler 2018.1.0更新内容:
通过先进的测试方法,Spatial在此版本中继续专注于稳定性和可靠性。我们还在模型稳定性方面做了一些改进:
  • 新的Boolean方法改进了200多个案例。
  • 高级Remove Faces算法解决了几种新的几何排列类型。

试用、下载、了解更多产品信息请点击"咨询在线客服"   

未发布 【示例教程】如何使用LEADTOOLS 的JAVA接口从护照中识别和提取数据
by Harriet666 keys 分享 1510647780810
LEADTOOLS可帮您开发出功能强大的文档图像应用程序。其主要功能包括综合图像注释,专业的黑白图像显示(例如灰度级和偏黑),以及专业的黑白图像处理。其它功能包括对黑白图像的性能和内存进行优化,文档图像清理(包括倒置文本,去边界,去打孔机和去线)以及使用LEADTOOLS Fast TWAIN和WIA进行扫描。
 
本教程会发布一个java代码片段,你可以用它读一本护照提取其中的数据。记住,为了获得最精确的结果,你需要有一个清晰的图像,这样引擎在这个过程中才能获得精确的结果。
// Set your license
RasterSupport.setLicense(licenseFile, developerKey);

try{
    if(RasterSupport.getKernelExpired()) {
    System.out.println("License NOT Set Successfully");
    }
    else {
    System.out.println("License Set Successfully");
    }

RasterCodecs rasterCodecs = new RasterCodecs();
MRTDReader mrtdReader = new MRTDReader();
String stream = "PASSPORT_IMAGE.jpg";

RasterImage rasterImage = rasterCodecs.load(stream);

OcrEngine ocrEngine = OcrEngineManager.createEngine(OcrEngineType.ADVANTAGE);
ocrEngine.startup(rasterCodecs, null, null, null);

        
mrtdReader.setOcrEngine(ocrEngine);
mrtdReader.processImage(rasterImage);        
mrtdReader.setImproveResults(true);
HashMap ar = new HashMap<>();
ar = mrtdReader.getResults();

String[] string = mrtdReader.getLines();
        
for (String string2 : string) {
    System.out.println(string2);
}
                
for (Map.Entry map : ar.entrySet()) {
MRTDField key = map.getKey();
System.out.println(key);
MRTDDataElement value = map.getValue();
System.out.println(value.getReadableValue());
}
        
ocrEngine.shutdown();
}
catch(Exception e)
{
    e.printStackTrace();
    throw new Exception(e);
}
被识别的护照如下:
 
最终输出的结果如下:

2017慧都十四周年狂欢搞事情!砸金蛋100%抽现金红包、满额豪送iPhone X、iPhone 8、DevExpress汉化免费送、团队升级培训套包劲省10万元......更多惊喜等您来探索!

未发布 今年最新的30个Android库,你了解吗?
by Harriet666 keys 分享 1508476743851


Android开发技术越来越成熟,Android开发工具当然也层出叠现。本文就向大家介绍今年最新的深受开发者喜爱的30个Android库。希望对你的Android开发工作能起到助力。

1.MaterialStepperView

它是用Material Design实现Steppers的。
 
目前,Stepper只有垂直视图,但将来会有更多的风格。你可以尝试一下,如下图:
你可以自定义normal/active两个状态的颜色,完成图标,开启动画并设置动画时长。可通过Github上的设置项和样式查阅所有设置项。该库支持API 17+,详情请查阅wiki文档。
 

2. MultiSnapRecyclerView

这是分屏滚动的Android库。
MultiSnapRecyclerView为RecyclerView提供了分屏功能。
 
目前提供的功能有:
  • start, end和center三个位置的吸附, 
  • snap count 指定要分屏的数量, 
  • 支持水平和垂直分屏, 
  • 滚动时的回调。 


3. Garland View for Android

该库可实现如下的布局:
 
GarlandView 外部是一个水平滚动的视图,视图内的每一个子视图可垂直滚动。
你可以在README中找到其他重要信息。还有一个示例App。该库支持API 19及更高版本。


4. VegaLayoutManager

这是一个自定义的布局管理器——滚动时缩小并淡出头部。这是受到Dribble项目的启发。
 

5. ExpandableLayout

这个库的名字不言而喻,它是一个基于LinearLayout的可扩展的布局。
README里含有你启动时需要的所有信息,另外,还有一个示例App可以帮助你快速跳转到代码中。


6. SwipeBackLayout

SwipeBackLayout允许你使用手势返回上一个界面。
你可以设置滑动方向,如从左到右、从右到左、从顶部到底部、从底部到顶部。
你还可以设置是否只能从边缘滑动。

SwipeBackLayout只能包含一个子布局,例如:
  • LinearLayout,RelativeLayout,FrameLayout,TableLayout等。
  • ScrollView,HorizontalScrollView,NestedScrollView等。
  • RecyclerView,AbsListView(ListView)等子类。
  • ViewPager,WebView等。
该项目里面有一个详细说明的文档、示例APP和一个APK。


7. SmartCropper

这是一个可以智能剪裁图像的库,可以识别边框并修正裁剪后的图像,适用于身份证、名片、文件等其他图片文件的裁剪。

 
特征:
  • 以智能的方式裁剪图片,还可以识别边框;
  • 支持拖动、放大效果以提升定位体验;
  • 使用透视变换裁剪,可以修正先前裁剪的图片;
  • 支持多种UI设置,如辅助线、蒙版、设置锚点、放大等效果。
目前,此库采用优化点算法,CropImageView具有选择放大效果,而且它可以使用CropImageView XML来进行设置。


8. Date Range Picker

Date Range Picker是具有改进UI的自定义日期范围选择器。

项目的简介写得很好,易于理解。


9. StoriesProgressView

我们都知道Facebook和Instagram展现在他们App上的Stories ,这是介绍StoriesProgressView的一个库,它可以扩展LinearLayout和允许你添加以下视图。
 
该项目包含一个简短但详细的README以及示例App。


10. CosmoCalendar

这是一个可以自定义日历的库,它可以提供很多功能和UI设置,例如:
  • 改变日历方向;
  • 自定义文本颜色;
  • 设置类型和颜色;
  • 定义导航按钮等;
  • 还有很多其他功能;

 

11. Reflow Text Animator

相信大家都听过Plaid app,这是由Shazam工程团队开发的。
它是Plaid’s ReflowText的端口,无论它们的大小或风格怎样,都可以轻松地在同级的TextView之间进行转换。
这个库很容易使用,快去试试吧!
 

12. AdaptiveIconPlayground

这不是一个库,而是由Nick Butcher开发的用于试验自适应图标的AndroidApp。根据README:
此应用程序可以从已安装的App中查找支持自适应图标的App,并将其显示在网格中,然后你可以切换不同的蒙版形状以匹配不同设备的显示效果。
目前提供两种视觉效果:
  • 滚动效果;
  • 触摸时的尺寸缩放视差效果;
 

13.Tivi

Tivi是跟踪电视节目的App,它与Track.tv相连接,它的开发者是Chris Banes,虽然这项开发工作仍在进行中,但它使用的都是最前沿的组件、库和工具,其中包括Kotlin、RxJava 2、所有架构组件(Room,LiveData和Lifecycle-components)。


14.RxIdler

这是Espresso的IdlingResource
它的开发者是 Square Engineering
它支持RxJava 1 和 RxJava 2,祝你用得愉快!


15.MRichEditor

这是一个丰富的文本编辑器(基于summernote)。
它支持多种功能,包括粗体、斜体、下划线、快捷键、标题(包括六级标题)、段落、引用,有(无)序列表、代码、水平规则、链接、图像,对齐方式(居中、两端对齐、左对齐、右对齐)、下标、上标、字体名称和大小、缩进、减少缩进、撤消/还原。

在这种情况下,你需要仔细观察示例App,因为它几乎没有文档供你参考。


16.Android Clean Architecture Boilerplate

Buffer团队和Joe Birch开发的示例App展示了一种Android应用程序的干净架构。
创建此样板的原因:
实验模块化;
分享一些干净架构实现方式;
一开始采用干净架构能应对未来复杂的项目需求。
该项目的UI和单元测试都是用Kotlin编写。
它的文档里有详尽的介绍,非常适合想学习的开发者,力荐!


17.RxJava2Debug

使用过RxJava会发现有时很难读取异常,很难在Rx流中定位到问题。这就是为什么这个库被创建的原因。你可以在README中阅读更多关于的内容。
这个库的功能有:
  • 生成堆栈轨迹
  • 过滤堆栈轨迹


18. Resizer

Resizer是一个轻量级的,而且易于使用的Android库,用于图像缩放。它允许你将图像文件放大或缩小的同时,保持宽高比。
这个项目的灵感来自于Compressor。
说明书:
Minimum SDK: API 21
默认设置:
  • targetLength: 1080
  • quality: 80
  • outputFormat: JPEG
  • outputDirPath: the external files directory of your app
支持的输入格式:
  • BMP
  • GIF
  • JPEG
  • PNG
  • WEBP
支持的输出格式
  • JPEG
  • PNG
  • WEBP
支持的图像质量范围:0~100
  • 值越大,图像质量越好同时图片越大
  • PNG,无损格式,会忽略该设置


19.FaceDetector

该库允许你在相机里预览图片时,实时检测人脸。它与Fotoapparat库非常相似,但它也支持其他相机库和源。
它的使用过程十分简单,而且项目记录相当详细。
 

20.RxGps

它的开发者是Florent Champigny,它很容易找到我们各自的定位。
它兼容RxJava2,它还自动申请GPS的运行权限,并查看当下的服务是否适合您。


21. MapMe

MapMe是一个搭配地图功能使用的Android库。
MapMe将适配器模式带到Maps,简化了标记和注释的管理。
MapMe与Google Maps和Mapbox配合使用,README 里的内容很详细,而且它是用Kotlin编写的。


22. RevelyGradient

该库用于颜色渐变管理。
您可以用Java或Kotlin编写它,项目附带的说明文档很简短,但足够你能够使用它。


23. LiteUtilities

这是一个用Kotlin编写的库,它有助于从代码中消除样板。目前它的功能有:
  • RecyclerUtils—— 省去设置适配器的麻烦,现在只需4行代码就可以设置好适配器。
  • ScrollUtils—— 使用RecyclerView或NestedScrollView时,可以以轻松隐藏/滚动显示FloateActionButton。
  • ToastUtils—— 用于创建toasts。
  • SPUtils—— 用于共享选项的简单DSL。
  • ValidatorUtils—— 可以快速而轻易地进行文本检验。
  • LogUtils—— 简单易用的Android日志记录。


24.KOIN

KOIN是一个使用Kotlin来编写的依赖注入框架,它的功能是能够推动做事的进度。
据作者介绍,它
  • 没有代理/ CGLib
  • 没有代码生成
  • 没有内省
它的说明文档写得很棒,有示例和wiki,还有联系方式。


25.koptional

是那些总试图让自己的安全系统更加顺畅的Kotlin极简主义者的理想选择。
作者给出的理由是:
由于具有空值安全特性,Kotlin不需要可选值类型。但是有 RxJava2 这样的 APIs 和库不接受空值导致 Kotlin 仍然需要支持可选值类型。
大多数情况下可以使用sealed class来表示空值,然而像向 Rx 流传递String?这种情况,可选值类型是更好的选择。


26. Parallax

这是一个模拟Apple TV 视差图标的库。
它的README写得非常好,值得一试。


27.droid-vizu

Droid-vizu旨在通过轻松交换渲染器来获得酷炫效果,从而提供定制的可视化效果.
 

28.Drone

这不是Android库,而是由CésarFerreira提供的库的管理者。它是由于对java社区的嫉妒,因为他们的快速可靠的依赖管理器。因此,您只需执行以下操作:谷歌搜索一个库,检查,阅读文档等。
drone add creator/library module
例如:
drone add jakewharton/butterknife
 

29.From-design-to-Android-part2

这是一个涵盖在Android上创建整洁UI的项目。这一次,SaúlMolinero涵盖:
  • 使Alex Lockwood的ShapeShifter工具
  • AndroidVectorDrawables
  • ScaleDrawables
  • 自适应图标等。
 

30.Reagent

Reagent是Jake Wharton总结的未来响应式库的体验。

 近期热门 - 点击最多
  1. node.js用activex/com+自动化读写excel时查询接口、参数的调试方法
  2. TypeScript定义数字范围类型即仅包含【小时:分钟】的时间类型,每天指定时间点执行任务
  3. 比较测试:用百度文心一言和阿里通义千问写删除文件目录并且是async/await代码
  4. node.js使用TensorFlow入门教程二:什么是张量神经网络运算与矩阵的关系及基本入门代码
  5. node.js使用TensorFlow入门教程一:简介及工作原理环境安装及初始化
  6. node.js用saml2连接Identity Provider服务器完成Azure AD/Active Directory域帐号身份认证
  7. node.js中用typescript连接mongodb数据并设置断开后自动重启连接
  8. git 将本地仓库关连并push远程
  9. 在Windows10上创建node.js开机启动脚本服务Task Scheduler failed to start: Error Value: 2147943711.
  10. Windows和MacOS获取当前Active Directory域的用户名和AD服务器域名

  全端社区 - 最新回复
  1. 如何通过 winax 的 ActiveXObject 或 Excel.Application 往 excel 中插入一张图片
  2. 如何用JavaScript获取某个元素copy selector的CSS选择器
  3. 青否数字人5.0上线,支持真人接管实时驱动!
  4. 遥遥领先!青否数字人直播系统5.0发布,支持真人接管实时驱动!
  5. 比fs.watch更加优秀的Chokidar文件变化检测库
  6. HTML页面嵌入部分使用Vue3,在jQuery应用中用类似Vue2使用Vue3
  7. 克隆自己的数字人形象需要几步?
  8. Node.JS中Fetch/Axios连接Strapi服务器端localhost,Next.JS后端SSR请求返回connect ECONNREFUSED,但客户端CSR正常
  9. node.js用activex/com+自动化读写excel时查询接口、参数的调试方法
  10. TypeScript定义数字范围类型即仅包含【小时:分钟】的时间类型,每天指定时间点执行任务

  开源的 OurJS
OurJS开源博客已经迁移到 OnceOA 平台。

  关注我们
扫一扫即可关注我们:
OnceJS

OnceOA