C#使用iTextSharp将PDF转成文本的方法

所属分类: 软件编程 / C#教程 阅读数: 46
收藏 0 赞 0 分享

本文实例讲述了C#使用iTextSharp将PDF转成文本的方法。分享给大家供大家参考。具体实现方法如下:

using System;
using System.IO; 
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;
public class ParsingPDF {
  static string PDF;
  static string TEXT2;
  /**
   * Parses the PDF using PRTokeniser
   * @param src the path to the original PDF file
   * @param dest the path to the resulting text file
   */
  public void parsePdf(String src, String dest)
  {
    PdfReader reader = new PdfReader(src);
    StreamWriter output = new StreamWriter(new FileStream(dest, FileMode.Create));
    int pageCount = reader.NumberOfPages;
    for (int pg = 1; pg <= pageCount; pg++)
    {
      // we can inspect the syntax of the imported page
      byte[] streamBytes = reader.GetPageContent(pg);
      PRTokeniser tokenizer = new PRTokeniser(streamBytes);
      while (tokenizer.NextToken())
      {
        if (tokenizer.TokenType == PRTokeniser.TokType.STRING)
        {
          output.WriteLine(tokenizer.StringValue);
        }
      }
    }
    output.Flush();
    output.Close();
  }
  /**
   * Main method.
   */
  static void Main(string[] args)
  {
    if (args.Length < 1 || args.Length > 2)
    {
      Console.WriteLine("USAGE: ParsePDF infile.pdf <outfile.txt>");
      return;
    }
    else if (args.Length == 1)
    {
      PDF = args[0];
      TEXT2 = Path.GetFileNameWithoutExtension(PDF) + ".txt";
    }
    else
    {
      PDF = args[0];
      TEXT2 = args[1];
    }
    try
    {
      DateTime t1 = DateTime.Now;
      ParsingPDF example = new ParsingPDF();
      example.parsePdf(PDF, TEXT2);
      DateTime t2 = DateTime.Now;
      TimeSpan ts = t2 - t1;
      Console.WriteLine("Parsing completed in {0:0.00} seconds.", ts.TotalSeconds);
    }
    catch (Exception ex)
    {
      Console.WriteLine("ERROR: " + ex.Message);
    }
  } // class
  public class MyTextRenderListener : IRenderListener
  {
    /** The print writer to which the information will be written. */
    protected StreamWriter output;
    /**
     * Creates a RenderListener that will look for text.
     */
    public MyTextRenderListener(StreamWriter output)
    {
      this.output = output;
    }
    public void BeginTextBlock()
    {
      output.Write("<");
    }
    public void EndTextBlock()
    {
      output.WriteLine(">");
    }
    public void RenderImage(ImageRenderInfo renderInfo)
    {
    }
    public void RenderText(TextRenderInfo renderInfo)
    {
      output.Write("<");
      output.Write(renderInfo.GetText());
      output.Write(">");
    }
  } // class
} // namespace 

希望本文所述对大家的C#程序设计有所帮助。

更多精彩内容其他人还在看

winform用datagridview制作课程表实例

这篇文章主要介绍了winform用datagridview制作课程表的方法,实例分析了WinForm实现课程表的结构、数据库及调用技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

C#中winform控制textbox输入只能为数字的方法

这篇文章主要介绍了C#中winform控制textbox输入只能为数字的方法,包括使用keyPress事件限制键盘输入以及TextChanged事件限制粘贴等情况,来实现控制输入为数字的功能,需要的朋友可以参考下
收藏 0 赞 0 分享

C#省份城市下拉框联动简单实现方法

这篇文章主要介绍了C#省份城市下拉框联动简单实现方法,涉及字典的定义与索引的用法,是非常实用的技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

C#处理MySql多个返回集的方法

这篇文章主要介绍了C#处理MySql多个返回集的方法,实现了对处理MySql多个返回集进行封装,是非常实用的技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

C#无限参数的写法

这篇文章主要介绍了C#无限参数的写法,通过循环遍历再结合paras.Add方法实现无限参数的功能,是比较实用的技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

C#反射应用实例

这篇文章主要介绍了C#反射应用,实例分析了通过反射实现多系统数据库的配置方法,是比较实用的技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

C#窗体传值实例汇总

这篇文章主要介绍了C#窗体传值,实例形式汇总了静态变量传值、委托传值、对话框之间的传值等常见应用技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

C#把数组中的某个元素取出来放到第一个位置的实现方法

这篇文章主要介绍了C#把数组中的某个元素取出来放到第一个位置的实现方法,涉及C#针对数组的常见操作技巧,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#中Equality和Identity浅析

这篇文章主要介绍了C#中Equality和Identity浅析,本文先是讲解了Equality和Identity的定义,同时讲解了判断两个对象等价性的4种方法,需要的朋友可以参考下
收藏 0 赞 0 分享

在Linux上运行C#的方法

这篇文章主要介绍了在Linux上运行C#的方法,实例分析了Linux平台下Mono软件包的应用技巧,以及在此基础之上的C#运行方法,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多