ios - 如何使用 QuartzPDF 在 PDF 中搜索非 ASCII 字符(西里尔字符)?

标签 ios pdf sdk full-text-search quartz-2d

我偶然发现使用 PDDScanner 在 PDF 中搜索西里尔字母(以及任何其他非 ASCII)字符。我使用的代码类似于 Randon ideas 博客中提到的 SO 代码。问题在于,对于西里尔文 PDF,扫描仪的输出完全是垃圾,无法解码为任何有意义的东西。西里尔文 PDF 中的英文字符可以完美搜索。所以,问题是当涉及到西里尔字母时,它是经过编码的,我们无法正确解码它。

我们在这里错过了什么?

提前感谢任何可以阐明该主题的人。

最佳答案

您是否尝试过通过不同的编码来推送该字符串?当我查看 NSString.h 时,我看到一些可疑的标记为“cyrillic”的东西,它在同一行上也有“Adobe”:)(即尝试 NSWindowsCP1251StringEncoding)

enum {
    NSASCIIStringEncoding = 1,      /* 0..127 only */
    NSNEXTSTEPStringEncoding = 2,
    NSJapaneseEUCStringEncoding = 3,
    NSUTF8StringEncoding = 4,
    NSISOLatin1StringEncoding = 5,
    NSSymbolStringEncoding = 6,
    NSNonLossyASCIIStringEncoding = 7,
    NSShiftJISStringEncoding = 8,          /* kCFStringEncodingDOSJapanese */
    NSISOLatin2StringEncoding = 9,
    NSUnicodeStringEncoding = 10,
    NSWindowsCP1251StringEncoding = 11,    /* Cyrillic; same as AdobeStandardCyrillic */
    NSWindowsCP1252StringEncoding = 12,    /* WinLatin1 */
    NSWindowsCP1253StringEncoding = 13,    /* Greek */
    NSWindowsCP1254StringEncoding = 14,    /* Turkish */
    NSWindowsCP1250StringEncoding = 15,    /* WinLatin2 */
    NSISO2022JPStringEncoding = 21,        /* ISO 2022 Japanese encoding for e-mail */
    NSMacOSRomanStringEncoding = 30,

    NSUTF16StringEncoding = NSUnicodeStringEncoding,      /* An alias for NSUnicodeStringEncoding */

    NSUTF16BigEndianStringEncoding = 0x90000100,          /* NSUTF16StringEncoding encoding with explicit endianness specified */
    NSUTF16LittleEndianStringEncoding = 0x94000100,       /* NSUTF16StringEncoding encoding with explicit endianness specified */

    NSUTF32StringEncoding = 0x8c000100,                   
    NSUTF32BigEndianStringEncoding = 0x98000100,          /* NSUTF32StringEncoding encoding with explicit endianness specified */
    NSUTF32LittleEndianStringEncoding = 0x9c000100        /* NSUTF32StringEncoding encoding with explicit endianness specified */
};

关于ios - 如何使用 QuartzPDF 在 PDF 中搜索非 ASCII 字符(西里尔字符)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10040136/

相关文章:

ios - 在 Objective C 中共享 wifi 配置

ios - 无法获取第一个单元格的正确索引

python - 如何将结果列表保存到文件

pdf - 表情符号不会编织到 PDF

java - Android SDK 水平 ScrollView

google-cloud-platform - 错误: (gcloud. auth.print-identity-token)无法从当前凭据获取身份 token

ios - Xcode 9 + Cocoapods : 'No such module' even though I can use the module

ios - 错误 ITMS-9000 : Invalid Bundle. bundle my_app.app 不支持 Info.plist 中指定的最低操作系统版本

java - 如何创建内容提供程序以通过隐式 Intent 与另一个应用程序共享 PDF 文件?

c++ - Visual Studio 吐出 .lib 而不是 .dll