
我正在嘗試對我擁有的一堆相關 pdf 文件使用搜尋功能,但由於某種原因,當我搜尋像「the」這樣的簡單內容時,什麼也沒有出現。
以下是我在嘗試解決這個問題時學到的一些東西:
如果我將 PDF 中的貼上文字直接複製到搜尋框中,它將找到該字串,但鍵盤輸入不適用於搜尋。
作為當我從 PDF 複製到瀏覽器或任何文字操作應用程式時文字的樣子的範例,我複製了這樣的文字:「作為薪資部門的成員,您需要認識並理解以下內容:發生在薪資發放過程中。
這是我實際複製和貼上時的樣子:
l 3 „„ „„„„ !!!!! l
我不知道,也許這是一個程式設計問題?也許有一種方法可以打開pdf,將其轉換為我的鍵盤接受的相同類型的文本,以便我可以搜尋我需要的文本。
非常感謝所有幫助!
答案1
所有這些「字元」都在 Unicode「私人使用區域」中。與包含這些代碼點的字形的字體配合,它顯示為普通文字。
不過,混淆非常弱。我們來看一下
,據說是這樣的As
。代碼點是\uF041
和\uF073
。巧合的是,「拉丁大寫字母 A」有,\u0041
而「拉丁小寫字母 S」有\u0073
。
您只需要遍歷所有程式碼點並減去/添加0xF000
即可從混淆文字轉換為混淆文字。這將使您能夠從文件中複製文字或在文件中搜尋文字。
以下是一些用於解碼文字的 JavaScript 程式碼:
{
let source = " ";
let decoded = source.replace(/./g, c => {
let cc = c.codePointAt(0);
return cc > 0xF000 ? String.fromCodePoint(cc - 0xF000) : c;
});
console.log(decoded);
}
換個方式,僅針對單字:
{
let source = "understand";
let coded = source.replace(/./g, c => String.fromCodePoint(c.codePointAt(0) + 0xF000));
console.log(coded);
}
兩個片段均嚴格地基於給出的範例。如果存在其他編碼惡作劇,則代碼需要進一步調整。
您可以在瀏覽器的開發者控制台中使用這些程式碼片段,通常可以透過F12.