怎么读取PDF文件内容才不是乱码

Cosmo 2013-10-08 05:41:52
PDDocument doc = PDDocument.load(file.FullName);
PDFTextStripper pdfStripper = new PDFTextStripper();
string text = pdfStripper.getText(doc);
StreamWriter swPdfChange = new StreamWriter(txtfile.FullName, false, Encoding.GetEncoding("gb2312"));
swPdfChange.Write(text);
swPdfChange.Close();
这种方式能读出来中文。但不能保存到数据库中,因为内容太长了。
我想通过二进方式保存但读出来后都是乱码
FileStream f = new FileStream(string.Format(strFilePath, strFileName), FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(f);
byte[] buffer = br.ReadBytes(Convert.ToInt32(f.Length));
return buffer;
...全文
1104 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cosmo 2013-10-09
  • 打赏
  • 举报
回复
引用 8 楼 rtdb 的回复:
有Lucene的话,文本内容就可以放Lucene里,没必要存入数据库的
文件非常多,如果每个文件在搜索的时候再去把内容读出来这样性能非常慢的。
rtdb 2013-10-09
  • 打赏
  • 举报
回复
有Lucene的话,文本内容就可以放Lucene里,没必要存入数据库的
Cosmo 2013-10-09
  • 打赏
  • 举报
回复
引用 6 楼 rtdb 的回复:
二进制流进数据库的话,你找图片文件存数据库的例子。 不过若是“因为内容太长了”,那转二进制存是没有意义的,这并不能节省空间,字符串进了数据库后也是要存为二进制流的 所以要回到基本问题: “因为内容太长了”是什么意思,到底是多长,10M? 数据库开了多大的字段放不下?
非常感谢你的热心回答。 我是做全文搜索功能,就一堆文件要通过关键字把这个文件这部分内容抓取出来给用户。 我通过Lucene.net+PanGu分词实现。 现在遇到的问题是要把PDF文件中内容取出来(保存到数据库文本方式是保存不了故我内容转为二进制保存,但我后面想把二进制转换为文本,怎么搞都是乱码)和PanGu分词进行比较才行搜索。
rtdb 2013-10-09
  • 打赏
  • 举报
回复
二进制流进数据库的话,你找图片文件存数据库的例子。 不过若是“因为内容太长了”,那转二进制存是没有意义的,这并不能节省空间,字符串进了数据库后也是要存为二进制流的 所以要回到基本问题: “因为内容太长了”是什么意思,到底是多长,10M? 数据库开了多大的字段放不下?
Cosmo 2013-10-09
  • 打赏
  • 举报
回复
引用 4 楼 rtdb 的回复:
再说了,二进制入,当然也应是二进制出, 当字符显示的时候不转换当然会是乱码
不保存二进制那怎么保存内容,我把二进制流转换回来就是乱码了。什么编码都尝试过。貌似都不行。。
rtdb 2013-10-09
  • 打赏
  • 举报
回复
再说了,二进制入,当然也应是二进制出, 当字符显示的时候不转换当然会是乱码
rtdb 2013-10-09
  • 打赏
  • 举报
回复
二进制方式保存省不了什么空间的,你搞错方向了
Cosmo 2013-10-09
  • 打赏
  • 举报
回复
引用 1 楼 liuxiaoyi666 的回复:
活学活用啊 PDFParser parser = new PDFParser( is ); load 一个stream对象 然后做反解析就可以了
我太菜了,没听懂,是否可以上点实例或者详细点。
rtdb 2013-10-09
  • 打赏
  • 举报
回复
引用 9 楼 chengguangsheng 的回复:
[quote=引用 8 楼 rtdb 的回复:] 有Lucene的话,文本内容就可以放Lucene里,没必要存入数据库的
文件非常多,如果每个文件在搜索的时候再去把内容读出来这样性能非常慢的。[/quote] 这么说吧,Lucene专业就是干这个的, 至于非结构化数据存入数据库,见过太多了,基本上是等死的节奏。 等数据量上来,你就知道数据库会慢成什么样了。
  • 打赏
  • 举报
回复
活学活用啊 PDFParser parser = new PDFParser( is ); load 一个stream对象 然后做反解析就可以了

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧