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 ...
随机推荐
- srop实战
前言 srop 的作用比较强,在条件允许的情况下,尽量使用它.题目来自于 i春秋的一个比赛. 题目链接: https://gitee.com/hac425/blog_data/blob/master/ ...
- Android MVP模式就是这么回事儿
MVP模式 概念就不说了,大家都懂.View层通过Persenter层相互通信,避免了View中大量的业务代码,而将其提取到Model中.其实简单的来说,就是通过接口回调,把业务分离出去.提高代码的可 ...
- 带你从零学ReactNative开发跨平台App开发(七)
ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...
- Django 简单用户注册
项目名 macboy app名 t1 1.项目macboy urls.py from django.conf.urls import url, include urlpatterns = [ url( ...
- Android组件系列----Activity的生命周期
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...
- python及pandas,numpy等知识点技巧点学习笔记
python和java,.net,php web平台交互最好使用web通信方式,不要使用Jypython,IronPython,这样的好处是能够保持程序模块化,解耦性好 python允许使用'''.. ...
- 模板与STL学习简单的笔记
一.如何进行泛型编程 C/C++是一种静态编程语言,必须需要把代码翻译成可执行的二进制可执行程序然后再运行,一旦编译好之后就不能再变了(数据类型也就必须确定下无法更改,因此要为每一种数据类型编写一份算 ...
- QT的时区转换以及使用注意事项
QDateTime localDate = QDateTime::fromString("2018-12-11 10:40:00", "yyyy-MM-dd hh:mm: ...
- Microsoft Teams 版本与语音落地介绍
我亲爱的小伙伴们,失踪人口回归啦~~ 今天和大家聊的是Microsoft Teams,Teams作为协作的集大成者,可以实现skype for Business的所有功能,还可以在teams里集合Of ...
- September 14th 2017 Week 37th Thursday
Don't let the past steal your present. 别让过去悄悄偷走了我们的当下. We take what we can get and make the best of ...