当前位置:   article > 正文

使用iTextSharp处理PDF_c# itextsharp.dll 读取pdf

c# itextsharp.dll 读取pdf

创建PDF文件

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using iTextsharp.text;
  5. using iTextsharp.text.pdf;
  6. using System.IO;
  7. using System.Windows.Forms;
  8. namespace ConsoleApplication4
  9. {
  10. class Program
  11. {
  12. static void Main(string[] args)
  13. {
  14. iTextsharp.text.Document pdf doc new Document();
  15. Pdfwriter pdf write Pdfwriter.GetInstance(pdf doc,new Filestream(@"I:\chap1.pdf",FileMode.Create));
  16. pdf doc.Open()
  17. pdf doc.Add(new Paragraph ("new pdf!"));
  18. pdf doc.close();
  19. MessageBox.Show ("OK!",Environment.UserName);
  20. Console.Read();
  21. }
  22. }
  23. }

iTextSharp库获取PDF文件页数

  1. using iTextsharp.text.pdf;
  2. 计算PDE文档页数
  3. private int pdf_pages (string filename)
  4. {
  5. PdfReader pdf new pdfReader (filename);
  6. return pdf.Numberofpages;
  7. }

iTextSharp库获取PDF文件信息

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using System.IO;
  9. using System.Text.RegularExpressions;
  10. using iTextSharp.text.pdf;
  11. namespace WindowsApplication2
  12. {
  13.     public partial class Form1 : Form
  14.     {
  15.         public Form1()
  16.         {
  17.             InitializeComponent();
  18.         }
  19.         private void btn_browse_Click(object sender, EventArgs e)
  20.         {
  21.             DialogResult dia_dir_res = folderBrowserDialog_dir.ShowDialog();
  22.             if (dia_dir_res == DialogResult.OK)
  23.             {
  24.                 tbx_dir.Text = folderBrowserDialog_dir.SelectedPath;
  25.                 //tbx_dir.Update();
  26.             }
  27.         }
  28.         private void btn_cancel_Click(object sender, EventArgs e)
  29.         {
  30.             Application.Exit();
  31.         }
  32.         private void btn_ok_Click(object sender, EventArgs e)
  33.         {
  34.             //判断文件夹是否存在
  35.             if (!Directory.Exists(tbx_dir.Text))
  36.             {
  37.                 MessageBox.Show("ERR: NO THIS DIR!");
  38.                 return;
  39.             }
  40.            
  41.             //提取文件夹中的PDF文件
  42.             string[] str_dirs = Directory.GetFiles(tbx_dir.Text, "*pdf");
  43.             if (str_dirs.Length == 0)
  44.             {
  45.                 MessageBox.Show("ERR: NO PDF FILE!");
  46.                 return;
  47.             }
  48.             // 将文件名中的空格改为-
  49.             string str_new_dir = null;
  50.             foreach (String str_dir in str_dirs)
  51.             {
  52.                 if (str_dir.Contains(" "))
  53.                 {
  54.                     str_new_dir = str_dir.Replace(" ", "-");
  55.                     File.Copy(str_dir, str_new_dir);
  56.                     File.Delete(str_dir);
  57.                 }
  58.             }
  59.            
  60.             //设置图纸类型
  61.             string str_drawing_type = null;
  62.             if (rbtn_final.Checked == true)
  63.                 str_drawing_type = "完工图纸";
  64.             else
  65.                 str_drawing_type = "审批图纸";
  66.             //重新提取文件夹中的PDF文件
  67.             str_dirs = Directory.GetFiles(tbx_dir.Text, "*pdf");
  68.             if (str_dirs.Length == 0)
  69.             {
  70.                 MessageBox.Show("ERR: NO PDF FILE!");
  71.                 return;
  72.             }
  73.            
  74.             //写入文件的字符串
  75.             string str_flush = null;
  76.             string str_drawing_name = null;
  77.             foreach (string str_dir in str_dirs)
  78.             {
  79.                 str_drawing_name = str_dir.Replace(tbx_dir.Text + @"\", "");
  80.                 str_drawing_name = str_drawing_name.Replace(".pdf", "");
  81.                 str_flush += str_drawing_name + "  ";
  82.                 str_flush += str_drawing_type + "  ";
  83.                 str_flush += pdf_pages(str_dir).ToString() + "  ";
  84.                 str_flush += "无" + System.Environment.NewLine;
  85.             }
  86.             //写入文件
  87.             StreamWriter sw = new StreamWriter(tbx_dir.Text + @"\pdf_pages.txt", false, System.Text.Encoding.Default);
  88.             sw.Write(str_flush);
  89.             sw.Close();
  90.             MessageBox.Show("OK!");
  91.         }
  92.         计算PDF文档页数
  93.         private int pdf_pages(string filename)
  94.         {
  95.             PdfReader pdf = new PdfReader(filename);
  96.             return pdf.NumberOfPages;
  97.         }
  98.     }
  99. }

 

提取PDF文本内容

提取PDF文件内容可以使用ITEXTSHARP进行。

1、定义读取器,解析器,读取策略,如下所示。

读取过程为:

a)通过指定文件路径生成读取器;

b)根据读取器生成解析器;

c)通过解析器的模板方法ProcessContent指定页码和相应 的读取方法生成读取策略(下图中的i为页码,第二个参数为读取方法类,前面尖括号内为该模板方法的类型指定,对于文本读取应为如下图所示的类型);

d)通过读取策略的GetResultantText方法获取指定页的全部文本内容;

  1. //定义读取文件和解析方法
  2. PdfReader pr new PdfReader (tbx pdf.Text.Trim());
  3. PdfReaderContentparser prcp new pdfReaderContentparser(pr);
  4. ITextExtractionstrategy ites;
  5. ites prcp.ProcessContent<simpleTextExtractionstrategy>(i,new SimpleTextExtractionstrategy ())
  6. str_pdf ites.GetResultantText();

e)以上方法需要使用命名空间如下所示:

具体示例如下:

  1. using iTextSharp.text.pdf;
  2. using iTextSharp.text.pdf.parser;
  3. using System.Text.RegularExpressions;
  4. //读取PDF文件
  5. PdfReader pr = new PdfReader(pdfPath);
  6. //PDF解析器
  7. PdfReaderContentParser prcp = new PdfReaderContentParser(pr);
  8. //PDF文本提取方法,其中的i是读取的PDF第几页,页码从1开始,总页数可以使用PdfReader.NumberOfPages获取
  9. ITextExtractionStrategy ites = prcp.ProcessContent<SimpleTextExtractionStrategy>(i, new SimpleTextExtractionStrategy());
  10. string pdfText = ites.GetResultantText();

 

分割PDF文件(提取指定页)

分割PDF文件可以使用ITEXTSHARP,其过程有如下几步(如下图所示):

1、定义空文档(ITEXTSHARP中的Document类型)并使用其Open方法打开;

2、使用Document对象和文件流(指定文件流模式和分割后的文件存储的路径)生成PdfCopy类的对象(该对象将Document对象与输出文件流关联);

4、定义PdfImportPage类对象,该类对象用于存储由源PDF中提取出来的一页PDF;

5、使用PdfCopy对象的GetImportedPage方法从一个PdfReader读取器(关联了源PDF文件)中提取一个页面(该方法的第二个参数);

6、将提取出的PdfImportPage类对象(一页PDF)通过PdfCopy对象的AddPage方法添加至相关联原Document中;

  1. Document doc new Document()
  2. PdfCopy pc new Pdfcopy (doc,new Filestream(tbx targpath.Text +@"\KC"str id ".pdf",System.IO.FileMode.Append));
  3. PdfImportedpage pip null;
  4. doc.Open()
  5. pip pc.GetImportedPage(pr,i);
  6. pc.Addpage(pip);

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/1018968
推荐阅读
  

闽ICP备14008679号