- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 PDFKitten 搜索功能,发现在此特殊字符无法搜索(例如,在 PDF 中说有一个单词 RAVI's,如果我搜索该单词,它将返回 NULL 值。请建议我如何做我解决了这个问题。
在scanner.m中有一个函数didScanString
void didScanString(CGPDFStringRef pdfString, Scanner *scanner)
{
NSString *tempStr = (NSString *)CGPDFStringCopyTextString(pdfString);
NSLog(@"ScanString==%@",tempStr);
NSString *string = [[scanner stringDetector] appendPDFString:pdfString withFont:[scanner currentFont]];
NSLog(@"didScanString====>>>%@",string);
[ss appendString:string];
[[scanner content] appendString: string];
//NSLog(@"TOTAL: %@",[scanner content]);
}
例如搜索 PDF 字符串是 MGR KL445 的在上面的函数中,两个 NSLog 输出第一个显示 ScanString==MGR KL445™s第二个什么也不会显示。
最佳答案
您的搜索文本 RAVI's 包含一个垂直撇号;您是否检查过 PDF 是否不包含该字符的向前或向后倾斜版本?那些不同的版本毕竟有不同的字符代码。
在问题的上下文中 PDFKitten is highlighting on wrong position ,看起来该库将连字返回为单个连字字符而不是“去连字”字符组。如果您的文本包含连字,这可能就是原因。
在同一个问题的上下文中,PDFKitten 字体数据解析结果在某些方面存在缺陷。针对这个问题,针对此类缺陷的解决方法已添加到代码中,在我看来,它并没有解决一般情况,只是解决了一些特殊情况,请参见。我在那里的回答中的建议。
此外,一些字体根本不包含将其字形映射回 unicode 字符的信息。你说特殊字符无法搜索 --- 也许这些特殊字符取自不支持解析的不同字体。
理论上,撇号甚至可能是使用图形、非文本运算符绘制的。在这种情况下,文本解析将找不到它。
如果这些想法都不能解释您的情况(或者您无法检查它们是否能解释),请提供示例 PDF 以供检查。
编辑(考虑到您的 Brivo MR355 copy.pdf 示例文件)
我认为撇号又是个麻烦事,这次是在 MR355 中。原始页面内容有两个准确度,
/TT1 1 Tf
0.559 0 Td
(Brivo MR355\222s Ready Bar technology replaces 30 complex inputs with a single control, simplifying scan optimization )Tj
和
/TT1 1 Tf
0.559 0 Td
(Brivo MR355\222s Ready Interface)Tj
两次都使用了字体资源/TT1,两次都将撇号编码为\222,它是十进制 146 的八进制,quoteright 在 WinAnsiEncoding 中,trademark PDF文档编码。
/TT1是
/LastChar 146
/BaseFont /REEDOQ+GEInspira
/Type /Font
/Subtype /TrueType
/Encoding /WinAnsiEncoding
/Widths [232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 530, 0, 0, 530, 0, 530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 570, 0, 0, 0, 0, 0, 0, 243, 0, 0, 0, 764, 0, 0, 0, 0, 556, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 545, 545, 482, 545, 509, 297, 545, 544, 210, 0, 0, 210, 836, 544, 537, 545, 545, 341, 437, 317, 544, 474, 736, 471, 474, 427, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 190]
/FontDescriptor 32 0 R
/FirstChar 32
/LastChar 是 146 和/Encoding 是/WinAnsiEncoding 应该使 PDFKitten 很容易将\222 识别为 quoteright 字符。
由于您的一条评论表明您没有使用最新的 PDFKitten 版本,我也会根据旧版本进行代码分析。
PDFKitten 在解析该字体字典(Font.m 中的 setEncodingNamed
)时识别字符串“WinAnsiEncoding”,并将枚举 CharacterEncoding (Font.h) 中的 WinAnsiEncoding (3) 存储在 self.encoding 中;稍后,当将原始 PDF 数据转换为 unicode(SimpleFont.m 中的 stringWithPDFString
)时,它会调用并返回
NSString *string = [[NSString alloc] initWithData:rawBytes encoding:self.encoding];
但是nsstring.h映射中的编码常量
NSJapaneseEUCStringEncoding = 3,
因此,这里的 PDFKitten 尝试将原始数据解码为 EUC-JP字节值 >127 的编码应该会失败,而字节值 <= 127 被解释为 ASCII 字符。
NSString initWithData returns nil if the initialization fails for some reason (for example if data does not represent valid data for encoding) .因此,PDFKitten 在处理 PDF 数据时丢弃了整个片段。
乍一看相关代码部分在当前代码库中仍然是相同的。因此,您可能想在 PDFKitten 网站上报告有关 /Encoding/WinAnsiEncoding
字体的字符代码 > 127 的问题,并且很可能还有 `/Mac*Encoding'
关于ios - 在 PDFKitten 中无法进行特殊字符搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14437450/
我以一种特殊的方式收到以下错误。 The point at which the driver is attempting to click on the element was not scrolle
我有一些包含如下方法的编译库: public boolean foo(String userID) { Class ntSystemClass = Thread.currentThread()
假设我有下表 name | genre --------------------- book 1 | scifi book 2 | horror book 3
我正在用代码进行语言翻译。 self.title.text = [NSString stringWithFormat:NSLocalizedString(@"Q%ld", nil), (long)qu
我想这样做,但到目前为止,我所拥有的只是: print("Will you go out with me?") 我希望代码能够正常工作,以便人们可以回答“是/否”,如果回答是"is",则将返回一条消息
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: How can I decode html characters in c#? 我有来自 HTML 的字符,
我想在 JavaScript 中对以下形式的字符串执行 ucwords(),它应该返回 Test1_Test2_Test3。 我已经在 SO 上找到了一个 ucwords 函数,但它只需要空格作为新词
“任何长度的正数表示为数字字符数组,因此介于‘0’和‘9’之间。我们知道最重要的密码位于数组索引 0 的位置。 例子: - 号码是 10282 - 数组将是数字 = [1,0,2,8,2] 考虑到这一
我目前正在开发一个显示特殊 unicode 字符(例如 ꁴ)的应用 现在我遇到了在旧设备上无法显示这些符号的问题。我如何知道它是否适用于当前设备? 我是否必须为每个 SDK 版本创建一个虚拟 Andr
在 HTML、XML 和部分 DTD 中,有两种特殊的标记结构: 以感叹号开头的标签结束,例如 和 以问号开头的标签 ,例如 和 我的问题是,这些构造类型中的每一种是否都有不同的名称,或者我是否必
我目前正在用 python 构建一个 shell。shell 可以执行 python 文件,但我还需要添加使用 PIPE 的选项(例如“|”表示第一个命令的输出将是第二个命令的输入)。 为了做到这一点
我的 MVC 项目中的路由无法正常工作... 我希望我所有的 View 都在 Views > Shared 文件夹中,如下所示: Error.cshtml (default) Index.cshtml
我有一个函数: public static ImageIcon GetIconImageFromResource(String path){ URL url = ARMMain.class.g
好的,所以我想在我的 html 页面中包含下面的字符。看起来很简单,只是我找不到它们的 HTML 编码。 注意:我想在没有大小元素的情况下执行此操作,纯文本就可以了 ^_^。 干杯。 最佳答案 你可以
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 3 年前。
我是 C# 的新手,正在尝试使用 ASP.Net GridView(框架 3.5),当 gridView 文本包含以下内容时,我发现了一个大问题: ñ/Ñ/á/Á/é/É/í/Í/ó/Ó/ú/Ú or
在 Java 中,我尝试编写一个正则表达式来匹配特殊类型的 HTTP URL: http:///# 所以字符串有 4 段: 字符串文字:“http://”;那么 任意 1 个以上字符的字符串;那么 字
当我写查询时,我在表中有“to”列 SELECT to FROM mytable mysql_error 返回错误,如果将单词to插入``引号,即 SELECT `to` FROM mytable 查
我遇到了一个问题。事实上,我使用越南语文本,我想找到每个包含大写字母(大写字母)的单词。当我使用“re”模块时,我的函数 (temp) 没有捕捉到像“Đà”这样的词。另一种方法 (temp2) 是一次
在我的文本中,我想用一个空格替换以下特殊字符: symbols = ["`", "~", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "_",
我是一名优秀的程序员,十分优秀!