Υπηρεσία SFDocuments.Document

Η βιβλιοθήκη SFDocuments παρέχει μεθόδους και ιδιότητες για τη διευκόλυνση της διαχείρισης και του χειρισμού των εγγράφων του LibreOffice.

Μέθοδοι που ισχύουν για όλους τους τύπους εγγράφων (Έγγραφα κειμένου, Φύλλα, Παρουσιάσεις, κ.λπ.) παρέχονται από την υπηρεσία SFDocuments.Document. Μερικά παραδείγματα είναι:

warning

Οι ιδιότητες, οι μέθοδοι ή τα ορίσματα που επισημαίνονται με (*) ΔΕΝ ισχύουν για έγγραφα Base.


Οι μέθοδοι και οι ιδιότητες που αφορούν συγκεκριμένα στοιχεία του LibreOffice αποθηκεύονται σε ξεχωριστές υπηρεσίες, όπως SFDocuments.SF_Calc και SFDocuments.SF_Base.

Αν και η γλώσσα Basic δεν προσφέρει κληρονομικότητα μεταξύ κλάσεων αντικειμένων, οι τελευταίες υπηρεσίες μπορούν να θεωρηθούν ως υποκλάσεις της υπηρεσίας SFDocuments.Document. Τέτοιες υποκατηγορίες μπορούν να καλούν τις ιδιότητες και τις μεθόδους που περιγράφονται παρακάτω.

Κλήση υπηρεσίας

Ακολουθούν τρεις παραλλαγές του τρόπου με τον οποίο μπορεί να κληθεί η υπηρεσία Document.

Σε Basic

Χρησιμοποιώντας τη μέθοδο getDocument από την υπηρεσία ScriptForge.UI:


    Dim ui As Object, oDoc As Object
    Set ui = CreateScriptService("UI")
    Set oDoc = ui.GetDocument("Untitled 1")
  

Εναλλακτικά, μπορείτε να χρησιμοποιήσετε τις μεθόδους CreateDocument και OpenDocument από την υπηρεσία UI.


    Set oDocA = ui.CreateDocument("Calc")
    Set oDocB = ui.OpenDocument("C:\Documents\MyFile.odt")
  

Απευθείας εάν το έγγραφο είναι ήδη ανοιχτό.


    Dim oDoc As Object
    Set oDoc = CreateScriptService("SFDocuments.Document", "Untitled 1") 'Default = ActiveWindow
  

Από μια μακροεντολή που ενεργοποιείται από ένα συμβάν εγγράφου.


    Sub RunEvent(ByRef poEvent As Object)
        Dim oDoc As Object
        Set oDoc = CreateScriptService("SFDocuments.DocumentEvent", poEvent)
        ' (...)
    End Sub
  
note

Η υπηρεσία Document σχετίζεται στενά με τις υπηρεσίες UI και FileSystem.


Εκτός από την περίπτωση που το έγγραφο έκλεισε με πρόγραμμα με τη μέθοδο CloseDocument (τότε είναι περιττό), συνιστάται η απελευθέρωση πόρων μετά τη χρήση:


    Set oDoc = oDoc.Dispose()
  
Σε Python

    from scriptforge import CreateScriptService
    ui = CreateScriptService("UI")
    doc = ui.GetDocument("Untitled 1")
    # (...)
    doc.Dispose()
  

    docA = ui.CreateDocument("Calc")
    docB = ui.OpenDocument("C:\Documents\MyFile.odt")
  

    doc = CreateScriptService("SFDocuments.Document", "Untitled 1")
  

    def RunEvent(event)
        doc = CreateScriptService("SFDocuments.DocumentEvent", Event)
        # (...)
  
tip

Η χρήση του προθέματος "SFDocuments." κατά την κλήση της υπηρεσίας είναι προαιρετική.


Ιδιότητες

Όνομα

Μόνο για ανάγνωση

Τύπος

Περιγραφή

CustomProperties (*)

Όχι

Dictionary service

Επιστρέφει μια παρουσία αντικειμένου ScriptForge.Dictionary. Μετά την ενημέρωση, μπορεί να μεταβιβαστεί ξανά στην ιδιότητα για ενημέρωση του εγγράφου.
Μεμονωμένα στοιχεία του λεξικού μπορεί να είναι συμβολοσειρές, αριθμοί, ημερομηνίες (Basic) ή στοιχεία com.sun.star.util.Duration.

Description (*)

Όχι

String

Παρέχει πρόσβαση στην ιδιότητα Description (Περιγραφή) του εγγράφου (γνωστή και ως "Comments (Σχόλια)")

DocumentProperties (*)

Ναι

Dictionary service

Επιστρέφει ένα αντικείμενο ScriptForge.Dictionary που περιέχει όλες τις εγγραφές. Περιλαμβάνονται στατιστικά στοιχεία εγγράφων. Σημειώστε ότι είναι ειδικά για τον τύπο του εγγράφου. Για παράδειγμα, ένα έγγραφο Calc περιλαμβάνει μια καταχώρηση "CellCount". Άλλα έγγραφα όχι.

DocumentType

Ναι

String

Τιμή συμβολοσειράς με τον τύπο εγγράφου ("Base", "Calc", "Writer" κ.λπ.)

IsBase
IsCalc
IsDraw
IsImpress
IsMath
IsWriter

Ναι

Boolean

Ακριβώς μία από αυτές τις ιδιότητες είναι True για ένα δεδομένο έγγραφο.

Keywords (*)

Όχι

String

Παρέχει πρόσβαση στην ιδιότητα Keywords (Λέξεις-κλειδιά) του εγγράφου. Αντιπροσωπεύεται ως κατάλογος λέξεων-κλειδιών διαχωρισμένα με κόμμα

Readonly (*)

Ναι

Boolean

True (αληθές)εάν το έγγραφο βρίσκεται στην πραγματικότητα σε λειτουργία μόνο για ανάγνωση

Subject (*)

Όχι

String

Παρέχει πρόσβαση στην ιδιότητα Subject (Θέμα) του εγγράφου.

Title (*)

Όχι

String

Παρέχει πρόσβαση στην ιδιότητα Title (τίτλος) του εγγράφου.

XComponent

Ναι

Αντικείμενο UNO

Το αντικείμενο UNO com.sun.star.lang.XComponent ή com.sun.dbatar.comp .ODatabaseDocument που αντιπροσωπεύει το έγγραφο


Παράδειγμα:

Σε Basic

Το παρακάτω παράδειγμα εκτυπώνει όλες τις ιδιότητες ενός εγγράφου. Σημειώστε ότι το αντικείμενο oDoc που επιστρέφεται με τη μέθοδο UI.OpenDocument είναι αντικείμενο SFDocuments.Document.


    Dim ui as Variant : Set ui = CreateScriptService("UI")
    Dim oDoc as Object
    Set oDoc = ui.OpenDocument("C:\Documents\MyFile.ods")
    Dim propDict as Object
    Set propDict = oDoc.DocumentProperties
    Dim keys as Variant : propKeys = propDict.Keys
    Dim k as String, strProp as String
    For Each k In propKeys
        strProp = strProp & k & ": " & propDict.Item(k) & CHR$(10)
    Next k
    MsgBox strProp
    oDoc.CloseDocument()
  
Σε Python

Για να αποκτήσετε πρόσβαση στις ιδιότητες εγγράφων σε ένα σενάριο Python, ο χρήστης πρέπει να έχει απευθείας πρόσβαση σε αυτές χρησιμοποιώντας τα ονόματά τους, όπως φαίνεται παρακάτω:


    doc = ui.GetDocument(r"C:\Documents\MyFile.ods")
    msg = doc.Title + '\n' + doc.Description + '\n' + doc.Keywords
    bas = CreateScriptService("Basic")
    bas.MsgBox(msg)
    doc.CloseDocument()
  

Κατάλογος μεθόδων στην υπηρεσία εγγράφων

Activate
CloseDocument
Forms

RunCommand
Save

SaveAs
SaveCopyAs


Activate

Επιστρέφει True εάν το έγγραφο μπορούσε να ενεργοποιηθεί. Διαφορετικά, δεν υπάρχει καμία αλλαγή στην πραγματική διεπαφή χρήστη. Είναι ισοδύναμο με τη μέθοδο Activate (Ενεργοποίηση) της υπηρεσίας UI.

Αυτή η μέθοδος είναι χρήσιμη όταν χρειάζεται να εστιάσετε σε ένα έγγραφο που είναι ελαχιστοποιημένο ή κρυφό.

Σύνταξη:

svc.Activate(): bool

Παράδειγμα:

Το παρακάτω παράδειγμα θεωρεί ότι το αρχείο "My_File.ods" είναι ήδη ανοιχτό αλλά δεν είναι ενεργό.

Σε Basic

    Dim oDoc As Object
    Set oDoc = CreateScriptService("Document", "MyFile.ods")
    oDoc.Activate()
  
Σε Python

    doc = CreateScriptService("Document", "MyFile.ods")
    doc.Activate()
  
tip

Λάβετε υπόψη ότι μπορείτε να καλέσετε την υπηρεσία Document περνώντας στο CreateScriptService, είτε "Document", ή "SFDocuments.Document"


CloseDocument

Κλείνει το έγγραφο. Εάν το έγγραφο είναι ήδη κλειστό, ανεξάρτητα από το πώς έκλεισε το έγγραφο, αυτή η μέθοδος δεν έχει κανένα αποτέλεσμα και επιστρέφει False.

Η μέθοδος θα επιστρέψει επίσης False εάν ο χρήστης αρνηθεί να την κλείσει.

Επιστρέφει True εάν το έγγραφο έκλεισε με επιτυχία.

Σύνταξη:

svc.CloseDocument(saveask: bool = True): bool

Παράμετροι:

saveask : Εάν είναι True (προεπιλογή), ο χρήστης καλείται να επιβεβαιώσει εάν οι αλλαγές πρέπει να εγγραφούν στο δίσκο. Αυτό το όρισμα αγνοείται εάν το έγγραφο δεν τροποποιήθηκε.

Παράδειγμα:

Σε Basic

    If oDoc.CloseDocument(True) Then
        ' ...
    End If
  
Σε Python

    if doc.CloseDocument(True):
        # ...
  

Forms

Depending on the parameters provided this method will return:

note

This method is applicable only for Writer documents. Calc and Base documents have their own Forms method in the Calc and Base services, respectively.


Σύνταξη:

svc.Forms(): str[0..*]

svc.Forms(form: str = ''): svc

svc.Forms(form: int): svc

Παράμετροι:

form: The name or index corresponding to a form stored in the document. If this argument is absent, the method will return a list with the names of all forms available in the document.

Παράδειγμα:

In the following examples, the first line gets the names of all forms in the document and the second line retrieves the Form object of the form named "Form_A".

Σε Basic

    Set FormNames = oDoc.Forms()
    Set FormA = oDoc.Forms("Form_A")
  
Σε Python

    form_names = doc.Forms()
    form_A = doc.Forms("Form_A")
  

RunCommand

Runs a command on a document. The command is executed without arguments.

A few typical commands are: Save, SaveAs, ExportToPDF, SetDocumentProperties, Undo, Copy, Paste, etc.

Το ίδιο το έγγραφο δεν χρειάζεται να είναι ενεργό για να μπορεί να εκτελεί εντολές.

Σύνταξη:

svc.RunCommand(command: str)

Παράμετροι:

command: Case-sensitive string containing the command in English. The command itself is not checked for correctness. If nothing happens after the command call, then the command is probably wrong.

Παράδειγμα:

The following example runs the "SelectData" command in a Calc sheet named "MyFile.ods", which will result in the selection of the data area based on the currently selected cell.

Σε Basic

    Set oDoc = CreateScriptService("Document", "MyFile.ods")
    oDoc.RunCommand("SelectData")
  
Σε Python

    doc = CreateScriptService("Document", "MyFile.ods")
    doc.RunCommand("SelectData")
  

The example above actually runs the UNO command uno:SelectData. Hence, to use the RunCommand method it is necessary to remove the "uno:" substring.

tip

Each LibreOffice component has its own set of commands available. One easy way to learn commands is going to Tools > Customize > Keyboard. When you position your mouse over a function in the Function list, a tooltip will appear with the corresponding UNO command.


Save

Αποθηκεύει το έγγραφο στη θέση του αρχείου από την οποία φορτώθηκε. Η μέθοδος αγνοείται εάν το έγγραφο δεν τροποποιήθηκε.

Επιστρέφει False εάν δεν ήταν δυνατή η αποθήκευση του εγγράφου. Παρουσιάζεται σφάλμα εάν το αρχείο είναι ανοιχτό ως μόνο για ανάγνωση ή εάν πρόκειται για νέο αρχείο που δεν έχει αποθηκευτεί ακόμα.

Το ίδιο το έγγραφο δεν χρειάζεται να είναι ενεργό για την εκτέλεση αυτής της μεθόδου.

Σύνταξη:

svc.Save(): bool

Παράδειγμα:

Σε Basic

    If Not oDoc.Save() Then
        ' ...
    End If
  
Σε Python

    if not doc.Save():
        # ...
  

SaveAs

Αποθηκεύει το έγγραφο στη δεδομένη θέση αρχείου. Η νέα θέση γίνεται το νέο όνομα αρχείου στο οποίο θα εφαρμοστούν απλές κλήσεις της μεθόδου Save (Αποθήκευση).

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

Το ίδιο το έγγραφο δεν χρειάζεται να είναι ενεργό για την εκτέλεση αυτής της μεθόδου.

Σύνταξη:

svc.SaveAs(filename: str, overwrite: bool = False, password: str = '', filtername: str = '', filteroptions: str = ''): bool

Παράμετροι:

filename (όνομα αρχείου): Μια συμβολοσειρά που περιέχει το όνομα αρχείου που θα χρησιμοποιηθεί. Πρέπει να ακολουθεί τη σημειογραφία SF_FileSystem.FileNaming.

overwrite (αντικατάσταση): Εάν είναι True, το αρχείο προορισμού ενδέχεται να αντικατασταθεί (προεπιλογή = False).

password (*) (κωδικός πρόσβασης): Μια συμβολοσειρά χωρίς διάστημα για την προστασία του εγγράφου.

filtername (*) (όνομα φίλτρου): Το όνομα ενός φίλτρου που πρέπει να χρησιμοποιηθεί για την αποθήκευση του εγγράφου. Εάν αυτό το όρισμα μεταβιβαστεί, τότε το φίλτρο πρέπει να υπάρχει.

filteroptions (*) (επιλογές φίλτρου): Μια προαιρετική συμβολοσειρά επιλογών που σχετίζεται με το φίλτρο.

Παράδειγμα:

Σε Basic

    oDoc.SaveAs("C:\Documents\NewCopy.odt", overwrite := True)
  
Σε Python

    doc.SaveAs(r"C:\Documents\NewCopy.odt", overwrite = True)
  

SaveCopyAs

Αποθηκεύει ένα αντίγραφο ή εξάγει το έγγραφο στη δεδομένη θέση αρχείου. Η πραγματική τοποθεσία παραμένει αμετάβλητη.

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

Το ίδιο το έγγραφο δεν χρειάζεται να είναι ενεργό για την εκτέλεση αυτής της μεθόδου.

Σύνταξη:

svc.SaveCopyAs(filename: str, overwrite: bool = False, password: str = '', filtername: str = '', filteroptions: str = ''): bool

Παράμετροι:

filename (όνομα αρχείου): Μια συμβολοσειρά που περιέχει το όνομα αρχείου που θα χρησιμοποιηθεί. Πρέπει να ακολουθεί τη σημειογραφία SF_FileSystem.FileNaming.

overwrite (αντικατάσταση): Εάν είναι True, το αρχείο προορισμού ενδέχεται να αντικατασταθεί (προεπιλογή = False).

password (*) (κωδικός πρόσβασης): Μια συμβολοσειρά χωρίς διάστημα για την προστασία του εγγράφου.

filtername (*) (όνομα φίλτρου): Το όνομα ενός φίλτρου που πρέπει να χρησιμοποιηθεί για την αποθήκευση του εγγράφου. Εάν αυτό το όρισμα μεταβιβαστεί, τότε το φίλτρο πρέπει να υπάρχει.

filteroptions (*) (επιλογές φίλτρου): Μια προαιρετική συμβολοσειρά επιλογών που σχετίζεται με το φίλτρο.

Παράδειγμα:

Σε Basic

    oDoc.SaveCopyAs("C:\Documents\Copy2.odt", Overwrite := True)
  
Σε Python

    doc.SaveCopyAs(r"C:\Documents\Copy2.odt", overwrite = True)
  
warning

Όλες οι ScriptForge ρουτίνες Basic ή αναγνωριστικά που έχουν το πρόθεμα χαρακτήρα υπογράμμισης "_" δεσμεύονται για εσωτερική χρήση. Δεν προορίζεται να χρησιμοποιηθούν σε μακροεντολές Basic.