2011年5月14日星期六

  C#读写PDF文件

    制作PDF文件我用的是IText,网络上有苟安延的中文教程,讲的比较详细。利用ITEXT读取PDF文件也是可以的,本人没有摸索成功,用PDFBOX读取的。用这两个插件都需要在引用里添加,并在源文件中用using包含。ITEXT的排版我还没有解决,现在暂时用插入空格的方法来代替,应该直接有调整文本居左,居右的方法的。官方网站有ITEX IN ACTION这本书,讲的比较详细,使用JAVA语言介绍的,没有中文版本。

ITEXT生成PDF:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using iTextSharp.text;using iTextSharp.text.pdf;using System.IO;namespace MakePdf{    class Program    {        public static void MakPdf(string LogText, string FilePath)//FilePath“/”需要转义        {               Document document = new Document(PageSize.A4);                DateTime Tnow = DateTime.Now;                string LogTime = Convert.ToDateTime(Tnow).ToString("yyyy-MM-dd  HH-mm-ss"); //LogTime日志文件名                string TextTime = Tnow.ToString();    //写入PDF的时间                                                 FilePath = FilePath + "\\"+LogTime + ".pdf";                PdfWriter.getInstance(document, new FileStream(@FilePath, FileMode.Create));    //以系统时间命名                document.Open();                BaseFont FontSong = BaseFont.createFont(@"c:\windows\fonts\SIMSUN.TTC,0", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);  //字体设置                Font FontTitle = new Font(FontSong, 16);                               Paragraph Title = new Paragraph("RFID安全漏洞扫描报告", FontTitle);                Title.IndentationLeft = 175;//在段落左边插入175个空格                Title.setAlignment("3");                document.Add(Title);                                Font FontText = new Font(FontSong, 12);                    string PTextTime = "日期:" + TextTime;                Paragraph Date = new Paragraph(PTextTime, FontText);                Date.IndentationLeft = 370;                document.Add(Date); //pdf文件中的时间以冒号显示                //LogText = "主窗口提供的日志内容!";//正文                LogText = "    " + LogText;                document.Add(new Paragraph(LogText, FontText));                        document.Close();        }                static void Main(string[] args)        {            string a = "主窗口提供的日志内容" ;            string b = "d:";            MakPdf(a, b);        }    }}
 
捕获 

用PDFBOX读取PDF:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using org.pdfbox.pdmodel;using org.pdfbox.util;using System.IO;namespace ReadPdf{    class Program    {             public static string Pdf2txt(FileInfo PdfFile)            {                PDDocument doc = PDDocument.load(PdfFile.FullName);                PDFTextStripper PdfStripper = new PDFTextStripper();//参加PDF获取器                string LogText = PdfStripper.getText(doc);//获取文本                return LogText;            }        static void Main(string[] args)        {            string LogText = Pdf2txt(new FileInfo(@"d:\\2011-05-14  15-56-51.pdf"));            Console.WriteLine(LogText);            Console.ReadLine();        }    }}

没有评论:

发表评论