Tenesta SFDocuments.Document

Biblioteket SFDocuments gjev metodar og eigenskapar for Ă„ letta handsaming og manipulering av LibreOffice-dokument.

Metodar som kan brukast pÄ alle typar av dokument (tekstdokument, rekneark, presentasjonar og sÄ vidare) vert leverte av tenesta SFDocuments.Document. Nokre eksempel er:

warning

Dei eigenskapane, metodane eller argumenta som er merkte med (*) kan IKKJE brukast pÄ database-dokument.


Metodar og eigenskapar som er spesifikke for visse LibreOffice-komponentar vert lagra i Ätskilde tenester, som for eksempel SFDocuments.SF_Calc og SFDocuments.SF_Base.

SjÞlv om Basic-sprÄket ikkje tilbyr nedarving mellom objektklassar, kan objektklassane sjÄast pÄ som underklasser av tenesta SFDocuments.Document. Slike underklassar kan kalla opp dei eigenskapane og metodane som er omtalte nedanfor.

Oppkall av tenester

FÞr du brukar tenesta Document mÄ biblioteket ScriptForge vera lasta inn eller importert:

note

‱ Grunnleggjande makroar krev innlasting av biblioteket ScriptForge ved hjelp av denne setninga:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

‱ Python-skript krev import frĂ„ scriptforge-modulen:
from scriptforge import CreateScriptService


Nedanfor finn du tre ulike mÄtar Ä kalla opp tenesta Document.

I Basic

Med metoden getDocument frÄ tenesta ScriptForge.UI:


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

Du kan ogsÄ bruka metodane CreateDocument og OpenDocument frÄ tenesta UI.


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

Bruka eit vindaugenamn viss dokumentet alt er opna-


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

Bruka dokumentet det vert referert til av ThisComponent. Dette er spesielt nyttig nÄr du kÞyrer ein makro frÄ Basic IDE.


    Dim oDoc As Object
    Set oDoc = CreateScriptService("Document", ThisComponent)
  

FrÄ ein makro utlÞyst av ei dokument-hending.


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

Tenesta Document er i nĂŠr slekt med tenestene UI og FileSystem.


Bortsett frÄ nÄr dokumentet vart lukka av eit program med CloseDocument-metoden (det er dÄ overflÞdig),vert det tilrÄdd Ä frigjera ressursar 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")
  

    bas = CreateScriptService("Basic")
    doc = CreateScriptService("Document", bas.ThisComponent)
  

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

Bruk av prefikset «SFDocuments.» ved oppkall av tenesta er frivillig.


Eigenskapar

Namn

Skriveverna

Type

Beskriving

CustomProperties (*)

Nei

Dictionary service

Returnerer ein objektfÞrekomst frÄ ScriptForge.Dictionary. Etter ei oppdatering kan den igjen sendast til den gjeldande eigenskapen som oppdaterer dokumentet.
Individuelle element i ordboka kan vera anten strenge, tal, (Basic-)dato eller com.sun.star.util.Duration-element.

Description (*)

Nei

String

Gjev tilgang til dokumenteigenskapen Description (ogsÄ kjend som «Nerknadar»)

DocumentProperties (*)

Ja

Dictionary service

Returnerer eit ScriptForge.Dictionary-objekt som inneheld alle oppfĂžringane. Dokumentstatistikk er inkludert. Legg merke til at dei er spesifikke for dokumenttypen. For eksempel inneheld eit Calc-dokument ei CellCount-oppfĂžring. Andre dokument gjer det ikkje.

DocumentType

Ja

String

Strengverdi med dokumenttypen («Base», «Calc», «Writer» og sÄ vidare)

ExportFilters

Ja

String array

Returnerer ei liste med eksportfilternamna som kan brukast for det gjeldande dokumentet som ei nullbasert matrise med strengar. Filter brukte for bÄde import/eksport vert ogsÄ returnerte.

ImportFilters

Ja

String array

Returnerer ei liste med eksportfilternamna som kan brukast for det gjeldande dokumentet som ei nullbasert matrise med strengar. Filter brukte for bÄde import/eksport vert ogsÄ returnerte.

IsBase
IsCalc
IsDraw
IsImpress
IsMath
IsWriter

Ja

Boolean

NÞyaktig éin av desse eigenskapane er Sann for eit gjeve dokument.

Keywords (*)

Nei

String

Gjev tilgang til nĂžkkelordeigenskapen for dokumentet. Representert som ei kommadelt liste over nĂžkkelord

Readonly (*)

Ja

Boolean

True viss dokumentet faktisk er i skriveverna tilstand

Subject (*)

Nei

String

Gjev tilgang til emne-eigenskapen for dokumentet.

Title (*)

Nei

String

Gjev tilgang til tittel-eigenskapen for dokumentet.

XComponent

Ja

UNO-objekt

UNO-objektet com.sun.star.lang.XComponent eller com.sun.star.comp.dba.ODatabaseDocument, som representerer dokumentet


Eksempel:

I Basic

Eksempelet nedanfor skriv ut alle eigenskapane brukte i dokument. Merk at objektet oDoc, som vert returnert av metoden UI.OpenDocument, er eit 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 dokumenteigenskapar i eit Python-skript som brukaren treng for Ä fÄ direkte tilgang til dei ved hjelp av namna, som vist nedanfor:


    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 metodar i tenesta document

Activate
CloseDocument
CreateMenu
ExportAsPDF

PrintOut
RemoveMenu
RunCommand
Save

SaveAs
SaveCopyAs
SetPrinter


Activate

Returnerer Sann viss dokumentet kunne aktiverast. Elles er det inga endring i det faktiske brukargrensesnittet. Det svarar til metoden Activate i tenesta UI.

Denne metoden er nyttig nÄr ein mÄ fokusera pÄ eit dokument som er minimert eller gÞymd.

Syntaks:

svc.Activate(): bool

Eksempel:

Eksempelet nedanfor finn at fila «Mi_Fil.ods» alt er opna, men ikkje 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

Hugs at du kan kalla opp tenesta Document ved Ä overfÞra anten «Document» eller «SFDocuments.Document» til tenesta CreateScriptService


CloseDocument

Lukker dokumentet. Viss dokumentet alt er lukka, same korleis, har denne metode ingen verknad og returnerer Usann.

Metoden returnerer ogsÄ Usann viss brukaren avviser Ä lukka han.

Returnerer Sann viss det lukkast Ă„ lukka dokumentet.

Syntaks:

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

Parametrar:

saveask: Viss Sann (standard) vert brukaren beden om Ă„ stadfesta om endringane skal skrivast til lagringsmediumet. Argumentet vert ignorert om det ikkje er gjort endringar i dokumentet.

Eksempel:

I Basic

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

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

CreateMenu

Lagar ei ny menyoppfĂžring i menylinja i eit gjeve dokumentvindauge.

Denne metode returnerer ei fĂžrekomst av tenesta SFWidgets.Menu.

note

Menyen som er laga er berre tilgjengeleg under den gjeldande LibreOffice-Þkta og vert ikkje lagra korkje i dokumentet eller i dei globale programinnstillingane. Difor vert menyen borte nÄr du lukkar dokumentvindauget. Han kjem fram igjen fÞrst nÄr makroen som lagar menyen vert kÞyrd pÄ nytt.


Syntaks:

svc.CreateMenu(menuheader: str, [before: any], submenuchar: str = ">"): svc

Parametrar:

menuheader: Namnet pÄ det Þvste nivÄet pÄ den nye menyen.

fÞr: Namnet (som ein streng) eller posisjonen (som eit heiltal som byrjar pÄ 1) pÄ ein eksisterande meny som den nye menyen skal setjast framfÞre. Viss det ikkje er definert nokon verdi for dette argumentet, vert menyen bli sett opp pÄ den siste posisjonen i menylinja.

submenuchar: Skiljeteiknet som vert brukt til Ä laga menytre nÄr metodar som AddItem frÄ tenesta Meny vert kalla opp. Standardverdien er «>».

Eksempel:

I Basic

    Dim oDoc as Object, oMenu as Object
    Set oDoc = CreateScriptService("Document")
    Sett oMenu = oDoc.CreateMenu("Min meny")
    With oMenu
        ' Legg til element i menyen
        .AddItem("Item A")
        .AddItem("Item B")
        ' ...
        ' NÄr menyen er oppretta, kan fÞrekomsten av tenesta fjernast
        .Dispose()
    End With
  
I Python

    doc = CreateScriptService("Document")
    menu = doc.CreateMenu("Min meny")
    menu.AddItem("Item A")
    menu.AddItem("Item B")
    # ...
    menu.Dispose()
  
tip

SjÄ hjelpsida SFWidgets.Menu for Ä lÊra meir om korleis du kan laga eog fjerna menyar i LibreOffice dokumentvindauge.


ExportAsPDF

Eksporterer dokumentet direkte som ei PDF-fil til den gjevne plasseringa. Returnerer Sann viss PDF-fila vart laga.

Innstillingane for eksport kan setjast anten manuelt med dialogvindauget Fil → Eksporter som → Eksporter som PDF eller ved Ă„ kalla opp metodane GetPDFExportOptions og SetPDFExportOptions frĂ„ tenesta Session.

Syntaks:

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

Parametrar:

filnamn: Den fullstendige stien og filnamnet pÄ PDF-fila som skal lagast. Det mÄ fÞlgja notasjonen i SF_FileSystem.FileNaming.

overskriv: Spesifiserer om mÄlcella kan overskrivast (Standard = Usann). Det kjem opp ei feilmelding viss overwrite er sett til Usann og mÄlfila finst frÄ fÞr.

sider: Streng som spesifiserer kva for sider som skal eksporterast. Dette argument brukar den same notasjonen som i dialogvindauget Filer → Eksporter som → Eksporter som PDF.

password: Spesifiserer eit passord for Ă„ opna PDF-fila.

vassmerke: Tekst som skal brukast som vassmerke i PDF-fila og som vert sett inn pÄ kvar side i PDF-dokumentet.

Eksempel:

I Basic

Eksempelet nedanfor eksporterer det gjeldande dokumentet som ei PDF-fil, definerer eit passord og overskriv mÄlfila viss denne finst frÄ fÞr.


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

Kodesnutten nedanfor hentar dei gjeldande innstillingane for eksport av PDF og brukar desse for Ă„ laga PDF-fila.


    Dim exportSettings as Object, oSession as Object
    oSession = CreateScriptService("Session")
    exportSettings = oSession.GetPDFExportOptions()
    ' Set innstillinga for eksport av merknadar som PDF-notat til Sann.
    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 innhaldet i dokument til standardskrivaren eller til den skrivaren som er definert med metoden SetPrinter.

Returnerer Sann viss utskrivinga av dokumentet lukkast.

Syntaks:

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

Parametrar:

sider: Sidene som skal skrivast ut som ein streng, som i brukargrensesnittet. Eksempel: «1-4;10;15-18». Standard er alle sidene.

kopiar: Talet pÄ kopiar. 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'):
        # ...
  

RemoveMenu

Fjernar ein meny frÄ det Þvste nivÄet i menylinja i eit gjeve dokumentvindauge.

Returnerer Sann viss den gjevne menyen kan fjernast. Viss den gjevne menyen ikkje finst, vil metoden returnera Usann.

note

Denne metoden kan brukast for Ä fjerna alle menyoppfÞringar frÄ dokumentvindauget, inkludert standardmenyar. Ingen av desse endringane i menylinja vert lagra i dokumentet eller i programinnstillingane. For Ä gjenoppretta menylinja til standardinnstillingane, lukk og opna dokumentvindauget pÄ nytt.


Syntaks:

svc.RemoveMenu(menuheader: str): bool

Parametrar:

menuheader: Namnet pÄ det Þvste nivÄet i den nye menyen.

Eksempel:

I Basic

    Dim oDoc as Object
    Set oDoc = CreateScriptService("Document")
    oDoc.RemoveMenu ("Min meny")
  
I Python

    doc = CreateScriptService("Document")
    doc.RemoveMenu("Min meny")
  
tip

SjÄ hjelpsida SFWidgets.Menu for Ä lÊra meir om korleis du kan laga eog fjerna menyar i LibreOffice dokumentvindauge.


RunCommand

KÞyrer ein UNO-kommando pÄ dokumentvindauget som er knytt til tenestefÞrekomsten. Nokre typiske kommandoar er: Lagra, Lagra som, Eksporter til PDF, Angra, Kopier, Lim inn, osv.

Dokumentet treng ikkje vera aktivt for Ă„ kunna kĂžyra kommandoar.

Kommandoar kan kĂžyrast med eller utan argument. Argument vert ikkje validerte fĂžr kommandoen vert utfĂžrt. Viss kommandoen eller argumenta i han er ugyldige, skjer det ingenting.

tip

Du finn ei fullstendig liste over UNO-kommandoar som kan kÞyrast i LibreOffice pÄ Wiki-sida Development/DispatchCommands.


Syntaks:

svc.RunCommand(command: str, [args: any])

Parametrar:

command: Streng som inneheld UNO-kommandonavnet. Strengen skil mellom store og smÄ bokstavar. Prefikset ".uno:" i kommandoen er valfritt. Det vert ikkje kontrollert om kommandoen er korrekt. Viss det ikkje skjer noko etter at kommandoen er kalla opp, er kommandoen sannsynlegvis feil.

args: For kvart argument som skal sendast vidare til kommandoen, mÄ du spesifisera eit par som inneheld namnet og verdien til argumentet.

Eksempel:

I Basic

Eksempelet nedanfor kÞyrer kommandoen SelectData i ei Calc-fil kalla «MyFile.ods» som vil resultera i val av dataomrÄdet basert pÄ den merkte cella. Merk at denne kommandoen ikkje krev nokre argument.


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

Nedanfor er eit eksempel som kÞyrer UNO-kommandoen ReplaceAll og sender verdiar for argumenta SearchString og ReplaceString. NÄr du kÞyrer denne kommandoen vert alle fÞrekomstar av strengen «abc» bytt ut med «ABC» i det gjeldande arket.


    ' Argument sende til kommandoen:
    ' SearchString  = "abc"
    ' ReplaceString = "ABC"
    oDoc.RunCommand(".uno:ReplaceAll", "SearchString", "abc", "ReplaceString", "ABC")
  

Merk at Ă„ kalla opp kommandoen ReplaceAll utan argument vil opna dialogvindauget SĂžk og byt ut.

I Python

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

    doc.RunCommand(".uno:ReplaceAll", "SearchString", "abc", "ReplaceString", "ABC")
  

I Python er det ogsÄ mogleg Ä kalla opp RunCommand ved Ä bruka nÞkkelordargument:


    doc.RunCommand(".uno:ReplaceAll", SearchString = "abc", ReplaceString = "ABC")
  
tip

Kvar LibreOffice-komponent har sitt eige sett med tilgjengelege kommandoar. Ein enkel mĂ„te Ă„ lĂŠra kommandoar pĂ„ er Ă„ gĂ„ til VerktĂžy → Tilpass → Tastatur. NĂ„r du plasserer musa over ein funksjon i Funksjon-lista, vert det vist eit verktĂžytips med den tilsvarande UNO-kommandoen.


Save

Lagrar dokumentet der det vart henta frÄ. Metoden vert ignorert viss dokumentet ikkje er endra.

Returnerer Usann viss dokumentet ikkje kan lagrast. Det vert sett opp ein feil viss fila er opna som skriveverna eller viss det er ei ny fil utan namn.

Dokumentet treng ikkje vera aktivt for Ă„ bruk denne metoden.

Syntaks:

svc.Save(): bool

Eksempel:

I Basic

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

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

SaveAs

Lagrar dokumentet i den gjevne filplasseringa. Den nye plasseringa vert det nye filnamnet som vert brukt av det enkle metodekallet «Lagra».

Returnerer Usann viss dokumentet ikkje kan lagrast. Der vert sett opp ein feil viss mÄlet ikkje kan overskrivast eller nÄr mÄlet er skriveverna.

Dokumentet treng ikkje vera aktivt for Ă„ bruk denne metoden.

Syntaks:

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

Parametrar:

filnamn: Ein streng som inneheld det filnamnet som skal brukast. Namnet mÄ fÞlgja notasjonen SF_FileSystem.FileNaming.

overskriv: Viss Sann kan mÄlfila overskrivast (standard = Usann.

passord (*): Ein streng utan mellomrom som skal brukast for Ă„ verna dokumentet.

filternamn (*): Namnet pÄ eit filter som skal brukast for Ä lagra dokumentet. Viss argumentet vert sendt vidare, mÄ filteret finnast.

filterinnstillingar (*): Ein valfri streng med innstillingar for dette filteret.

Eksempel:

I Basic

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

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

SaveCopyAs

Lagrar ein kopi eller eksporterer dokumentet til den gjevne filplasseringa. Den aktuelle plasseringa vert ikkje endra.

Returnerer Usann viss dokumentet ikkje kan lagrast. Der vert sett opp ein feil viss mÄlet ikkje kan overskrivast eller nÄr mÄlet er skriveverna.

Dokumentet treng ikkje vera aktivt for Ă„ bruk denne metoden.

Syntaks:

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

Parametrar:

filnamn: Ein streng som inneheld det filnamnet som skal brukast. Namnet mÄ fÞlgja notasjonen SF_FileSystem.FileNaming.

overskriv: Viss Sann kan mÄlfila overskrivast (standard = Usann.

passord (*): Ein streng utan mellomrom som skal brukast for Ă„ verna dokumentet.

filternamn (*): Namnet pÄ eit filter som skal brukast for Ä lagra dokumentet. Viss argumentet vert sendt vidare, mÄ filteret finnast.

filterinnstillingar (*): Ein valfri streng med innstillingar for dette 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 innstillingane for utskriving av dokument.

Returnerer Sann nÄr han lukkast.

Syntaks:

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

Parametrar:

printer: Namnet pÄ utskriftskÞen det skal skrivast til. NÄr denne manglar, vert standardskrivaren sett.

papirretning: Anten PORTRAIT (stÄande) eller LANDSCAPE (liggjande). NÄr denne manglar vert feltet ikkje endra i hÞve til skrivarinnstillingane.

papirformat: Spesifiserer papirformatet som ein strengverdi som kan vera anten A3, A4, A5, LETTER, LEGAL eller TABLOID. Vert ikkje endra om denne manglar.

Eksempel:

I Basic

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

    doc.SetPrinter(paperformat='TABLOID')
  
warning

Alle ScriptForge Basic-rutinane og -identifikatorane som vert innleidde med understrek «_» er reserverte for internt bruk. Dei er ikkje meint brukte i Basic-makroar.