首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

求大神们看一个很简单的pdf转txt的c#编程实现有关问题(100分)

2012-09-11 
求大神们看一个很简单的pdf转txt的c#编程实现问题(100分)小弟最近在做pdf转txt的程序,用了pdfbox,效果不错

求大神们看一个很简单的pdf转txt的c#编程实现问题(100分)
小弟最近在做pdf转txt的程序,用了pdfbox,效果不错,但效率不行,用了itextsharp,效果不行,然后就又试了下面程序中的xpdf,这个程序效果和效率都相当牛X,但是却不能集成到一个多控件的应用程序中,不多说了,直接看代码:
第一段代码运行正常:

C# code
namespace 利用xpdf提取pcf文档的txt{    public partial class Form1 : Form    {           public Form1()        {            InitializeComponent();        }        private void button1_Click(object sender, EventArgs e)        {                      string path = "pdftotext.exe";//这是debug包             //下的exe,利用它来做转化得到输出            string filename = @"d:\我的文档\桌面\test.pdf";//这是一个pdf文件            //得用process类启动外部程序            Process p = new Process();            p.StartInfo.FileName = path;            p.StartInfo.Arguments = string.Format("-nopgbrk " + filename + " -") ;//pdftoexe执行所需的参数,    //nopgbrk表示没有分页标记,    //“-”表示直接得到流输出            p.StartInfo.UseShellExecute = false;            p.StartInfo.RedirectStandardOutput = true;            p.StartInfo.RedirectStandardError = true;            p.StartInfo.CreateNoWindow = true;                       p.Start();            //输出到textBox1中            textBox1.Text=p.StandardOutput.ReadToEnd();                        p.Close();        }    }}

同样的代码只做了下面这一点修改,就得不到输出了,调试的时候textBox1.Text显示为空,我看了老半天都不知道到底错在哪里?为什么上面好好的输出到下面这程序中就得不到了呢?
C# code
namespace 利用xpdf提取pcf文档的txt{    public partial class Form1 : Form    {        public OpenFileDialog ofdlg = new OpenFileDialog();//多了一个打开文件对话框        public string filename;        public Form1()        {            InitializeComponent();        }        private void button1_Click(object sender, EventArgs e)        {            ofdlg.Filter = "pdf文件(*.pdf)|*.pdf";            if (ofdlg.ShowDialog() == DialogResult.OK)            {                filename = string.Format("{0}", ofdlg.FileName);            }                    }        private void button2_Click(object sender, EventArgs e)        {            Process p = new Process();            string path = "pdftotext.exe";            p.StartInfo.FileName = path;            p.StartInfo.Arguments = string.Format("-nopgbrk " + filename + " -");//调试的时候,看到filename的   //值是正常的            Console.WriteLine(string.Format("-nopgbrk " + filename + " -"));            p.StartInfo.UseShellExecute = false;                      p.StartInfo.RedirectStandardOutput = true;            p.StartInfo.RedirectStandardError = true;            p.StartInfo.CreateNoWindow = true;//同样的程序同样的参数            p.Start();            textBox1.Text = p.StandardOutput.ReadToEnd();             p.Close();        }            }}



小弟很是郁闷,不知道是哪方面出了问题,是线程之间的通信还是什么,望各位大神们能稍微抽出点点时间,解在下心中困惑,在下感激不尽,感激不尽(只有分100双手相送)!


[解决办法]
p.StartInfo.Arguments 参数不能出现空格,你的filename是否存在空格呢?如果有空格就需要转换一下了。
[解决办法]
1) 检查filename是否存在空格,有的话需要用单引号括起来
2) 命令提示符下 直接执行DOS你选择的pdf文件 是否有错误

热点排行