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 ...
随机推荐
- Android手势密码实现
图 二.实现思路: 1. 正上方的提示区域,用一个类(LockIndicator.java)来实现,自定义view来绘制9个提示图标: 2. 手势密码绘制区域,用一个类(GestureContentV ...
- centos安装redis,并设置开机自动启动项
安装Redis 1.下载.解压.编译.安装 下载.解压 https://redis.io/download 官网下载redis的*.tar.gz安装包.版本可根据自己需要下载. tar -zxvf r ...
- 回归JavaScript基础(七)
主题:引用类型Function的介绍. 今天首先说的就是Function类型.下面就是定义函数的两种方法,第一种使用函数声明语法定义,第二种使用函数表达式定义.这两种定义函数的方式几乎没有什么区别. ...
- innodb crash
今天上午同事处理了一个innodb crash 的问题,没有备份,如何恢复? 查看日志: 180928 8:42:44 InnoDB: Error: page 163855 log sequence ...
- [翻译] UPCardsCarousel
UPCardsCarousel UPCardsCarousel is a carousel with a cards based UI for iOS. UPCardsCarousel是一个旋转木马效 ...
- 用以替换系统NSLog的YouXianMingLog
用以替换系统NSLog的YouXianMingLog 这是本人自己使用并改良的用以替换系统NSLog的类,非常好用,以下是使用示例,现在开源出来并提供源码,好用的话顶一下吧^_^ 效果: YouXia ...
- Python学习---IO的异步[twisted模块]
安装twisted模块 Linux: pip3 install twisted Window: a. http://www.lfd.uci.edu/~gohlke/pythonlibs/#twiste ...
- Windows删除指定时间之前指定后缀名的文件
时间判定标准:文件创建时间 实例:删除 D:\backup 目录下(包括子文件夹),7天前 “.bak”后缀名的文件及30天前后缀名为 “*.log” 的文件 批处理: @echo off echo ...
- Http协议浅析
目录 Http协议浅析 http协议简介 http协议特性 http请求协议与响应协议 请求协议 响应协议 响应状态码 请求URI定位资源 HTTP方法 GET:获取资源 POST:传输实体主体 PU ...
- MySQL 索引的介绍与应用
Mysql索引 一. mysql 索引 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息. 二:MySQL索引类型 按存储结构区分:聚集索引(又称聚类索引,簇 ...