c# - iTextSharp 4.1.6 西里尔文文本提取
问题描述
我正在使用 iTextSharp 4.1.6-LGPL。文本提取逻辑与此答案中描述的相同。
var path = @"D:\ru.pdf";
var reader = new PdfReader(path);
StringBuilder sb = new StringBuilder();
try
{
for (int page = 1; page <= reader.NumberOfPages; page++)
{
var cpage = reader.GetPageN(page);
var content = cpage.Get(PdfName.CONTENTS);
var ir = (PRIndirectReference)content;
var value = reader.GetPdfObject(ir.Number);
if (value.IsStream())
{
PRStream stream = (PRStream)value;
var streamBytes = PdfReader.GetStreamBytes(stream);
var tokenizer = new PRTokeniser(new RandomAccessFileOrArray(streamBytes));
try
{
while (tokenizer.NextToken())
{
if (tokenizer.TokenType == PRTokeniser.TK_STRING)
{
string str = tokenizer.StringValue;
sb.Append(str);
}
}
}
finally
{
tokenizer.Close();
}
}
}
}
finally
{
reader.Close();
}
var res= sb.ToString();
输入的 PDF 文件只包含一个单词:Слово
实际提取结果为:ru-RU\u0002Á\u0003#\u0003(\u0003\u000f\u0003(
我尝试了不同的编码技巧,但没有成功。
此外,最新版本的 iTextSharp 输出是正确的PdfTextExtractor
,它在 4.6.1 中不可用
有谁知道如何获得正确的输出?
解决方案
推荐阅读
- android - 运行颤振应用程序时出错
- java - 获取当前类的名称并使用该名称创建一个 txt
- search - 在引导表中搜索
- c# - 如何在 dotnet core 中将控制台应用程序作为 azure Web 作业和窗口服务运行
- vb.net - 登录在 VB.NET MVC 应用程序中的 IFrame 上不起作用
- php - 如何验证在运行 LAMP 堆栈的 AWS EC2 实例中使用 PHPMailer 发送的电子邮件?
- c# - 如何在 Tensorflow 中设置 batch_size 属性
- c# - .Net Core:我想在值所在的同一页面上创建表
- graphdb - 图形存储 api 基础 Uri
- azure - 如何从代码更改 local.settings.json?