您的位置:首页 > 其它

PDF解析

2016-05-25 16:04 281 查看
解析如下图PDF文件



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Aspose.Pdf;
using Aspose.Pdf.Text;
using System.IO;
using System.Text.RegularExpressions;

namespace Test
{
class Program
{
//2个空格以上,意味着匹配出现了问题,匹配后面的
private static  Regex r = new Regex(@"\s+\S+\s+");
//1个空格,且字数超过15,是有问题的
private static Regex r1 = new Regex(@"^\S+\s+\S+$");

static void Main(string[] args)
{
string file = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Files", "模板.pdf");
Document doc = new Document(file);
var absorber = new TextAbsorber();
doc.Pages.Accept(absorber);
string content = absorber.Text;//将PDF文件解析为一串字符串保存到content变量
string age = GetContentStr(content, "年  龄:,\n");//age=44
}

//
protected static string GetContentStr(string content, string search)
{

if (string.IsNullOrEmpty(search)) return null;

var arrsearch = search.Split(new string[] { "||" }, StringSplitOptions.RemoveEmptyEntries);//TODO:这句代码干嘛用,这个方法的逻辑****************************************************/
{
for (int i = 0; i < arrsearch.Length; i++)
{
var ses = arrsearch[i].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

if (ses.Length == 1)//默认值   为啥*****************************/
{
return ses[0];
}

//如果有逗号隔开的,就用正则表达式进行搜索
var reg = new Regex(ses[0]);

var m = reg.Match(content);

if (m.Success)
{
reg = new Regex(ses[1]);
var index = m.Index + m.Length;
m = reg.Match(content, index);
if (m.Success)
{
var len = m.Index - index;
var re = content.Substring(index, len).Trim();
if (!string.IsNullOrEmpty(re) && !r.IsMatch(re) && !(r1.IsMatch(re) && re.Length >= 15))//搜索成功之后,用什么标准认为结果是我们要的?
{
return re.Trim();
}
}
}
}

}
return null;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: