SFDocuments.Document service

The SFDocuments library provides methods and properties to facilitate the management and manipulation of LibreOffice documents.

Metoder som kan brukes for alle typer dokumenter (tekstdokumenter, ark, presentasjoner osv.) leveres av SFDocuments.Document-tjenesten. Noen eksempler er:

warning

Egenskapene, metodene eller argumentene merket med (*) er IKKE gjeldende for basisdokumenter.


Methods and properties that are specific to certain LibreOffice components are stored in separate services, such as SFDocuments.SF_Calc and SFDocuments.SF_Base.

Selv om Basic-språket ikke tilbyr arv mellom objektklasser, kan sistnevnte tjenester betraktes som underklasser av SFDocuments.Document-tjenesten. Slike underklasser kan påkalle egenskapene og metodene beskrevet nedenfor.

Tjenestepåkallelse

Nedenfor er tre varianter av hvordan Dokument-tjenesten kan påkalles.

I Basic

Ved å bruke getDocument-metoden fra ScriptForge.UI-tjenesten:


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

Alternativt kan du bruke metodene CreateDocument og OpenDocument fra UI-tjenesten.


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

Directly if the document is already open.


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

Fra en makro utløst av en dokumenthendelse.


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

Dokument-tjenesten er nært knyttet til UI og FileSystem-tjenestene.


Bortsett fra når dokumentet ble lukket av program med CloseDocument-metoden (det er da overflødig), anbefales det å frigjøre ressurser etter bruk:


    Set oDoc = oDoc.Dispose()
  
I 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

Bruken av prefikset "SFDocuments." mens du anroper tjenesten er valgfritt.


Egenskaper

Navn

Skrivebeskyttet

Type

Beskrivelse

CustomProperties (*)

Nei

Dictionary service

Returns a ScriptForge.Dictionary object instance. After update, can be passed again to the property for updating the document.
Individual items of the dictionary may be either strings, numbers, (Basic) dates or com.sun.star.util.Duration items.

Description (*)

Nei

String

Gir tilgang til beskrivelsesegenskapen til dokumentet (også kjent som "Kommentarer")

DocumentProperties (*)

Ja

Dictionary service

Returnerer et ScriptForge.Dictionary-objekt som inneholder alle oppføringene. Dokumentstatistikk er inkludert. Merk at de er spesifikke for dokumenttypen. Som et eksempel inkluderer et Calc-dokument en "CellCount"-oppføring. Andre dokumenter gjør det ikke.

DocumentType

Ja

String

Strengverdi med dokumenttypen ("Base", "Calc", "Writer", osv.)

IsBase
IsCalc
IsDraw
IsImpress
IsMath
IsWriter

Ja

Boolean

Nøyaktig én av disse egenskapene er Sann for et gitt dokument.

Keywords (*)

Nei

String

Gir tilgang til nøkkelord-egenskapen til dokumentet. Representert som en kommadseparert liste over søkeord

Readonly (*)

Ja

Boolean

True hvis dokumentet faktisk er i skrivebeskyttet modus

Subject (*)

Nei

String

Gir tilgang til emneegenskapen til dokumentet.

Title (*)

Nei

String

Gir tilgang til Tittel-egenskapen til dokumentet.

XComponent

Ja

UNO Objekt

The UNO object com.sun.star.lang.XComponent or com.sun.star.comp.dba.ODatabaseDocument representing the document


Eksempel:

I Basic

Eksemplet nedenfor skriver ut alle egenskapene til et dokument. Merk at oDoc-objektet returnert av UI.OpenDocument-metoden er et SFDocuments.Document-objekt.


    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()
  
I Python

For å få tilgang til dokumentegenskaper i et Python-skript må brukeren ha direkte tilgang til dem ved å bruke navnene deres, som vist nedenfor:


    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()
  

Liste over metoder i dokumenttjenesten

Activate
CloseDocument
ExportAsPDF

PrintOut
RunCommand
Save

SaveAs
SaveCopyAs
SetPrinter


Activate

Returnerer True hvis dokumentet kunne aktiveres. Ellers er det ingen endring i det faktiske brukergrensesnittet. Det tilsvarer Aktiver-metoden for UI-tjenesten.

Denne metoden er nyttig når man trenger å gi fokus for et dokument som er minimert eller skjult.

Syntaks:

svc.Activate(): bool

Eksempel:

Eksemplet nedenfor anser at filen "My_File.ods" allerede er åpen, men ikke aktiv.

I Basic

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

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

Husk at du kan påkalle Dokument-tjenesten ved å sende til CreateScriptService enten "Document" eller "SFDocuments.Document"


CloseDocument

Lukker dokumentet. Hvis dokumentet allerede er lukket, uavhengig av hvordan dokumentet ble lukket, har denne metoden ingen effekt og returnerer Usann.

Metoden vil også returnere Usann hvis brukeren nekter å lukke den.

Returnerer Sann hvis dokumentet ble lukket.

Syntaks:

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

Parametre:

saveask : Hvis Sann (standard), inviteres brukeren til å bekrefte om endringene skal skrives på disk. Dette argumentet ignoreres hvis dokumentet ikke ble endret.

Eksempel:

I Basic

    If oDoc.CloseDocument(True) Then
        ' ...
    End If
  
I Python

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

ExportAsPDF

Eksporterer dokumentet direkte som en PDF-fil til det angitte stedet. Returnerer Sann hvis PDF-filen ble opprettet.

The export options can be set either manually using the File - Export As - Export as PDF dialog or by calling the methods GetPDFExportOptions and SetPDFExportOptions from the Session service.

Syntaks:

svc.ExportAsPDF(filename: str, overwrite: bool = False, opt pages: str, opt password: str, opt watermark: str): bool

Parametre:

filnavn: Den fullstendige banen og filnavnet til PDF-en som skal opprettes. Den må følge SF_FileSystem.FileNaming-notasjonen.

overskriv: Angir om målfilen kan overskrives (Standard = Usann). En feil vil oppstå hvis overskriv er satt til Usann og målfilen allerede eksisterer.

sider: Streng som spesifiserer hvilke sider som skal eksporteres. Dette argumentet bruker samme notasjon som i dialogen Fil - Eksporter som - Eksporter som PDF.

passord: Angir et passord for å åpne PDF-filen.

vannmerke: Tekst som skal brukes som vannmerke i PDF-filen, som vil bli tegnet på hver side av den resulterende PDF-filen.

Eksempel:

I Basic

Følgende eksempel eksporterer gjeldende dokument som en PDF-fil, definerer et passord og overskriver målfilen hvis den allerede eksisterer.


    oDoc.ExportAsPDF("C:\User\Documents\myFile.pdf", Password := "1234", Overwrite := True)
  

Kodebiten nedenfor får de gjeldende PDF-eksportalternativene og bruker dem til å lage PDF-filen.


    Dim exportSettings as Object, oSession as Object
    oSession = CreateScriptService("Session")
    exportSettings = oSession.GetPDFExportOptions()
    ' Setter til Sann alternativet for å eksportere kommentarer som PDF-notater
    exportSettings.ReplaceItem("ExportNotes", True)
    oSession.SetPDFExportOptions(exportSettings)
    oDoc.ExportAsPDF("C:\User\Documents\myFile.pdf")
  
I Python

    doc.ExportAsPDF(r"C:\User\Documents\myFile.pdf", password = "1234", overwrite = True)
  

    session = CreateScriptService("Session")
    exportSettings = oSession.GetPDFExportOptions()
    exportSettings.ReplaceItem("ExportNotes", True)
    session.SetPDFExportOptions(exportSettings)
    doc.ExportAsPDF(r"C:\User\Documents\myFile.pdf")
  

PrintOut

Denne metoden sender innholdet i dokumentet til standardskriveren eller til skriveren definert av SetPrinter-metoden.

Returnerer Sann hvis dokumentet ble skrevet ut.

Syntaks:

svc.PrintOut(pages: str = "", copies: num = 1): bool

Parametre:

sider: Sidene som skal skrives ut som en streng, som i brukergrensesnittet. Eksempel: "1-4;10;15-18". Standard er alle sider.

kopier: Antall kopier. Standard er 1.

Eksempel:

I Basic

    If oDoc.PrintOut("1-4;10;15-18", Copies := 2) Then
        ' ...
    End If
  
I Python

    if doc.PrintOut(copies=3, pages='45-88'):
        # ...
  

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.

Selve dokumentet trenger ikke være aktivt for å kunne kjøre kommandoer.

Syntaks:

svc.RunCommand(command: str)

Parametre:

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.

Eksempel:

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.

I Basic

    Set oDoc = CreateScriptService("Document", "MyFile.ods")
    oDoc.RunCommand("SelectData")
  
I 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

Lagrer dokumentet på filplasseringen det ble lastet fra. Metoden ignoreres hvis dokumentet ikke ble endret.

Returnerer False hvis dokumentet ikke kunne lagres. En feil oppstår hvis filen er åpen som skrivebeskyttet, eller hvis det er en ny fil som ikke er lagret ennå.

Selve dokumentet trenger ikke være aktivt for å kjøre denne metoden.

Syntaks:

svc.Save(): bool

Eksempel:

I Basic

    If Not oDoc.Save() Then
        ' ...
    End If
  
I Python

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

SaveAs

Lagrer dokumentet til den gitte filplasseringen. Den nye plasseringen blir det nye filnavnet som enkle Lagre-metodekall vil bli brukt på.

Returnerer False hvis dokumentet ikke kunne lagres. En feil oppstår når overskriving av destinasjonen avvises eller når destinasjonen har sitt skrivebeskyttede attributt satt.

Selve dokumentet trenger ikke være aktivt for å kjøre denne metoden.

Syntaks:

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

Parametre:

filnavn: En streng som inneholder filnavnet som skal brukes. Den må følge SF_FileSystem.FileNaming-notasjonen.

overskriv: Hvis Sann, kan målfilen bli overskrevet (standard = Usann).

passord (*): En streng uten mellomrom for å beskytte dokumentet.

filternavn (*): Navnet på et filter som skal brukes for å lagre dokumentet. Hvis dette argumentet passeres, må filteret eksistere.

filteralternativer (*): En valgfri streng med alternativer knyttet til filteret.

Eksempel:

I Basic

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

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

SaveCopyAs

Lagrer en kopi av eller eksporter dokumentet til den gitte filplasseringen. Den faktiske plasseringen er uendret.

Returnerer Usann hvis dokumentet ikke kunne lagres. En feil oppstår når overskriving av destinasjonen avvises eller når destinasjonen har sitt skrivebeskyttede attributt satt.

Selve dokumentet trenger ikke være aktivt for å kjøre denne metoden.

Syntaks:

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

Parametre:

filnavn: En streng som inneholder filnavnet som skal brukes. Den må følge SF_FileSystem.FileNaming-notasjonen.

overskriv: Hvis Sann, kan målfilen bli overskrevet (standard = Usann).

passord (*): En streng uten mellomrom for å beskytte dokumentet.

filternavn (*): Navnet på et filter som skal brukes for å lagre dokumentet. Hvis dette argumentet passeres, må filteret eksistere.

filteralternativer (*): En valgfri streng med alternativer knyttet til filteret.

Eksempel:

I Basic

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

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

SetPrinter

Definerer skriveralternativene for dokumentet.

Returnerer Sann når det lykkes.

Syntaks:

svc.SetPrinter(opt printer: str, opt orientation: str, paperformat: str): bool

Parametre:

skriver: Navnet på skriverkøen der den skal skrives ut. Når den er fraværende, angis standardskriveren.

orientering: Enten PORTRETT eller LANDSKAP. Når fraværende, forblir uendret med hensyn til skriverinnstillingene.

papirformat: Spesifiserer papirformatet som en strengverdi som kan være enten A3, A4, A5, LETTER, LEGAL eller TABLOID. Blir uendret hvis ikke spesifisert.

Eksempel:

I Basic

    oDoc.SetPrinter(Orientation := "PORTRAIT")
  
I Python

    doc.SetPrinter(paperformat='TABLOID')
  
warning

Alle ScriptForge Grunnleggende rutiner eller identifikatorer som er prefikset med et understrekingstegn "_" er reservert for intern bruk. De er ikke ment å brukes i grunnleggende makroer eller Python-skript.


Supporter oss!