pdf转中文txt
最近项目需要实现根据关键字搜索pdf内容,实现思路就是提取pdf文本,然后进行索引。
工具上选择:
IText 4.16之后采用agpl License,不能用作商用,而且转换中文会有乱码问题,
pdfsharp 采用MIT License,权限上没有问题,但是转换中文也会有乱码,
最后决定采用xpdf.
官网地址:https://www.xpdfreader.com/download.html
需要下载对应的xpdf包,本人采用的windows x64 版本
此外还要下载中文字符集包:简体中文字符集
包准备工作如下:
- 在合适目录创建xpdf文件夹
- 将下载的包解压并将bin64文件夹下的pdftotext.exe 拷贝到xpdf文件夹下
- 解压中文字符集后进入文件夹继续解压xpdf-chinese-simplified.tar,在解压后的xpdf-chinese-simplified文件夹拷贝到xpdf下
- 在xpdf文件夹下创建xpdf的字符加载文件xpdfrc
- 打开xpdf文件夹下的子文件chinese-simplified里的add-to-xpdfrc,将里面内容copy到xpdfrc
将xpdf文件夹copy到项目合适位置实现功能,这里只演示单个文件的转换工作,本人是将xpdf访问asp.mvc启动工程的根目录下进行测试的(文件路径有空格一定要加双引号)
public ActionResult Search(string keyword)
{
var rooPath = Server.MapPath("~/");
ProcessStartInfo startInfo = new ProcessStartInfo
{
UseShellExecute = false,
WindowStyle = ProcessWindowStyle.Normal,
RedirectStandardInput = true,
RedirectStandardOutput = true,
RedirectStandardError = true,
CreateNoWindow = false,
WorkingDirectory = string.Format("{0}xpdf", rooPath),
//FileName = string.Format("{0}xpdf\\pdftotext.exe", rooPath)
FileName ="cmd.exe"
};
//pdftotext.exe -layout -enc GBK 你不知道的JavaScript(下卷).pdf
var arguments = string.Format("/C pdftotext.exe -layout -enc GBK \"{1}\" \"{2}\"", rooPath, rooPath + @"xpdf\1.pdf", rooPath + @"xpdf\JavaScript.txt");
//var arguments = string.Format(@"{0}1.pdf", rooPath);
startInfo.Arguments = arguments;
var ss = string.Empty; using (Process process = Process.Start(startInfo))
{ process.OutputDataReceived += new DataReceivedEventHandler((object sender, DataReceivedEventArgs e) =>
{
ss += e.Data;
});
process.BeginOutputReadLine();
using (var error = process.StandardError)
{
ss += error.ReadToEnd();
}
//等待退出
process.WaitForExit();
} return Json(ss, JsonRequestBehavior.AllowGet);
}
error 可能会有报字体的错误,但不影响转换,可以忽略:
Syntax Error: Unknown character collection 'DYNA-HK1'
Syntax Error: Unknown character collection 'DYNA-HK1'
下面再附上工程目录:

pdf转中文txt的更多相关文章
- Python 将pdf转换成txt(不处理图片)
上一篇文章中已经介绍了简单的python爬网页下载文档,但下载后的文档多为doc或pdf,对于数据处理仍然有很多限制,所以将doc/pdf转换成txt显得尤为重要.查找了很多资料,在linux下要将d ...
- xhtmlrenderer渲染pdf,中文换行
在实际开发中,发现在table中显示中文,渲染出来的pdf,中文内容不自动换行.经过搜索发现了一种解决方案,如下: 重写Breaker,修改right计算方式 /* * Breaker.java * ...
- iReport 5.6.0 PDF导出中文不显示问题 解决方案
问题描述 iReport 5.6.0 PDF格式导出,中文不显示. 报错信息如下: Error exporting print... Could not load the following font ...
- c#上传文件并将word pdf转化成txt存储并将内容写入数据库
c#上传文件并将word pdf转化成txt存储并将内容写入数据库 using System; using System.Data; using System.Configuration; using ...
- 解决python3读写中文txt时UnicodeDecodeError : 'ascii' codec can't decode byte 0xc4 in position 5595: ordinal not in range(128) on line 0的问题
今天使用python3读写含有中文的txt时突然报了如下错误,系统是MAC OS,iDE是pycharm: UnicodeDecodeError : 'ascii' codec can't decod ...
- ABP进阶教程10 - PDF导出中文乱码
点这里进入ABP进阶教程目录 问题描述 功能按钮 - 导出PDF,中文信息导出为乱码. 解决方案 导出PDF是通过pdfmake.js实现的. 检查发现是pdfmake引用的vfs_fonts.js字 ...
- ASP.Net MVC——使用 ITextSharp 完美解决HTML转PDF(中文也可以)
前言: 最近在做老师交代的一个在线写实验报告的小项目中,有这么个需求:把学生提交的实验报告(HTML形式)直接转成PDF,方便下载和打印. 以前都是直接用rdlc报表实现的,可这次牵扯到图片,并且更为 ...
- 使用TCPDF插件生成pdf以及pdf的中文处理
目录(?)[+] 多种多样的pdf开发库 WKHTMLTOPDF 2FPDF 3TCPDF 中文问题 做了这么多年项目,以前只是在别人的项目中了解过PHP生成pdf文件,知道并不难,但是涉及到了p ...
- Python读取中文txt文件错误:UnicodeEncodeError: 'gbk' codec can't encode character
with open(file,'r') as f: line=f.readline() i=1 while line: line=line.decode('utf-8') line=f.readlin ...
随机推荐
- 修改spfile位置
虽然很多地方不建议这么做,可是有HA.oracle软件建在本地盘的情况下,如果spfile放在dbs下,会导致每次修改spfile都要去手动copy到备机上,这是很麻烦的一件事情,所以我把spflie ...
- vuejs electron webpack集成使用
传统的vue SPA页面在浏览器环境中使用,但是有的时候我们还希望能够做成一个类似于桌面的app在PC上使用,希望不仅可以使用所有的浏览器SPA的功能,你也可能外加host os的功能,比如文件的本地 ...
- Error:Could not find com.android.tools.build:gradle:3.0.0
Error:Could not find com.android.tools.build:gradle:3.0.Searched in the following locations: file ...
- 使用GPUImage渲染图片教程
使用GPUImage渲染图片教程 Prepare - 准备 GPUImage开源库并不像普通的开源库那样子,拖进你的工程中就可以用.以下将详细的告诉你如何将GPUImage导入到你的工程当中. 首先上 ...
- 便利的操作plist文件
便利的操作plist文件 升级iOS9了,网络被强制切换成https了,你需要更新你的plist的文件才能够支持http,正常的做法是这样子的: 过程是不是挺繁琐的呢?如果你新建的另外一个工程,里面还 ...
- [翻译] USING GIT IN XCODE [2] 在XCODE中使用GIT[2]
USING GIT IN XCODE http://www.cimgf.com/2013/12/10/using-git-in-xcode/ USING AN EXISTING REMOTE PROJ ...
- 【Excel】SUMIF的错位问题
具体情况是这样的: 如图,我们需要求得“一车间”的“发生额总计”,所以我们选择使用SUMIF函数 如果是这样填写函数参数的话,那你的计算结果就会有问题 就会出现下图这样的情况,“发生额总计”为34.8 ...
- November 8th 2016 Week 46th Tuesday
When he can't, he tries a new way to share a new pair. 当他做不到时,他尝试一种新的方式:分享. To share, your failing e ...
- app数据加密方法
由于项目涉及到注册和登录,所以我了解一下现在app使用比较广泛的几种密码加密方法,可以当作参考,以下都是在python3.5的环境下使用这些算法的例子. 1.base64 Base64是一种基于64个 ...
- [T-ARA][Bo Peep Bo Peep]
歌词来源:http://music.163.com/#/song?id=22704468 作曲 : 新沙洞老虎/崔圭成 [作曲 : 新沙洞老虎/崔圭成] 作词 : 新沙洞老虎/崔圭成 [作词 : 新沙 ...