¿Cómo puedo tomar cada página de texto en un documento de Word por separado (usando .NET)?

StackOverflow https://stackoverflow.com/questions/290287

Pregunta

Necesito determinar en qué páginas de un documento de Word aparece una palabra clave. Tengo algunas herramientas que pueden obtener el texto del documento, pero nada que me diga en qué páginas aparece el texto. ¿Alguien tiene un buen punto de partida para mí? Estoy usando .NET

¡Gracias!

editar: restricción adicional: no puedo usar ninguna de las cosas de Interop.

edit2: Si alguien sabe de bibliotecas estables que puedan hacer esto, eso también sería útil. Yo uso Aspose, pero que yo sepa, eso no tiene nada.

¿Fue útil?

Solución

Así es como obtengo el texto, creo que puede establecer establecer el rango de selección en una página, luego podría probar ese texto, podría estar un poco al revés de lo que necesita pero podría ser un lugar para comenzar.

Microsoft.Office.Interop.Word.Application wordApplication = new Microsoft.Office.Interop.Word.Application();
object missing = Type.Missing;
object fileName = @"c:\file.doc";
object objFalse = false;

wordApplication.DisplayAlerts = Microsoft.Office.Interop.Word.WdAlertLevel.wdAlertsNone;
Microsoft.Office.Interop.Word.Document doc = wordApplication.Documents.Open(ref fileName, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,ref objFalse, ref missing, ref missing, ref missing, ref missing);

//I belevie you can define a SelectionRange and insert here
doc.ActiveWindow.Selection.WholeStory();
doc.ActiveWindow.Selection.Copy();

IDataObject data = Clipboard.GetDataObject();
string text = data.GetData(DataFormats.Text).ToString();

doc.Close(ref missing, ref missing, ref missing);
doc = null;

wordApplication.Quit(ref missing, ref missing, ref missing);
wordApplication = null;

Otros consejos

¿Cómo estás definiendo una página?

Si solo cuenta los saltos de sección / página dura, es complejo, pero factible. Si desea contar saltos de página suaves, la tarea se vuelve muy muy difícil y algo sin sentido. Tenga en cuenta que la determinación de dónde se abren los saltos de página suave se genera dinámicamente en tiempo de ejecución y no se almacena en el archivo en sí. Depende de una gran cantidad de factores, incluido el controlador de impresora activo (sí, puede cambiar para el mismo archivo en una computadora diferente), fuentes, interletraje, interlineado, márgenes, etc., etc., etc.

Una manera horrible de hacer esto con Aspose es convertir el archivo de Word a PDF y luego tomar texto en cada página.

No sé nada sobre los aspectos internos de Aspose o cómo definen sus páginas suaves al convertir, pero esto es lo mejor que tengo hasta ahora.

Gracias por usar Aspose.Words.

En la API pública actualmente solo tenemos el " documento de flujo " información p. párrafos, tablas, listas, etc. Internamente, creamos un modelo de diseño de página que tiene clases como página, bloque de texto, línea de texto, etc. Por supuesto, existen enlaces internos entre el modelo de documento y el modelo de diseño y es posible averiguar qué página termina dónde y todo lo demás. Hacer que esta información esté disponible a través de la API pública es (bueno, aún) alta en nuestra lista de prioridades.

¿Ha registrado su solicitud en los foros de soporte de Aspose.Words? Usamos esta información para mantener un sistema de votación y trabajaremos en funciones que obtengan más votos primero.

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