未找到

未发布 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
未发布 【示例教程】如何通过leadtools读取二维码中的中文
by Harriet666 keys 分享 1511255400131
在使用leadtools进行二维码识别的过程中,经常或碰到中文识别为乱码的情况,让人比较郁闷,本文教大家如何通过leadtools来读取二维码中的中文。
 
Leadtools 19总套包下载>>>
 
中文在编为二维码的时候,实际上是先按照一定的字符集编码被转换为了二进制编码,而我们如果需要正确的读取出二维码中的中文,就必须要确认编码字符集,如UTF8,UTF16,GB2312,GBK等等。
 
在确认了编码方式后,我们对通过BarcodeEngine 引擎读取出的BarcodeData ,不用value属性直接去获取它的对应字符串。因为这样默认是得到的按照ascii码编码来翻译出的字符串,自然会有各种乱码,leadtools提供了另一个方法GetData(),通过这个方法可以获取原始的byte[] 数据。然后按照对应的编码方式进行转换,即可得到对应的中文字符串。
 
下面的例子中是针对UTF8编码的中文二维码进行识别的代码,大家可以在编译以后,对文末的二维码进行识别。
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.Forms; 
using Leadtools.Barcode; 
using Leadtools.ImageProcessing; 

public void BarcodeData_GetDataExample() 
{ 
string imageFileName = Path.Combine(LEAD_VARS.ImagesDir, "Barcode2.tif"); 

// Create a Barcode engine 
BarcodeEngine engine = new BarcodeEngine(); 

// Load the image 
using (RasterCodecs codecs = new RasterCodecs()) 
{ 
using (RasterImage image = codecs.Load(imageFileName, 0, CodecsLoadByteOrder.BgrOrGray, 1, 1)) 
{ 
// Read the first QR barcode from the image 
BarcodeData data = engine.Reader.ReadBarcode(image, LogicalRectangle.Empty, BarcodeSymbology.QR); 

// Show the barcode data found (if any) 
if (data != null) 
{ 
Console.WriteLine("Raw data is:"); 
byte[] bytes = data.GetData(); 
if (bytes != null) 
{ 
string text = System.Text.Encoding.UTF8.GetString(bc); 
Console.WriteLine(text);
} 
else 
{ 
Console.WriteLine("Empty"); 
} 
} 
else 
{ 
Console.WriteLine("No barcode found"); 
} 
} 
} 
}

未发布 纯干货!视频控件VideoCapX的使用指南和常见问题合集
by Harriet666 keys 分享 1502703765425
VideoCapX控件可使开发者轻松地在数字视频撷取卡和相机中添加应用程序。不论你是创建多媒体播放器,数字录像机,电视协调器,网络摄像机,网络安全性程序、身份证数据库、工业监视系统、还是医学成像设备,VideoCapX都可以帮您捕捉和保存这些图像和视频序列。
 
VideoCapX介绍和试用点击下载>>>
 
本文主要介绍了VideoCapX的使用指南和常见问题。目前VideoCapX在线订购享75折优惠正在进行中,欢迎您下载和购买!
videocapx

一、播放MP4、H264、MOV、AVC文件

VideoCapX支持播放MP4、AVI、MOV和H264视频文件。但是,你必须安装解码器和分流器。我们推荐ffdshow解码器和MatroskaSplitter。
 

二、ConnectionClosed错误代码

当视频连接关闭或发生错误时,ConnectionClosed事件被引发。相应的错误代码参数表示原因:
0成功
100无法创建服务器插口
101无法绑定服务器插口
1、5连接错误
3、2、6、7网络发送错误
32、31、8、9网络接收错误
4无法创建视频编解码器
28拒绝连接
29客户端PC上没有安装解码器
91网络接收超时
 

三、在64位Windows下使用VideoCapX

要在64位Windows的VisualStudio项目中使用VideoCapX,你必须将“Architecture”项目设置为“x86”。
 

四、在WPF应用程序中使用VideoCapX

可以在WPF应用程序中使用ActiveX控件。
请参阅Microsoft网站上的这些文章:
http://blogs.msdn.com/mhendersblog/archive/2005/09/23/473065.aspx
http://msdn.microsoft.com/en-us/library/ms742735.aspx
http://msdn.microsoft.com/en-us/library/ms744829.aspx
 

五、如何捕捉MP4视频?

如果安装了“3ivX D4视频编码器”MPEG-4编码器,则VideoCapX可以创建MPEG-4文件。只需设置CapFilename具有“.MP4”扩展名,如果找到3ivX编码器,它将用于将视频/音频转为MPEG-4文件。3ivX编码器可以在http://www.3ivx.com/download找到。


六、如何提高捕捉性能?

为了提高性能并减轻资源需求,请在调用StartCapture之前设置UseVideoFilter = false。如果你不需要即时视频压缩,请使用StartCapture2方法进行最
轻微的捕捉。
 

七、当使用ChromaKey时,关键部分可以正常工作,因为它会删除颜色范围内的像素,但它背后的背景图像不能正确显示。图像似乎伸展到水平条带中,不能识别。

这是因为VideoCapX将背景图像延伸到视频的尺寸大小。如果视频为640x480,则应使用640x480图像作为背景。
 

八、可以使用SetBitmapOverlay在C#(.Net)PictureBox上绘制一个框架吗?

可以。VideoCapX可以在.NET中用作任何其他ActiveX控件。VideoCapX“Samples”文件夹中有几个VideoCapX VB.NET示例。要绘制图形并将其放在视频预览上,请使用以下内容:
Bitmap b = new Bitmap(640, 480);                Graphics g = Graphics.FromImage(b);                g.Clear(System.Drawing.Color.White);                g.DrawRectangle(System.Drawing.Pens.Red, mx, my, mw, mh);                IntPtr bh = b.GetHbitmap();                videoCapX.SetBitmapOverlay((int)bh,0,0,0xffffff,255);                if(oldbh!=(IntPtr)0) DeleteObject(oldbh);                oldbh = bh;
 

九、可以在IP摄像机上使用VideoCapX吗?

可以。你可以使用VideoSourceURL属性来指定相机生成的JPG图像的直接URL。VideoCapX会自动将图像自动刷新至CaptureRate times。请参阅VideoCapX“samples”文件夹中的“IPCamera”示例。要指定用户名和密码,请使用以下特殊语法:vcx.VideoSourceURL =“http:// username:
password@server.com/path/image.jpg”
Example:vcx.VideoDeviceIndex = -2vcx.VideoSourceURL = "http://atlascam2.colorado.edu/axis-cgi/jpg/image.cgi"vcx.CaptureAudio = Falsevcx.Connected = Truevcx.Preview = True
VideoCapX也支持MJPEG。如果你的URL包含“mjpg”字符串,VideoCapX将使用MJPEG流读取器。
 

十、如何在运行时使用VB.NET或C#.NET创建一个新的控件实例?

请参阅此MSDN文章:http://support.microsoft.com/kb/326651
 

十一、视频会议功能

问:VideoCapX可以在视频会议软件中实现什么功能?它是否包括可用于视频会议软件的所有必要组件,如视频捕捉、压缩、数据通信、解压缩、重放等?还可以用于多方视频会议吗?
 
答:可以。VideoCapX包含以上所有提到的功能。你可以在VideoCapX“samples”文件夹中看到“VideoLan”示例。可用于制作多方视频会议软件。
 
在服务器端:
  • 连接到视频和音频设备
  • 设置视频压缩编解码器
  • 设置ServerMode = True
 
在客户端 :
  • 只需使用服务器计算机的网络地址调用DisplayRemote。
 
VideoCapX自动检测在服务器端使用的视频编解码器,并使用它在客户端解压缩视频流。使用内置GSM编码传输音频。

视频以服务器计算机捕捉的原始尺寸传输,因此,为了控制视频大小,在连接客户端之前,请在服务器端使用SetVideoFormat方法。不支持在会议中更改视频大小。
未发布 VintaSoft PDF插件VintaSoftPDF.NET Plug-in更新至v5.6,新增多页查看模式
by Harriet666 keys 分享 1520241862267
VintaSoftPDF.NET Plug-in是一个完全的.NET组件,可用于查看,创建以及编辑PDF文档。该程序库还可用于显示,渲染,创建,转化,注释,打印,保存,修改和编辑PDF文档页面。
 

在WinForms或WPF查看器中显示PDF文档:
  • 当查看器以多页查看模式工作时,增加了同时注释多个PDF页面的功能。
  • 当查看器以多页查看模式工作时,增加了同时填写多个PDF页面交互式字段的功能。
在HTML5或SVG查看器中显示PDF文档:
  • 增加了新的可视化工具 - WebPdfImageExtractorToolJS,可以从PDF页面选择和提取图像。
  • 增加了新的可视化工具 - WebPdfTextSelectionToolJS,可以从PDF页面搜索、突出显示和提取文本。
在WinForms和WPF图像查看器中编辑PDF内容:
  • 以多页面查看模式工作时,增加了同时编辑多个PDF页面交互字段的功能。
  • 以多页面查看模式工作时,增加了同时删除多个PDF页面内容的功能。
  • 以多页面查看模式工作时,增加了同时编辑多个PDF页面内容的功能。
  • 以多页面查看模式工作时,增加了将PDF注释和交互式字段从一个页面移动到另一个页面的功能。
  • 增加了新的可视化工具 - PdfContentXObjectTool,它允许从PDF页面查找、突出显示和删除表单或图像。
PDF文档的验证和转换:
  • 将PDF文档转换为PDF/A格式:
    · 增加了转换包含透明度文档的功能。
    · 增加了将TrueType字体转换为CFF字体的功能。
    · 增加了查看文档中修改列表(ConversionProfileResult类的AppliedCommands属性)的功能。
  • 改进PDF/A转换器。
  • 改进PDF/A验证程序。
  • 修复PDF/A转换器中的一些错误。
使用PDF文档:
  • 创建Web API 2控制器以使用PDF文档(VintasoftPdfApi2Controller类)。
  • 创建Web API控制器以使用PDF文档(VintasoftPdfApiController类)。
  • 创建HTTP处理程序以使用PDF文档(VintasoftPdfHandler类)。
  • 创建WCF服务以使用PDF文档(VintasoftPdfWcfService类)。
优化PDF文档:
  • 增加了删除PDF文档中未使用的资源(PdfDocument.RemoveUnusedNamedResources)的功能。
  • 增加了删除PDF页面的未使用资源(PdfPage.RemoveUnusedNamedResources)的功能。
  • 添加了删除PDF表单中未使用的资源(PdfFormXObjectResource.RemoveUnusedNamedResources)的功能。
  • 优化PDF文档的打包算法。
PDF文档中的文本搜索和文本提取:
  • 增加了提取PDF页面的格式化文本的功能。提取的文本可以按段落格式化。架构是开放的,并允许使用自定义文本格式算法。
在PDF页面、XObject表单或注释中绘制:
  • 改进了PdfGraphics.DrawString()方法中的换行算法。现在,即使单词中没有空白,算法也会进行优化。
使用PDF文档的字体:
  • 可以判断是否可以使用指定字体对指定文本进行编码的功能。
  • 改进了字体的解析器。
编辑PDF内容:
  • 改进了裁剪PDF页面内容的算法(PdfPage.Crop)。
  • 改进了裁剪PDF表单内容的算法(PdfFormXObject.Crop)。
与PDF文档的可视化交互:
  • 改进了JavaScript注释器。
 
完整更新内容点击查看>>>
未发布 Windows网络守门人UserLock教程:UserLock教程:阻止规定时间以外的访问连接
by Harriet666 keys 分享 1508318382708
IS Decisions公司旗下的UserLock为企业和组织提供了实施网络访问安全以及优化工作站使用的一系列有效方法。它通过阻挠来自于外部或者内部的恶意访问事件为Windows网络提供了真正的访问安全。(重要推荐:UserLock已加入在线订购,点击购买!

UserLock免费下载试用>>>


UserLock允许您创建规则用来阻止用户在授权时间以外连接到网络。本文将一步一步的教您如何制定规则来阻止用户工作站和终端连接超出工作时间:
- 周一至周五,8:00至19:00。
- 周六上午,9:00至13:00。
并且将在到达时限后强制任何会话的注销打开。
 
1、点击菜单中的“受保护的帐户”。如果已存在则可以通过双击相应的行来打开所需的用户帐户。否则,您可以为目标组创建受保护的帐户。
 
2、显示“时间限制”部分。
 
3、选择“以下时间范围”下拉列表的'被授权'选项。
 
4、点击“添加”来定义时间段。
 
5、定义具体的时间范围。选择“交互”作为会话类型来选择哪些类型的会话,包括工作站和终端会话类型。点击“确定”。
 
6、检查相应的日期框 - 星期一至星期五。点击“确定”。
 
7、调整时间为上午8:00至下午7:00。点击“确定”以验证第一个授权的时间范围。
 
8、您现在必须为星期六定义第二个时间范围。再次点击“添加”。
 
9、定义第二个时间框架,即星期六上午9:00至下午1:00。再次选择“交互”作为会话类型,包括工作站和终端会话类型。点击“确定”。
 
10、取消选中从星期一到星期五的框,而是选中星期六的框。点击“确定”。
 
11、调整时间为上午9:00至下午1:00。点击“确定”添加第二个时间框架。
您已经成功定义了与授权时间相对应的两个时间范围。用户在这些时间以外的连接将被拒绝。
 
12、要在时间限制后注销用户会话,请调整“超时时采取的行动”为“注销会话”选项。
请注意,强制注销表示所有未保存的文档将丢失。下一步允许您自定义警。
 
13、要警告用户授权时间已经结束,将“注销通知超时”设置为“已启用”,并输入几分钟,在此分钟内将显示警告消息框(在我们的示例中为15)。
14、在“快速访问”面板中单击“确定”以验证规则。
 
“Everyone”组的用户成员将被允许在授权时间内打开工作站或终端会话的权限。达到时限的会话将被注销,并发出预警通知。所有工作站和终端连接超出规定的时间将被拒绝。
 
您可以在“消息”视图中自定义“注销通知超时”内容。通知消息参考是“TIME_RESTRICTION_LOGOFF”。


未发布 .Net文档图像处理工具包GdPicture.NET发布v14,提供最先进的PDF和文档成像技术
by Harriet666 keys 分享 1500539281166
GdPicture.NET 14.0是2017年初的第一个主要版本。像过去13年一样,GdPicture.NET团队力求提供最先进的PDF和文档成像技术。
 
此版本所有主要功能都得到了改进:PDF、TWAIN采集、压缩、文档渲染、文档转换、条形码识别、字符识别和文档清理。此外还包括其他流行的文档文件格式新功能或改进功能,包括Office Open Xml相关功能和使用Wang注释的TIFF。现在也支持RTF文档格式。
 
DocuVieware是HTML5文档管理的主要扩展,还包括一个新的注释评论管理单元,支持所有浏览器中的HTTPS TWAIN扫描,并大大地提升了性能。现在提供了通过任何流行的Web技术(如Angular、ASP.NET Core、ASP.NET、Java、JavaScript、Node.js和PHP)使用DocuVieware的所有必需资源和功能。
 
【GdPicture.NET 14.0点击下载>>>】
 
新的功能和改进

新的文档查看器引擎

新版本附带了一个全新的渲染引擎,可以非常快速地展示大尺寸位图,并以多页视图模式显示多页文档。对于所有支持的框架,它已经被加入到了WinForms版本的GdViewer控件中。

新文件转换器类

处理快速文档转换的新类已添加到工具包中。它允许通过处理转换的每个方面(颜色、元数据、注释、图像、文本...),将任何支持的文档格式(通过GdPicture)快速转换为流行格式,如PDF和TIFF。(需要GdPicture Ultimate版本)。

支持新的文档格式

现在支持RTF查看和转换。渲染和显示、获取缩略图、浏览、搜索、转换为PDF或位图。使用多视图模式、文本搜索、文本选择和提取等查看GdViewer和DocuVieware中的rtf文档。

字符识别和可搜索PDF(PDF-OCR)

该OCR引擎已经改进,以减少内存的使用,提高稳定性和准确度(尤其是低分辨率的位图)。
GdPicture.NET 14.0可搜索PDF(PDF-OCR)已经改进。创建更快,生成的文件更小。
字符识别引擎已经优化,使用较少的内存,并且PDF页面识别方法得到了改进。

长期归档(PDF/A)

PDF/A是长期存档电子文件的ISO标准。感谢GdPicture.NET PDF/A功能,可以创建标准化的电子文档,可以在任何系统上随时随地地展示,同时可以使用兼容的查看器打开。
GdPicture.NET 14.0能够生成PDF/A的任何格式:PDF/A-1a、PDF/A-1b、PDF/A-2a、PDF/A-2b、PDF/A-2u、PDF/A-3a、PDF/A-3b和PDF/A-3u。

附加PDF支持功能

增强了PDF的最重要部分,以改善解析、写入、渲染、内存使用和速度。当使用Unicode内容编写PDF时,GdPicture.NET 14.0附带了一种新的字体生成引擎,支持TrueType字体的子集。该软件现在支持用于Unicode文本绘图的OpenType字体。新的文本提取算法构建更接近自然阅读顺序的文本。
GdPicture.NET现在读取复杂的PDF最多可以提高5倍速度,并且更快地编写pdf文本。
其他新功能和增强功能包括:
  • 支持传递函数到PDF光栅化器。
  • 新的CCITT滤波器解码器。
  • 支持将JPEG图像添加到PDF中,无需对图像进行解码/重新编码。
  • 改进了具有链接文档的PDF包。
  • 改进页面规范化支持。
  • 提高大文件的处理速度(和内存使用量)。
  • 打印:减小了一些复杂文档生成的卷轴大小。
  • 打印:提高生成页面的质量,特别是虚拟打印机。

Office打开Xml Word处理文档

GdPicture.NET 14.0包含了很多改进的渲染引擎,并提供对表格内容和图片的支持。渲染引擎快了80%。

条形码引擎

GdPicture.NET条形码读取引擎使用错误校正机制。在GdPicture.NET 14.0中引入了改进的纠错机制,以提高引擎的速度和精度。条形码引擎使用查找器模式来定位文档中的代码。
当将GdPicture.NET 14.0引擎与GdPicture.NET 12.0引擎进行比较时,可以获得以下数据:
  • 1D条码阅读引擎
    提高10%的条形码识别
    提高44%的补丁代码识别
    快14%
  • 数据矩阵条码阅读引擎
    提高15%的条形码识别
  • PDF 417阅读引擎
    提高14%的条形码识别
    快40%
  • QR码阅读引擎
    快18%
    提高24%的条形码识别

文件成像过滤器

  • GdPicture.NET页面自动校正精度有所改进。
  • 空白页检测引擎的准确性大大提高,更好地排序空页。
  • 引入了一个新的颜色压缩过滤器,将特定颜色放入多个上下文中:退出表单等。

注释评论

GdPicture.NET 14.0新的评论功能可以帮助集成商解决文档审查的难题。
基于GdPicture.NET的应用程序可以存储由GdPicture.NET(超过100个)支持的所有格式的注释,包括PDF和TIFF。有了这个新功能,这些应用程序可以提供协作文档审阅,参与者可以在审阅过程中共享信息。

支持Wang注释

Wang注释是一种老旧的注释格式。ORPALIS开发了将这些旧式文件转换为最先进的注释PDF或TIFF的工具。
该工具可用作github上的开源项目。请参阅:https://github.com/Orpalis/WangTagReading

改进图像编码解码器

  • GdPicture.NET图像压缩速度得到提高:
    JPEG2000解码速度高达25%
    在64位系统上压缩JPEG图像的速度大约10-15%
    使用预测变量压缩PNG图像的速度提高了30%,达到50%
  • 改进RAW图像加载速度,并增加了对80多个新相机的支持
  • 支持在BMP文件中读取和写入alpha通道

杂项

  • 通过Twain扫描时,使用存储器传输模式增加了对压缩位图的支持
  • 提高了Twain内存传输速度
  • 改进1D条码刻录机编码
  • 参考指南大大改进,并将不断更新

DocuVieware全球改进

受益于GdPicture.NET 14.0的最新改进,DocuVieware 3.0提高了性能、内存占用以及用户体验。
格式支持也得到了改进,现在可以将Microsoft Office OpenXML文档导出到向量PDF。
未发布 矢量图形引擎库VectorDraw Developer Framework发布v7.7014.0.5
by Harriet666 keys 分享 1517214900113
VectorDraw Developer Framework(VDF)是一款构建2D、3D图形并用于应用程序可视化的矢量图形引擎库。有了VDF提供的功能,您可以轻松地创建、编辑、管理、输出、输入和打印2D和3D图形文件。该库还支持许多矢量和栅格输入和输出格式,包括本地PDF和SVG导出。
 
VectorDraw Developer Framework试用版下载>>>
 
VectorDraw Developer Framework(VDF)v7.7014.0.5更新内容:

WebJS

新增需求(7.7014.0.1)
  • 70001215 MergeDocument方法支持使用mergeFlags  
新增需求(7.7014.0.5)        
  • 70001249 处理AddBlockFromFile加载
漏洞(7.7014.0.1)
  • 70001204 线路对象捕捉无法运作
  • 70001206 导出到vds脚本时出现异常
  • 70001210 WebGl渲染中的实体影线问题  
漏洞(7.7014.0.5)
  • 70001250 vdConst CloneEntity出现意外
 

Converter

新增需求(7.7014.0.1)
  • 70001217 DGN中unsuported对象的类型
漏洞(7.7014.0.1)
  • 70001212 Textstyle未使用正确的TTF字体导入
漏洞(7.7014.0.5)
  • 70001248 折线的宽度问题
   

Engine

新增需求(7.7014.0.3)
  • 70001231 改进触摸控制
  • 70001234 使用Wrapper检查鼠标是否位于ViewCube内部
  • 70001239 是否可以在OnFilterOsnap事件中获取交集对象
  • 70001241 用webGl 3d模式绘制线条和文本
漏洞(7.7014.0.3)
  • 70001235 版本2000中的DXF导出问题
  • 70001236 在Wire2D模式下,线路抗锯齿功能无法正常工作
  • 70001237 鼠标没有正确渲染
  • 70001238 vdLayout调整大小将引发异常
  • 70001240 AlignToView对象在PDF输出中缩放
  • 70001242 导出多边形为dwg dxf文件格式时出错
漏洞(7.7014.0.4)
  • 70001243 不完整的纸张模型刷新
  • 70001245 当VectorDrawBaseControl WndProc被调用时,出现间歇性崩溃
未发布 安全预警:Xshell 5.0 Build 1322官方版本被植入后门,请尽快更新至最新版本
by Harriet666 keys 分享 1502703358521
知名服务器终端管理软件Xshell在7月18日发布的5.0 Build 1322官方版本被植入后门,用户下载、更新到该版本均会中招。危害正在评估中,或可能窃取用户设备信息。
 
Xshell是一款功能强大的服务器终端管理软件,支持SSH1、SSH2、TELNET等协议,由国外公司NetSarang开发,在运维、站长、安全等圈子里有极多受众。
 
NetSarang公司在8月7日发布安全公告,称其最近更新(7月18日)的Xmanager Enterprise、Xmanager、Xshell、Xftp、Xlpd五款软件存在安全漏洞,官方已于8月5日紧急修复,并发布更新版本。目前暂未发现有人利用过漏洞。
 
五款软件的受影响版本:
Xmanager Enterprise 5.0 Build 1232
Xmanager 5.0 Build 1045
Xshell 5.0 Build 1322
Xftp 5.0 Build 1218
Xlpd 5.0 Build 1220
 
8月5日五款软件发布新版本,更新日志基本一致,都提到修复SSH通道的追踪消息和问题文件nssock2.dll:
FIX: Unnecessary SSH channel trace messages
FIX: Patched an exploit related to nssock2.dll
 
NetSarang公司没有解释漏洞的成因,据了解,很可能是该公司遭遇了入侵,发布版本被植入后门。有国内用户更新到Xshell问题版本,抓包发现该版本的nssock2.dll会向陌生域名(*.nylalobghyhirgh.com)发送畸形DNS请求。问题版本的nssock2.dll带有官方签名,可能是攻击者窃取了NetSarang的签名,或者直接在源码层面进行了植入。


修复方案

NetSarang公司已经发布修复版本,建议该公司产品用户请尽快更新至最新版本,企业网络可将*.nylalobghyhirgh.com域名进行屏蔽。

目前五款软件的最新版本:
Xmanager Enterprise 5 Build 1236下载
Xmanager 5 Build 1049下载
Xshell 5 Build 1326下载
Xftp 5 Build 1222下载
Xlpd 5 Build 1224下载
【干货】扫描识别控件Dynamic Web TWAIN在线示例汇总
by Harriet666 keys 分享 1509086706928
Dynamic Web TWAIN是一个专为Web应用程序设计的TWAIN扫描识别控件。你只需在TWAIN接口写几行代码,就可以用兼容TWAIN的扫描仪扫描文档或从数码相机/采集卡中获取图像。然后用户可以编辑图像并将图像保存为多种格式,用户可保存图像到远程数据库或者SharePoint。这个TWAIN控件还支持上传和处理本地图像。
 
Dynamic Web TWAIN能够在所有主流浏览器上面进行网页扫描。兼容 Firefox, Mozilla , Chrome , Safari , Opera以及其他的浏览器;目前主要有三个版本:ActiveX, Plugin 和 Mac。
 
本文为大家整理了Dynamic Web TWAIN在线示例,欢迎收藏!
 
Dynamic Web TWAIN在线示例Demo>>>
Dynamic Web TWAIN示例:扫描文档和读取条形码
Dynamic Web TWAIN示例:上传文件并执行服务器端OCR
Dynamic Web TWAIN示例:扫描驱动程序许可证和提取信息
Dynamic Web TWAIN示例:使用jQuery扫描高级查看器的文档
Dynamic Web TWAIN示例:扫描文档并执行服务器端OCR
Dynamic Web TWAIN示例:用扫描仪和网络摄像头捕获图像
Dynamic Web TWAIN示例:使用Thumbnails View扫描文档
Dynamic Web TWAIN示例:使用条形码分离器自动进行文档分类
Dynamic Web TWAIN示例:全功能演示
Dynamic Web TWAIN示例:扫描文件并上传到文件系统

 Dynamic Web TWAIN v13.1最新版下载>>>

未发布 移动开发UI工具包Xamarin.Forms v2.3.5-pre6发布
by Harriet666 keys 分享 1500454563990
Xamarin.Forms是一个跨平台、原生支持UI的工具包,允许开发者轻松创建用户界面。这些用户界面可以通过安卓、iOS和Windows Phone共享,使用目标平台的原生控件进行渲染,让每个平台上Xamarin.Forms应用的界面外观搭配得当。
Xamarin
 
v2.3.5-pre6更新内容
  • Xamarin.Forms现在与.NET Standard项目兼容! 并非所有创建功能都能正常工作。
  • 行为变化:Device.RuntimePlatform现在在WinRT和UWP上返回。
  • 行为变化:使用新的AutomationProperties可能会影响Android上的UI测试。 AutomationId、Name和HelpText都将设置本机ContentDescription属性,Name或HelpText优先于AutomationId(Name和HelpText将被级联)。 这意味着如果在该元素上也设置了Name或HelpText,那么查找AutomationId的任何测试都将失败。 要解决此问题,请在此方案中更改您的UI测试以查找Name/HelpText的值。
  • 行为变化:在WinRT/UWP上调用焦点选择器现在将打开下拉列表。
  • 弃用:Android IVisualElementRenderer.ViewGroup现已过时,请改用View。

 近期热门 - 点击最多
  1. python基于asyncio实现 Redis 的异步操作哈希数据写入 / 读取、发布订阅消息中间件
  2. Node.js 打印vite react+go项目目录树
  3. Angular入门:用Signals状态管理和Bootstrap基础样式实现的用户登录注册实例教程
  4. 用Gitea搭建免费Git服务器自定义Actions配置CI/CD自动化部署和测试流水线
  5. FastAPI+SQLModel+PostgreSQL+React+Vite全栈项目文件结构说明环境搭建与初始化指南
  6. React结合vite使用vue3,在纯typescript的react hooks中使用vue
  7. valtio基于Proxy代理比redux\zustand更简洁的react状态管理库
  8. React Native为http网络请求添加timeout超时异常处理: 用XMLHttpRequest替换fetch发送的区别
  9. React Native使用fetch发送http登陆验证请求失败:无法读取set-cookie并显示network request failed
  10. 克服Redux的缺点在React/Native中使用消息队列,pubsub-js更加简洁的组件间通信和状态传递方法

  全端社区 - 最新回复
  1. python基于asyncio实现 Redis 的异步操作哈希数据写入 / 读取、发布订阅消息中间件
  2. Angular入门:用Signals状态管理和Bootstrap基础样式实现的用户登录注册实例教程
  3. 用Gitea搭建免费Git服务器自定义Actions配置CI/CD自动化部署和测试流水线
  4. FastAPI+SQLModel+PostgreSQL+React+Vite全栈项目文件结构说明环境搭建与初始化指南
  5. Node.js 打印vite react+go项目目录树
  6. valtio基于Proxy代理比redux\zustand更简洁的react状态管理库
  7. Windows与Mac通过git ssh和rsync实现文件共享互传
  8. Windows与Mac通过git ssh和scp实现文件共享互传
  9. React结合vite使用vue3,在纯typescript的react hooks中使用vue
  10. 使用PubSub-JS时ReactNative在后台运行一段时间唤醒后,组件无法scribe到publish的事件,typescript实现一个事件订阅发布组件

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

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

OnceOA