Pregunta

Estoy intentando leer documento de Word 2007 docx.

En el documento se ve bien en el interior de la palabra, pero cuando trato de leer Identificación del uso de mi código, todos los objetos de ejecución han establecido nula RunProperites.

La propiedad que más me interesa es RunProperies.FontSize, pero por desgracia, es nula, así, la única propiedad que pueda acceder es InnerText.

Mi código es el siguiente:

using (WordprocessingDocument doc = WordprocessingDocument.Open(filename, true))
{
    MainDocumentPart mainPart = doc.MainDocumentPart;
    IList<Paragraph> paragraphList = doc.MainDocumentPart.Document.Body.Elements<Paragraph>().ToList<Paragraph>();

    foreach (Paragraph pr in paragraphList)
    {   
        IList<Run> runList = pr.Elements<Run>().ToList<Run>();
        foreach (Run r in runList)
        {
            // Some logic
        }
    }
}

he minimizado mi documento a lo más simple posible, y parece que este http://dl.dropbox.com/u/204110/test.docx

Tengo un documento similar que se lee bien. ¿Es posible que hay un error en OpenXML SDK 2?

¿Alguien ha tenido problemas similares? Cualquier ayuda sería apreciada. ¡Gracias!

¿Fue útil?

Solución

Tamaño de Letra no es un elemento necesario, y tampoco lo es RunProperties . Para cada ejecución, verificar que r.RunProperties no es nulo y, a continuación, comprobar que r.RunProperties.FontSize no es nula antes de tratar de leer los valores. Algo a lo largo de las líneas de:

uint fontSize = SOME_DEFAULT_FONT_SIZE;
RunProperties propertiesElement = r.RunProperties;
if (propertiesElement != null) {
  FontSize sizeElement = propertiesElement.FontSize;
    if (sizeElement != null) {
      fontSize = sizeElement.Val.Value;
    }
  }
}

Si nos fijamos en el archivo docx que ha proporcionado el uso de la herramienta DocReflector que viene con el SDK, se puede ver que las 3 primeras carreras tienen un tamaño de fuente especificado, pero el cuarto de ejecución no.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top