Un problema "raro, raro". Copiar texto desde documento en PDF.

23/09/2006 - 23:05 por RAlvare | Informe spam
Tengo un documento en formato PDF. La mayor parte del texto se puede
copiar en el portapapeles de Windows con el lector Acrobat Reader, pero hay
partes, las que más me interesan pues contienen trozos de código fuente que
quiero copiar al portapapeles, que no deben estar codificadas en ningún
formato estandar pues me encuentro con que lo que en el texto del pdf es
p.ej. una "a", cuando lo convierto a decimal con el código que vereis
despues, en unas partes del documento es 2, 6, 8, 12 ... cuando lo normal es
que sea "a" = 97.

Con los trozos de texto que se pueden copiar y pegar sin errores me cuadra a
la perfección la
codificación a = 97, b= 98, A = 65, B = 66, etc.

No le veo relación secuencial alguna a los caracteres, en unas zonas del pdf
sucede:
a = 6, b = 38, c = 28, d = 25, e = 8, f = 39, g = 7
en otras: a = 9, b, c= 30...

¿Cual es la explicación a esto? ¿Codificación no estandar en esas zonas?


private void button1_Click(object sender, EventArgs e)

{

string TextoEnPortapapeles = Clipboard.GetText();

char[] ArrayBytes = TextoEnPortapapeles.ToCharArray();

foreach (byte bb in ArrayBytes)

{

//Convierte cada byte del ArrayBytes en su representación decimal

this.richTextBox1.Text += "" + bb.ToString();

}


}

RAlvare.
Lugones.Asturias.

Preguntas similare

Leer las respuestas

#1 Miguel Ortiz Falcón
24/09/2006 - 07:03 | Informe spam
Hola RAlvare,

primero que nada pienso que es un poco aventurado decir que Adobe no siga
estándares, puesto que es un formato de documentos portables que por algo
tiene tanta compatibilidad y se pueden ver en gran parte de diversos
dispositivos. En su caso tendrá sus estándares impuestos o no por ellos.

Cuando tu guardas, un documento desde un editor de palabras, has de saber
que no se guarda solo el texto sino se guarda también diversa información que
describe la apariencia y formato de ese texto, así como otras cosas más. Lo
mismo ocurre en un PDF, si tu abres un PDF con un bloc de notas por ejemplo,
te encontrarás que no solo tienen el texto, sino tienes muchas cosas más:
"caracteres raros", números, códigos, etc, etc. Pues con la misma idea es
información que sirve para que el documento pueda verse correctamente.

Cuando tu copias en el portapapeles una parte de un documento desde un
editor de palabras, se copia todo, tanto texto como información extra, de
modo que cuando pegues eso en otro documento se pegará igual. Lo mismo pasa
con un PDF, cuando copias, se copia todo, no nada más el texto.

Por eso es la razón de que no solo leas códigos de letras como tu esperas
que estén, en su caso te recomiendo que uses ensamblados dedicados para hacer
eso
estos algunos de ellos:

http://www.pdftron.com/net/
http://web6.codeproject.com/showcas...nts.asp?df0&forumid)527&exp=0&select15428

Saludos...!

Miguel Ortiz Falcón



"RAlvare" wrote:

Tengo un documento en formato PDF. La mayor parte del texto se puede
copiar en el portapapeles de Windows con el lector Acrobat Reader, pero hay
partes, las que más me interesan pues contienen trozos de código fuente que
quiero copiar al portapapeles, que no deben estar codificadas en ningún
formato estandar pues me encuentro con que lo que en el texto del pdf es
p.ej. una "a", cuando lo convierto a decimal con el código que vereis
despues, en unas partes del documento es 2, 6, 8, 12 ... cuando lo normal es
que sea "a" = 97.

Con los trozos de texto que se pueden copiar y pegar sin errores me cuadra a
la perfección la
codificación a = 97, b= 98, A = 65, B = 66, etc.

No le veo relación secuencial alguna a los caracteres, en unas zonas del pdf
sucede:
a = 6, b = 38, c = 28, d = 25, e = 8, f = 39, g = 7
en otras: a = 9, b, c= 30...

¿Cual es la explicación a esto? ¿Codificación no estandar en esas zonas?


private void button1_Click(object sender, EventArgs e)

{

string TextoEnPortapapeles = Clipboard.GetText();

char[] ArrayBytes = TextoEnPortapapeles.ToCharArray();

foreach (byte bb in ArrayBytes)

{

//Convierte cada byte del ArrayBytes en su representación decimal

this.richTextBox1.Text += "" + bb.ToString();

}


}

RAlvare.
Lugones.Asturias.





Respuesta Responder a este mensaje
#2 RAlvare
24/09/2006 - 16:28 | Informe spam
"Miguel Ortiz Falcón" escribió en el mensaje
news:
Hola RAlvare,

primero que nada pienso que es un poco aventurado decir que Adobe no siga
estándares, puesto que es un formato de documentos portables que por algo
tiene tanta compatibilidad y se pueden ver en gran parte de diversos
dispositivos. En su caso tendrá sus estándares impuestos o no por ellos.



De acuerdo con esto.

Cuando tu guardas, un documento desde un editor de palabras, has de saber
que no se guarda solo el texto sino se guarda también diversa información
que
describe la apariencia y formato de ese texto, así como otras cosas más.
Lo
mismo ocurre en un PDF, si tu abres un PDF con un bloc de notas por
ejemplo,
te encontrarás que no solo tienen el texto, sino tienes muchas cosas más:
"caracteres raros", números, códigos, etc, etc. Pues con la misma idea es
información que sirve para que el documento pueda verse correctamente.



Seguimos de acuerdo.

Cuando tu copias en el portapapeles una parte de un documento desde un
editor de palabras, se copia todo, tanto texto como información extra, de
modo que cuando pegues eso en otro documento se pegará igual. Lo mismo
pasa
con un PDF, cuando copias, se copia todo, no nada más el texto.



Aqui es donde yo no me expliqué bien:

He copiado al portapapeles desde la opción del lector Acrobat Reader
"Herramienta Seleccionar Texto".
Esta operación convierte cada grafía (en ingles glyphs) o representaciones
gráficas de una letra en caracteres
Unicode, creo, según he leido en
http://partners.adobe.com/public/de...ence16.pdf
(pag.820).
De aqui es de donde viene mi duda y "problema", ya que ciertas zonas
(párrafos con cierto típo de letra)
del PDF no se copian como texto plano.

Un saludo y gracias por tu contestación.
RAlvare.



Por eso es la razón de que no solo leas códigos de letras como tu esperas
que estén, en su caso te recomiendo que uses ensamblados dedicados para
hacer
eso
estos algunos de ellos:

http://www.pdftron.com/net/
http://web6.codeproject.com/showcas...nts.asp?df0&forumid)527&exp=0&select15428

Saludos...!

Miguel Ortiz Falcón

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida