PHP将PDF转为TXT文件,pdf转中文txt,pdf中文txt

pdf转中文txt,pdf中文txt

最近项目需要实现根据关键字搜索pdf内容,实现思路就是提取pdf文本,然后进行索引。

工具上选择:

IText 4.16之后采用agpl License,不能用作商用,而且转换中文会有乱码问题,

pdfsharp 采用MIT License,权限上没有问题,但是转换中文也会有乱码,

最后决定采用xpdf.

官网地址:https://www.xpdfreader.com/download.html

需要下载对应的xpdf包,本人采用的windows x64 版本

此外还要下载中文字符集包:简体中文字符集

包准备工作如下:

将xpdf文件夹copy到项目合适位置实现功能,这里只演示单个文件的转换工作,本人是将xpdf访问asp.mvc启动工程的根目录下进行测试的(文件路径有空格一定要加双引号)

1 public ActionResult Search(stringkeyword)2 {3 var rooPath = Server.MapPath("~/");4 ProcessStartInfo startInfo = newProcessStartInfo5 {6 UseShellExecute = false,7 WindowStyle =ProcessWindowStyle.Normal,8 RedirectStandardInput = true,9 RedirectStandardOutput = true,10 RedirectStandardError = true,11 CreateNoWindow = false,12 WorkingDirectory = string.Format("{0}xpdf", rooPath),13 //FileName = string.Format("{0}xpdf\\pdftotext.exe", rooPath)

14 FileName ="cmd.exe"

15 };16 //pdftotext.exe -layout -enc GBK 你不知道的JavaScript(下卷).pdf

17 var arguments = string.Format("/C pdftotext.exe -layout -enc GBK \"{1}\" \"{2}\"", rooPath, rooPath + @"xpdf\1.pdf", rooPath + @"xpdf\JavaScript.txt");18 //var arguments = string.Format(@"{0}1.pdf", rooPath);

19 startInfo.Arguments =arguments;20 var ss = string.Empty;21

22 using (Process process =Process.Start(startInfo))23 {24

25 process.OutputDataReceived += new DataReceivedEventHandler((object sender, DataReceivedEventArgs e) =>

26 {27 ss +=e.Data;28 });29 process.BeginOutputReadLine();30 using (var error =process.StandardError)31 {32 ss +=error.ReadToEnd();33 }34 //等待退出

35 process.WaitForExit();36 }37

38 returnJson(ss, JsonRequestBehavior.AllowGet);39 }

error 可能会有报字体的错误,但不影响转换,可以忽略:

Syntax Error: Unknown character collection 'DYNA-HK1'

Syntax Error: Unknown character collection 'DYNA-HK1'

下面再附上工程目录:

4778853676b5ffc3b84888fb632a245d.png

http://www.dengb.com/PHPjc/1345018.htmlwww.dengb.comtruehttp://www.dengb.com/PHPjc/1345018.htmlTechArticlepdf转中文txt,pdf中文txt 最近项目需要实现根据关键字搜索pdf内容,实现思路就是提取pdf文本,然后进行索引。 工具上选择: IText 4.16之后采...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值