我们有一个解析PDF文件并提取其中文本以进行索引等的系统。我们遇到的一个问题是Illustrator设置了包含“fi”的单词以对fi(单个字形)使用连字。
例如这条线...
“板凳和丰富的陶瓷砖。”
这样显示在我的Java调试器中
“等长椅和丰富的vitri\u001Fed瓷砖。”
看来\u001F是Adobe PDF文件用于连字“fi”的字符代码。我显然可以将\u001F的出现换成“fi”,但是有人知道一种可靠的方式来处理此问题以及类似的情况吗?
最佳答案
应该使用图形状态下 Activity 字体的编码以及与该字体关联的ToUnicode cmap,将用作PDF(“TJ,Tj等”)中“显示文本”运算符的操作数的字节序列转换为文本。某些字体包括ToUnicode cmap,它将0x001F代码(或用于字形的任何代码)映射到字符“f”和“l”。其他字体使用带有/Differences数组的编码,该编码将代码0x1F映射到字符/fl。必须对这些结构进行处理才能获得正确的结果。
关于java - 如何确定Java(及其他)中 "FI"的连字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10324807/