2012-03-30 6 views
5

Tengo una pequeña aplicación C# que extrae texto de un archivo Microsoft Publisher a través de la API COM Interop. Esto funciona bien, pero estoy luchando si tengo varios estilos en una sección. Potencialmente, cada personaje de una palabra podría tener una fuente, formato, etc. diferentes
¿Realmente tengo que comparar carácter tras carácter? ¿O hay algo que me devuelva las diferentes secciones de estilo? ¿Algo así como puedo obtener los diferentes Párrafos?Obtenga diferentes secciones de estilo en Microsoft Publisher a través de Interop

foreach (Microsoft.Office.Interop.Publisher.Shape shp in pg.Shapes) 
{ 
    if (shp.HasTextFrame == MsoTriState.msoTrue) 
    { 
     text.Append(shp.TextFrame.TextRange.Text); 

     for(int i = 0; i< shp.TextFrame.TextRange.WordsCount; i++) 
     { 
      TextRange range = shp.TextFrame.TextRange.Words(i+1, 1); 
      string test = range.Text; 
     } 
    } 
} 

¿O existe en general una mejor forma de extraer el texto de un archivo de Publisher? Pero tengo que poder escribirlo de nuevo con el mismo formato. Es para una traducción.

Respuesta

0

Intentamos un enfoque donde acabamos de comparar para cada personaje tantos estilos de fuente como sea posible. No es bonito, pero funciona en la mayoría de los casos ...

0

Podría considerar utilizar el portapapeles para copiar secciones de texto como RTF que luego puede volver a pegar como RTF como en el ejemplo siguiente para Word. No estoy familiarizado con el modelo de objetos de Publisher.

string text = wordDocument.Content.Paragraphs[0]; System.Windows.Forms.Clipboard.SetText(text, TextDataFormat.Rtf);

Aparte de eso, no he encontrado una colección de estilos aplicados cuando se utiliza la interoperabilidad con cualquiera de los productos de oficina.

+0

Gracias por la entrada. Pero con la conversión RTF podría perder algunas opciones de formato, lo que me gustaría evitar. Actualmente solo comparo cada personaje con el siguiente ... – Remy

Cuestiones relacionadas