赞
踩
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using iTextSharp;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.text.xml;
namespace PDFR
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//退出程序的按钮
private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}
//开始运行程序的按钮 private void button1_Click(object sender, EventArgs e)
private string readPDF(string fn)
{
PdfReader p = new PdfReader(fn);
//从每一页读出的字符串
string str = String.Empty;
//"[......]"内部字符串
string subStr = String.Empty;
//函数返回的字符串
string rtStr = String.Empty;
//从每一页读出的8位字节数组
byte[] b = new byte[0];
//"[","]","(",")"在字符串中的位置
Int32 bg = 0, ed = 0, subbg = 0, subed = 0;
//取得文档总页数
int pg = p.NumberOfPages;
for (int i = 1; i <= pg; i++)
{
bg = 0;
ed = 0;
Array.Resize(ref b, 0);
//取得第i页的内容
b = p.GetPageContent(i);
//下一行是把每一页的取得的字节数据写入一个txt的文件,仅供研究时用
//System.IO.File.WriteAllBytes(Application.StartupPath + "//P" + i.ToString() + ".txt", b);
StringBuilder sb = new StringBuilder();
//取得每一页的字节数组,将每一个字节转换为字符,并将数组转换为字符串
for (int j = 0; j < b.Length; j++) sb.Append(Convert.ToChar(b[j]));
str = sb.ToString();
//循环寻找"["和"]",直到找不到"["为止
while (bg > -1)
{
//取得下一个"["和"]"的位置
bg = str.IndexOf("[", ed);
ed = str.IndexOf("]", bg + 1);
//如果没有下一个"["就跳出循环
if (bg == -1) break;
//取得一个"[]"里的内容,将开始寻找"("和")"的位置初始为0
subStr = str.Substring(bg + 1, ed - bg - 1);
subbg = 0;
subed = 0;
//循环寻找下一个"("和")",直到没有下一个"("就跳出循环
while (subbg > -1)
{
//取得下一对"()"的位置
subbg = subStr.IndexOf("(", subed);
subed = subStr.IndexOf(")", subbg + 1);
//如找不到下一对就跳出
if (subbg == -1) break;
//在返回字符串后面加上新找到的字符串
rtStr += subStr.Substring(subbg + 1, subed - subbg - 1);
}
}
}
//PDF文档中读出来的数据没有换行符,可以根据需要把2个或3个连续的空格改成换行符
rtStr = rtStr.Replace(" ", "/r/n");
return rtStr;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。