Domanda

Devo determinare su quali pagine di un documento Word si trova una parola chiave. Ho alcuni strumenti che possono procurarmi il testo del documento, ma nulla che mi dica su quali pagine si trova il testo. Qualcuno ha un buon punto di partenza per me? Sto usando .NET

Grazie!

modifica: vincolo aggiuntivo: non posso usare nessuna delle cose Interop.

edit2: se qualcuno fosse a conoscenza di librerie stabili che possono farlo, sarebbe utile. Uso Aspose, ma per quanto ne so non ha nulla.

È stato utile?

Soluzione

Ecco come estraggo il testo, credo che tu possa impostare l'intervallo di selezione su una pagina, quindi potresti testare quel testo, potrebbe essere un po 'indietro rispetto a quello che ti serve ma potrebbe essere un punto di partenza.

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;

Altri suggerimenti

Come stai definendo una pagina?

Se conti solo le interruzioni di sezione / pagina complessa, è fattibile. Se si desidera contare le interruzioni di pagina automatiche, l'attività diventa molto difficile e alquanto insignificante. Si consideri che la determinazione del punto in cui la pagina morbida si interrompe viene generata dinamicamente in fase di esecuzione e non viene archiviata nel file stesso. Dipende da un numero enorme di fattori tra cui il driver di stampante attivo (sì, può cambiare per lo stesso file su un altro computer), caratteri, crenatura, interlinea, margini, ecc. Ecc.

Un modo pessimo per farlo con Aspose è convertire il file Word in un PDF e quindi prendere il testo su ogni pagina.

Non so nulla degli interni di Aspose o di come definiscono le loro pagine morbide durante la conversione, ma questo è il migliore che ho finora.

Grazie per aver utilizzato Aspose.Words.

Nell'API pubblica al momento abbiamo solo il "documento di flusso" informazioni ad es. paragrafi, tabelle, elenchi ecc. Internamente, costruiamo un modello di layout di pagina che ha classi come pagina, blocco di testo, riga di testo e così via. Naturalmente ci sono collegamenti interni tra il modello di documento e il modello di layout ed è possibile scoprire quale pagina termina dove e tutto il materiale. Rendere queste informazioni disponibili tramite l'API pubblica è (bene, ancora) in cima al nostro elenco di priorità.

Hai registrato la tua richiesta nei forum di supporto di Aspose.Words? Usiamo queste informazioni per mantenere un sistema di voto e lavoreremo su funzionalità che ottengono prima più voti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top