%20en%20este%20PDF%20en%20particular%3F.png)
Estoy intentando utilizar la función de búsqueda en un montón de documentos PDF relacionados que tengo, pero por alguna razón, cuando busco algo simple como "el", no aparece nada.
Aquí hay algunas cosas que aprendí tratando de resolver esto:
Si copio y pego texto directamente desde el PDF en el cuadro de búsqueda, encontrará esa cadena de caracteres, pero la entrada del teclado no funciona para la búsqueda.
Como ejemplo de cómo se ve el texto cuando copio del PDF a mi navegador o cualquier aplicación de manipulación de texto, he copiado un texto que dice: "Como miembro del departamento de nómina, debe reconocer y comprender los diversos procesos que ocurren durante el proceso de nómina."
Así es como se ve cuando copio y pego:
No lo sé, ¿tal vez sea una cuestión de codificación? Tal vez haya una manera de abrir el pdf de manera que lo convierta al mismo tipo de texto que acepta mi teclado para que pueda buscar el texto que necesito.
¡Toda ayuda es muy apreciada!
Respuesta1
Todos estos “caracteres” están en el “Área de uso privado” Unicode. Junto con una fuente que contiene glifos para estos puntos de código, aparece como texto normal.
Sin embargo, la ofuscación es muy débil. Echemos un vistazo a
lo que supuestamente es As
. Los puntos del código son \uF041
y \uF073
. Casualmente, la “letra latina mayúscula A” tiene \u0041
mientras que la “letra latina minúscula S” tiene \u0073
.
Solo necesita revisar todos los puntos del código y restar/sumar 0xF000
para transformar desde/hacia el texto ofuscado. Esto le permitirá copiar texto del documento o buscar texto en el documento.
Aquí hay un código JavaScript que decodificará el texto:
{
let source = " ";
let decoded = source.replace(/./g, c => {
let cc = c.codePointAt(0);
return cc > 0xF000 ? String.fromCodePoint(cc - 0xF000) : c;
});
console.log(decoded);
}
Para ir al revés, solo para palabras sueltas:
{
let source = "understand";
let coded = source.replace(/./g, c => String.fromCodePoint(c.codePointAt(0) + 0xF000));
console.log(coded);
}
Ambos fragmentos se basan estrictamente en el ejemplo dado. Si hay otras travesuras de codificación presentes, el código requiere ajustes adicionales.
Puede utilizar estos fragmentos en la consola de desarrollador de su navegador, a la que normalmente se puede acceder a través de F12.