Πώς να εργαστείτε με έγγραφα στο .NET

Πώς να εργαστείτε με έγγραφα στο .NET

Αυτός ο οδηγός δείχνει πώς να εργαστείτε με το μοντέλο αντικειμένων Document στο Aspose.Words FOSS για .NET: δημιουργία κενού εγγράφου, ασφαλές φόρτωμα υπάρχοντος, περιήγηση στη δομή ενότητας/σώματος, συνδυασμός εγγράφων και εφαρμογή περιορισμού επεξεργασίας. Το Aspose.Words FOSS για .NET είναι διαθέσιμο μέσω NuGet ή με κατασκευή από τον πηγαίο κώδικα.

Οδηγός βήμα-βήμα

Βήμα 1: Αποκτήστε τη βιβλιοθήκη

Κλωνοποιήστε το αποθετήριο και χτίστε Aspose.Words.sln σε διαμόρφωση Release, στη συνέχεια προσθέστε μια αναφορά έργου στο Aspose.Words.csproj από το δικό σας έργο .NET. Οι πλήρεις εντολές κλωνοποίησης και δημιουργίας βρίσκονται στο Οδηγός εγκατάστασης. Μόλις γίνει η αναφορά, προσθέστε using Aspose.Words; στην κορυφή οποιουδήποτε αρχείου που εργάζεται με έγγραφα.


Βήμα 2: Δημιουργήστε ή φορτώστε ένα έγγραφο

Καλείτε το new Document() για ένα κενό έγγραφο ή περνάτε μια διαδρομή αρχείου ή Stream στον κατασκευαστή Document(fileName)/Document(stream) για να ανοίξετε ένα υπάρχον. Μια υπερφόρτωση που δέχεται ένα όρισμα LoadOptions σας επιτρέπει να παρέχετε κωδικό πρόσβασης για κρυπτογραφημένο αρχείο. Πριν φορτώσετε ένα αρχείο του οποίου τη μορφή δεν εμπιστεύεστε ήδη, καλέστε το FileFormatUtil.DetectFileFormat(fileName) — επιστρέφει ένα FileFormatInfo που αναφέρει το ανιχνευμένο LoadFormat και αν το αρχείο IsEncrypted, HasDigitalSignature ή HasMacros, ώστε να μπορείτε να απορρίψετε μη αναμενόμενα δεδομένα πριν το Document προσπαθήσει να το αναλύσει.


Βήμα 3: Συγγραφή περιεχομένου με DocumentBuilder

DocumentBuilder τυλίγει ένα Document με έναν κέρσορα που μετακινείτε μέσα στο δέντρο ενώ εισάγετε περιεχόμενο. Τα Write(text) και Writeln(text) εισάγουν κείμενο στον κέρσορα, και το InsertParagraph() ξεκινά μια νέα παράγραφο. Η μορφοποίηση που ορίζεται στις ιδιότητες Font, ParagraphFormat, ListFormat και PageSetup του δημιουργού εφαρμόζεται σε ό,τι γράφετε μετά. Μετακινήστε τον κέρσορα με τα MoveToDocumentStart(), MoveToDocumentEnd(), MoveToSection(sectionIndex), MoveToBookmark(bookmarkName) ή MoveToParagraph(paragraphIndex, characterIndex), και διαβάστε CurrentNode / CurrentParagraph / CurrentSection για να επιβεβαιώσετε πού βρίσκεται ο δημιουργός.


Βήμα 4: Εξετάστε τη Δομή Ενότητας και Σώματος

Ένα Document αποκαλύπτει ένα SectionCollection μέσω Document.Sections (συμπεριλαμβανομένων των FirstSection / LastSection). Κάθε Section έχει ακριβώς ένα Body, του οποίου το κύριο περιεχόμενο είναι προσβάσιμο μέσω Body.Paragraphs (ένα ParagraphCollection) και Body.Tables. Για να διαβάσετε ή να αναζητήσετε κείμενο χωρίς να περπατάτε χειροκίνητα τους κόμβους, χρησιμοποιήστε το Range διαθέσιμο στο Document, Section, Paragraph και άλλους κόμβους — το Range.Text επιστρέφει το ακατέργαστο κείμενό του, και το Range.Replace(pattern, replacement) εκτελεί μια εύρεση-και-αντικατάσταση περιορισμένη μόνο σε αυτό το εύρος.


Βήμα 5: Συνδυάστε δύο έγγραφα

Για να αντιγράψετε ολόκληρο ένα έγγραφο, καλέστε το Document.Clone(). Για να μεταφέρετε συγκεκριμένο περιεχόμενο από μια παρουσία Document σε άλλη, καλέστε το ImportNode(srcNode, isImportChildren) στο έγγραφο προορισμού, ή καλέστε το Document.AppendDocument(srcDoc, importFormatMode) για να προσαρτήσετε κάθε ενότητα ενός πηγαίου εγγράφου στο τέλος του τρέχοντος. Το DocumentBuilder.InsertDocument(srcDoc, importFormatMode) κάνει το ίδιο αλλά εισάγει στον κέρσορα του δημιουργού αντί στο τέλος. Σε όλες τις τρεις περιπτώσεις, επιλέξτε την τιμή ImportFormatMode — KeepSourceFormatting, UseDestinationStyles ή KeepDifferentStyles — σκόπιμα, καθώς καθορίζει ποιες στυλ εγγράφου προτεραιότητα έχουν όταν συγκρούονται.


Βήμα 6: Εφαρμόστε περιορισμό επεξεργασίας

Καλέστε το Document.Protect(type, password) με μια τιμή ProtectionType — ReadOnly, AllowOnlyComments, AllowOnlyRevisions ή AllowOnlyFormFields — για να περιορίσετε ποιες επεμβάσεις αποδέχεται το Word για το έγγραφο. Το Unprotect() (με ή χωρίς τον αντίστοιχο κωδικό) αφαιρεί τον περιορισμό. Αυτό επηρεάζει μόνο την επεξεργασία μέσα στο Word· δεν κρυπτογραφεί το αποθηκευμένο αρχείο. Για να απαιτείται κωδικός μόνο για το άνοιγμα του αρχείου, ορίστε το OoxmlSaveOptions.Password όταν αποθηκεύετε.

Κοινά προβλήματα και διορθώσεις

Document(fileName) δημιουργεί εξαίρεση για ένα αρχείο που ανοίγει κανονικά στο Word. Η μορφή του αρχείου δεν υποστηρίζεται από τους φορτωτές αυτής της έκδοσης. Καλέστε FileFormatUtil.DetectFileFormat(fileName) πρώτα και ελέγξτε το επιστρεφθέν LoadFormat πριν προσπαθήσετε να φορτώσετε.

Το περιεχόμενο που αντιγράφεται μεταξύ εγγράφων λαμβάνει τις λανθασμένες γραμματοσειρές ή στυλ. Το ImportFormatMode μεταβιβάζεται σε AppendDocument or InsertDocument δεν ταιριάζει με αυτό που περιμένατε. Περάστε KeepSourceFormatting or UseDestinationStyles ρητά αντί να βασίζεστε σε μια προεπιλογή.

Unprotect() φαίνεται ότι δεν έχει καμία επίδραση. Είτε το έγγραφο δεν προστατεύτηκε με κωδικό πρόσβασης (καλέστε Unprotect() χωρίς ορίσματα), ή ο κωδικός που δόθηκε δεν ταιριάζει με αυτόν που Protect() κλήθηκε με.

Η μορφοποίηση που εφαρμόστηκε μέσω DocumentBuilder δεν εμφανίζεται εκεί που αναμενόταν. Μορφοποίηση επιπέδου Builder (Font, ParagraphFormat) ισχύει μόνο για το περιεχόμενο που γράφτηκε after όταν ορίζεται. Μετακινήστε τον κέρσορα και ορίστε τη μορφοποίηση πριν από την κλήση Write/Writeln, όχι μετά.

Συχνές ερωτήσεις

Πώς δημιουργώ ένα νέο, κενό έγγραφο Word;

Καλέστε το new Document(). Τυλίξτε το με ένα DocumentBuilder για να αρχίσετε να εισάγετε περιεχόμενο αμέσως.

Ποια είναι η διαφορά μεταξύ Document.Clone() και ImportNode;

Clone() αντιγράφει ολόκληρο το έγγραφο σε μια νέα παρουσία του Document. ImportNode(srcNode, isImportChildren) μεταφέρει έναν μόνο κόμβο — και προαιρετικά τα παιδιά του — από το δέντρο ενός εγγράφου σε άλλο, κάτι που χρησιμοποιείτε για να συνδυάσετε συγκεκριμένο περιεχόμενο αντί για ολόκληρα έγγραφα.

Πώς μπορώ να ελέγξω με ασφάλεια τη μορφή ενός αρχείου πριν το φορτώσω;

Καλέστε το FileFormatUtil.DetectFileFormat(fileName) (ή την υπερφόρτωση Stream) και εξετάστε τις ιδιότητες LoadFormat, IsEncrypted, HasDigitalSignature και HasMacros του επιστρεφόμενου FileFormatInfo πριν περάσετε το αρχείο στο Document.

Πώς μπορώ να διαβάσω μόνο τις παραγράφους μέσα στο σώμα ενός εγγράφου;

Χρησιμοποιήστε τη συλλογή Body.Paragraphs στο Body της ενότητας, ή το Body.GetChildNodes(nodeType, isDeep) για άλλους τύπους κόμβων.

Κρυπτογραφεί το Document.Protect το αποθηκευμένο αρχείο;

Όχι — είναι ένας περιορισμός επεξεργασίας που επιβάλλει το Word όταν το αρχείο ανοίγεται. Για να απαιτήσετε κωδικό πρόσβασης για το άνοιγμα του ίδιου του αρχείου, ορίστε OoxmlSaveOptions.Password όταν καλείτε το Document.Save.

Δείτε επίσης

 Ελληνικά