PDF解析帮助类
public class ComPDFHepler
{
/// <summary>
/// 正则获取字符串中两个字符串间的内容
/// </summary>
/// <param name="str"></param>
/// <param name="s"></param>
/// <param name="e"></param>
/// <returns></returns>
public static string GetValue(string str, string s, string e, bool isContansE)
{
Regex rg = new Regex("(?<=(" + s + "))[.\\s\\S]*?(?=(" + e + "))", RegexOptions.Multiline | RegexOptions.Singleline);
Match matchs = rg.Match(str);
if (isContansE)
{
return matchs.Groups[0].Value + matchs.Groups[2].Value;
}
else
{
return matchs.Groups[0].Value;
}
}
public static string GetValue(string str, string s, string e)
{
Regex rg = new Regex("(?<=(" + s + "))[.\\s\\S]*?(?=(" + e + "))", RegexOptions.Multiline | RegexOptions.Singleline);
Match matchs = rg.Match(str);
return matchs.Groups[0].Value + matchs.Groups[2].Value;
}
/// <summary>
/// 以startString起,取值到结束
/// </summary>
/// <param name="str"></param>
/// <param name="s"></param>
/// <returns></returns>
public static string GetStartWithValue(string str, string startString)
{
Regex rg = new Regex("(?<=(" + startString + "))[.\\s\\S]*", RegexOptions.Multiline | RegexOptions.Singleline);
Match matchs = rg.Match(str);
return matchs.Value;
}
/// <summary>
/// 转换成列表
/// </summary>
/// <param name="tempContent"></param>
/// <returns></returns>
public static List<String> ConvertToArrayString(string tempContent)
{
List<String> list = new List<string>();
StringReader sr = new StringReader(tempContent);
StringBuilder sb = new StringBuilder();
//读第一行
var strContent = sr.ReadLine();
Console.WriteLine(strContent);
//循环读所有的内容
while ((strContent = sr.ReadLine()) != null)
{
if (strContent.Equals(" "))
{
continue;
}
bool isMatch = Regex.IsMatch(strContent, @"(^\d+\.)20[0-9][0-9]");
if (isMatch)
{
if (!string.IsNullOrEmpty(sb.ToString()))
{
list.Add(sb.ToString());
sb = new StringBuilder();
}
}
sb.AppendLine(strContent);
}
sr.Close();
if (!string.IsNullOrEmpty(sb.ToString()))
{
list.Add(sb.ToString());
}
return list;
}
/// <summary>
/// 获取需要分析的(一)贷款 内容
/// </summary>
/// <param name="tagPath"></param>
/// <returns></returns>
public static string GetAnalysisContent(string tagPath)
{
StringReader sr = new StringReader(tagPath);
StringBuilder sb = new StringBuilder();
bool canRead = false;
//读第一行
var strContent = sr.ReadLine();
Console.WriteLine(strContent);
//循环读所有的内容
while ((strContent = sr.ReadLine()) != null)
{
//读到“信 贷 交 易 信 息 明 细 信 贷 交 易 信 息 明 细”,则是需要分析的文件,将其放在临时变量中sb,
//一直读到“( 二 ) 贷 记 卡 ( 二 ) 贷 记 卡”。结束。
if (canRead)
{
if (Regex.IsMatch(strContent, "(()[一二三四五六七八九十]())") && !strContent.Contains("贷款"))
{
canRead = false;
}
else
{
sb.AppendLine(strContent);
}
}
else
{
canRead = strContent.Contains("信贷交易信息明细");
}
}
sr.Close();
return sb.ToString();
}
/// <summary>
/// 获取需要分析的(二)贷记卡 内容
/// </summary>
/// <param name="tagPath"></param>
/// <returns></returns>
public static string GetAnyTextCardInfo(string tagPath)
{
string text = ComPDFHepler.GetValue(tagPath, "信贷交易信息明细", "查询记录", false);
text = ComPDFHepler.GetStartWithValue(text, "贷记卡");
return text;
}
/// <summary>
/// 读取PDF文件
/// </summary>
/// <param name="file"></param>
/// <returns></returns>
public static string pdf2txt(FileInfo file)
{
PDDocument doc = PDDocument.load(file.FullName);
PDFTextStripper pdfStripper = new PDFTextStripper();
string text = pdfStripper.getText(doc);
doc.close();
return text;
}
/// <summary>
/// 是否是数据
/// </summary>
/// <param name="text"></param>
/// <returns></returns>
public static bool IsNumber(string text)
{
return Regex.IsMatch(text, @"\d+");
}
/// <summary>
/// 获取字符串中的所有数字
/// </summary>
/// <param name="par"></param>
/// <returns></returns>
public static int GetNumber(string par)
{
string strTempContent = par;
strTempContent = System.Text.RegularExpressions.Regex.Replace(strTempContent, @"[^\d]*", "");
return Convert.ToInt32(strTempContent);
}
/// <summary>
/// 获取字符串中的所有数字,以逗号隔开
/// </summary>
/// <param name="par"></param>
/// <returns></returns>
public static string GetNumberSplit(string par)
{
string strTempContent = par;
strTempContent = System.Text.RegularExpressions.Regex.Replace(strTempContent, @"\D+", ",");
return strTempContent;
}
/// <summary>
/// 获取逾期记录表
/// </summary>
/// <param name="text"></param>
/// <returns></returns>
public static List<string> GetListOverDueRecord(string text)
{
string tempTableString = ComPDFHepler.GetStartWithValue(text, "逾期金额\r\n");
var arrayString = tempTableString.Split("\r\n".ToCharArray());
List<string> list = new List<string>();
foreach (string item in arrayString)
{
if (!string.IsNullOrEmpty(item))
{
list.Add(item);
}
}
return list;
}
/// <summary>
/// 是否为Month个月内
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static bool isInMonth(string date, int month)
{
string dateFormat = date.Replace('.', '-');
try
{
DateTime dt = DateTime.Parse(dateFormat);
double days = DateTime.Now.Subtract(dt).TotalDays;
if (days / 30 <= month)
{
return true;
}
else
{
return false;
}
}
catch (Exception)
{
return false;
}
}
}
PDF解析帮助类的更多相关文章
- pdf解析与结构化提取
#PDF解析与结构化提取##PDF解析对于PDF文档,我们选择用PDFMiner对其进行解析,得到文本.###PDFMinerPDFMiner使用了一种称作lazy parsing的策略,只在需要的时 ...
- 解析C#类中的构造函数
<解析C#类中的构造函数> 一. C#中的构造函数概述: C#中类包含数据成员和函数成员.函数成员提供了操作类中数据的某些功能,包括方法.属性.构造器和终结器.运算符和索引器. 构造函数 ...
- 一个.NET通用JSON解析/构建类的实现(c#)转
转自:http://www.cnblogs.com/xfrog/archive/2010/04/07/1706754.html NET通用JSON解析/构建类的实现(c#) 在.NET Framewo ...
- PDF解析记录——Pdfbox
此文仅作记录[嫌放电脑里碍事-_-],内容为以前收集的一小段代码. 下面为pdf获取文本的简要代码片段: private string GetPDFText(string filename) { ...
- CI 模板解析器类
模板解析器类可以解析你的视图文件中的伪变量.它可以解析简单的变量或者以变量作为标签的结构.如果你以前没有用过模板引擎,那么伪变量如下所示: <html><head><ti ...
- 爬虫代码实现五:解析所有分页url并优化解析实现类
如图,我们进入优酷首页,可以看到电视剧列表,我们称这个页面为电视剧列表页,而点击进入某个电视剧,则称为电视剧详情页.那么如何获取所有分页以及对应的详情页呢,通过下面的分页得到. 因此,首先,我们将St ...
- 一个.NET通用JSON解析/构建类的实…
一个.NET通用JSON解析/构建类的实现(c#) 在.NET Framework 3.5中已经提供了一个JSON对象的序列化工具,但是他是强类型的,必须先按JSON对象的格式定义一个类型,并将类型加 ...
- C#字符串数组排序 C#排序算法大全 C#字符串比较方法 一个.NET通用JSON解析/构建类的实现(c#) C#处理Json文件 asp.net使用Jquery+iframe传值问题
C#字符串数组排序 //排序只带字符的数组,不带数字的 private string[] aa ={ "a ", "c ", "b & ...
- Spring5源码解析6-ConfigurationClassParser 解析配置类
ConfigurationClassParser 在ConfigurationClassPostProcessor#processConfigBeanDefinitions方法中创建了Configur ...
随机推荐
- show一下自己的文档编写功底
以我为例,我绝对相信,“才华”和颜值成反比.这里我要秀一下我的文档编写能力.在我这十年的工作生涯里,的确有数不清的次数,我的同事或上司,对我设计和制作的文档表示称赞. 我曾记得,2010年我在好丽友— ...
- iOS-UICollectionView
1--------------------------------------------------------------------------------------------------- ...
- Masonry -- 使用纯代码进行iOS应用的autolayout自适应布局
简介 简化iOS应用使用纯代码机型自适应布局的工作,使用一种简洁高效的语法替代NSLayoutConstraints. 项目主页: Masonry 最新示例: 点击下载 项目简议: 如果再看到关于纯代 ...
- pycharm运行脚本为何不生成测试报告?
今日使用python+selenium编写自动化测试脚本并执行过程中,使用pycharm运行结果后发现脚本运行无报错,脚本中的操作也正常被执行,但就是没有生成测试报告. 为什么呢,为什么呢,生成测试报 ...
- Design2:数据层次结构建模之二
MSSql提供了一个新的数据类型 HierarchyID,用来处理层次结构的数据,这个数据类型是系统内置的CLR数据类型,不需要专门激活 SQL/CLR 功能即可使用.当需要表示各值之间的嵌套关系,并 ...
- Oracle 11g系列:约束
约束是每个数据库必不可少的一部分,约束的目的在于保存数据的完整性.数据完整性是指数据的精确性和可靠性.数据库约束主要包括:主键约束.外键约束.唯一性约束.检查约束和默认值约束. 1.主键约束 主键约束 ...
- MIME参考列表
定义 MIME(multipurpose internet mail extensions)多用途互联网邮件扩展类型是描述消息内容类型的因特网标准.MIME消息能包含文本.图像.音频.视频以及其他应用 ...
- NUMA架构的CPU -- 你真的用好了么?
本文从NUMA的介绍引出常见的NUMA使用中的陷阱,继而讨论对于NUMA系统的优化方法和一些值得关注的方向. 文章欢迎转载,但转载时请保留本段文字,并置于文章的顶部 作者:卢钧轶(cenalulu) ...
- 哈夫曼树(三)之 Java详解
前面分别通过C和C++实现了哈夫曼树,本章给出哈夫曼树的java版本. 目录 1. 哈夫曼树的介绍 2. 哈夫曼树的图文解析 3. 哈夫曼树的基本操作 4. 哈夫曼树的完整源码 转载请注明出处:htt ...
- PHP的学习--PHP的引用
引用是什么 在 PHP 中引用意味着用不同的名字访问同一个变量内容.这并不像 C 的指针,替代的是,引用是符号表别名.注意在 PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字.最 ...