Sumário

# Serviço SFDocuments.Writer

A biblioteca compartilhada SFDocuments fornece diversos métodos e propriedades que facilitam a gestão e manuseio de documentos do LibreOffice.

Alguns métodos são genéricos para todos os tipos de documentos e são herdados do módulo SF_Document, enquanto outros métodos que são específicos para documentos do Writer são definidos no módulo SF_Writer.

## Invocação do serviço

Antes de utilizar o serviço Writer, é necessário carregar ou importar a biblioteca ScriptForge:

• Macros BASIC precisam carregar a biblioteca ScriptForge usando a seguinte instrução:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Scripts Python exigem uma importação do módulo scriptforge:
from scriptforge import CreateScriptService

O serviço Writer se relaciona com o serviço UI da biblioteca ScriptForge. Abaixo estão alguns exemplos de como o serviço Writer pode ser invocado:

##### Em Basic

O trecho de código abaixo cria uma instância do serviço Writer que corresponde ao documento Writer atualmente ativo.

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

Outra forma de criar uma instância do serviço Writer é usando o serviço UI. No exemplo a seguir um novo documento Writer é criado e oDoc representa a instância do serviço Writer:

        Dim ui As Object, oDoc As Object
        Set ui = CreateScriptService("UI")
        Set oDoc = ui.CreateDocument("Writer")

Ou usando o método OpenDocument do serviço UI:

        Set oDoc = ui.OpenDocument("C:\Me\MyFile.odt")

Também é possível instanciar o serviço Writer usando o método CreateScriptService:

        Dim oDoc As Object
        Set oDoc = CreateScriptService("SFDocuments.Writer", "MyFile.odt")

No exemplo acima, "MyFile.odt" é o nome de uma janela de documento aberto. Se este argumento não for fornecido, a janela ativa é considerada.

É recomendado liberar recursos após o uso:

        Set oDoc = oDoc.Dispose()

Entretanto, se o documento foi fechado usando o método CloseDocument, não é necessário liberar recursos usando o comando descrito acima.

##### Em Python

        myDoc = CreateScriptService("Writer") ' Default = ActiveWindow

        ui = CreateScriptService("UI")
        myDoc = ui.CreateDocument("Writer")

        myDoc = ui.OpenDocument(r"C:\Documents\MyFile.odt")

        myDoc = CreateScriptService("SFDocuments.Writer", "MyFile.odt")
        myDoc.Dispose()

O uso do prefixo "SFDocuments." ao chamar o serviço é opcional.

## Definições

## Propriedades

## Métodos

Lista de Métodos no Serviço Writer
Forms | ImportStylesFromFile | PrintOut

## Forms

Dependendo dos parâmetros fornecidos este método retornará:

- Um Array indexado em zero (ou uma tupla em Python) com os nomes de todos os formulários contidos no documento (se o argumento form estiver ausente)

- Uma instância do serviço SFDocuments.Form representando o formulário especificado como argumento.

Este método é aplicável apenas a documentos do Writer. Documentos Calc e Base possuem sua própria implementação do método Forms nos serviços Calc e Base, respectivamente.

### Sintaxe:

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

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

svc.Forms(form: int): svc

### Parâmetros:

form: Nome ou índice correspondente a um formulário armazenado no documento. Se este argumento estiver ausente, o método retornará uma lista com os nomes de todos os formulários disponíveis no documento.

### Exemplo:

Nos exemplos abaixo, a primeira linha obtém os nomes de todos os formulários do documento e a segunda linha recupera o objeto Form do formulário com nome "Form_A".

##### Em Basic

        Set FormNames = oDoc.Forms()
        Set FormA = oDoc.Forms("Form_A")

##### Em Python

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

## ImportStylesFromFile

Esse método carrega todos os estilos pertencentes a uma ou mais famílias de estilos de um arquivo fechado para o documento real. O documento real deve ser um Calc ou um Writer.

São sempre importados juntos:

- ParagraphStyles e CharacterStyles

- NumberingStyles e ListStyles

Retorna True se os estilos foram importados com êxito.

### Sintaxe:

svc.ImportStylesFromFile(filename: str, families: str[1..*], overwrite = False): bool

### Parâmetros:

Filename: o arquivo a partir do qual os estilos serão carregados na notação FileSystem. Presume-se que o arquivo seja do mesmo tipo de documento que o documento real.

Families: Uma das famílias de estilo presentes no documento real, como uma cadeia de caracteres que diferencia maiúsculas de minúsculas ou uma matriz dessas cadeias. Deixe esse argumento em branco para importar todas as famílias.

Overwrite: Quando True, os estilos reais podem ser substituídos. O padrão é False.

### Exemplo:

##### Em Basic

        oDoc.ImportStylesFromFile("C:\User\Documents\myFile.ods", "ParagraphStyles", True)

##### Em Python

        doc.ImportStylesFromFile('C:\User\Documents\myFile.ods', ("ParagraphStyles",), False)

## PrintOut

Envia o conteúdo do documento para a impressora. A impressora pode ser definida previamente por padrão, pelo usuário ou pelo método SetPrinter do serviço Document. Retorna True se bem-sucedido.

### Sintaxe:

svc.PrintOut(opt pages: str = "", opt copies: num = 1, opt printbackground: bool = True, opt printblankpages: bool = False, opt printevenpages: bool = True, opt printoddpages: bool = True, opt printimages: bool = True): bool

### Parâmetros:

pages: String contendo as páginas a serem impressas, da mesma forma como é feita a definição usando a interface do usuário. Por exemplo: "1-4;10;15-18". Caso este argumento seja omitido, todas as páginas serão impressas.

copies: Número de cópias. O padrão é 1.

printbackground: Imprime a imagem de fundo quando True (padrão).

printblankpages: Quando False (padrão), não imprime páginas em branco.

printevenpages: Imprime páginas pares quando True (padrão).

printoddpages: Imprime páginas ímpares quando True (padrão).

printimages: Imprime objetos gráficos quando True (padrão).

### Exemplo:

##### Em Basic

          oDoc.PrintOut("1-4;10;15-18", Copies := 2, PrintImages := False)

##### Em Python

        doc.PrintOut(printblankpages = True, copies = 3)

Todas as rotinas ou identificadores do ScriptForge em Basic que possuem o caractere "_" como prefixo são reservadas para uso interno. Elas não devem ser usadas em macros escritas em Basic ou em Python.

Tópicos relacionados

Serviço SFDocuments.Document

Serviço ScriptForge.UI

♥ Doe para nosso projeto! ♥