Comment puis-je récupérer chaque page de texte dans un document Word séparément (à l'aide de .NET)?

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

Question

Je dois déterminer sur quelles pages d'un document Word un mot clé apparaît. J'ai quelques outils qui peuvent me donner le texte du document, mais rien qui me dit sur quelles pages le texte apparaît. Est-ce que quelqu'un a un bon point de départ pour moi? J'utilise .NET

Merci!

modifier: contrainte supplémentaire: je ne peux utiliser aucun des éléments Interop.

edit2: Si quelqu'un connaissait l'existence de bibliothèques stables pouvant le faire, cela serait également utile. J'utilise Aspose, mais pour autant que je sache, cela n'a rien.

Était-ce utile?

La solution

C’est ainsi que je fais sortir le texte. Je pense que vous pouvez définir la plage de sélection sur une page, puis tester ce texte, peut-être un peu en arrière par rapport à ce dont vous avez besoin, mais peut être un endroit pour commencer.

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;

Autres conseils

Comment définissez-vous une page?

Si vous ne comptez que section / page difficile, cela est complexe, mais faisable. Si vous voulez compter les sauts de page, la tâche devient très très difficile et quelque peu dénuée de sens. Considérez que la détermination de l'endroit où les coupures de page logicielles land sont générées est générée dynamiquement au moment de l'exécution et n'est pas stockée dans le fichier lui-même. Cela dépend d’un grand nombre de facteurs, dont le pilote d’imprimante actif (oui, cela peut changer pour le même fichier sur un autre ordinateur), les polices, le crénage, l’espacement des lignes, les marges, etc., etc.

Un moyen peu rentable de faire cela avec Aspose est de convertir le fichier Word en PDF, puis de saisir le texte sur chaque page.

Je ne connais rien aux composants internes d'Aspose ni à la manière dont ils définissent leurs pages personnalisées lors de la conversion, mais c'est le meilleur que j'ai jusqu'à présent.

Merci d'avoir utilisé Aspose.Words.

Dans l'API publique, nous ne disposons actuellement que du "flux-document". informations par exemple paragraphes, tableaux, listes, etc. En interne, nous construisons un modèle de mise en page comportant des classes telles que page, bloc de texte, ligne de texte, etc. Il existe bien sûr des liens internes entre le modèle de document et le modèle de présentation et il est possible de savoir quelle page se termine où et avec tout le contenu. Rendre ces informations disponibles via l'API publique est (enfin, toujours) une priorité sur notre liste de priorités.

Avez-vous enregistré votre demande dans les forums d'assistance Aspose.Words? Nous utilisons cette information pour maintenir un système de vote et travaillerons sur des fonctionnalités qui obtiendront d’abord plus de votes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top