> For the complete documentation index, see [llms.txt](https://docs.eximee.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.eximee.com/budowanie-aplikacji/interfejs-uzytkownika/formularze/biblioteka-komponentow-bazowych/5-dokumenty-i-zaloczniki/generator-dokumentow-documentgenerator.md).

# Generator dokumentów - DocumentGenerator

Komponent służy do generowania dokumentów (PDF) na podstawie szablonów XSL-FO. Pozwala również na zapis wygenerowanych dokumentów do systemu DMS, a także przekazywanie ich zawartości jako zakodowanego ciągu znaków base64.

## Właściwości komponentu

<table><thead><tr><th width="240.683349609375">Właściwość Eximee Designer</th><th width="183.1165771484375">Nazwa atrybutu w Źródle</th><th>Opis</th></tr></thead><tbody><tr><td><strong>Lista dokumentów</strong></td><td>items</td><td>Lista dokumentów do wygenerowania.</td></tr><tr><td><strong>Zapis do DMS</strong></td><td>saveToDms</td><td>Flaga określająca, czy dokument należy zapisać do DMS (domyślna wartość "true").</td></tr><tr><td><strong>Zapis do DMS po porzuceniu wniosku</strong></td><td>saveToDmsOnAbandon</td><td>Flaga określająca, czy dokument należy zapisać do DMS po porzuceniu wniosku (domyślna wartość "false").</td></tr><tr><td><strong>Przekazywanie zawartości dokumentu w </strong><em><strong>base64 String</strong></em></td><td>fileContentInValue</td><td>Flaga określająca, czy w wartości komponentu przekazywana będzie zawartość wygenerowanego pliku w postaci <em>base64 String</em>.</td></tr></tbody></table>

> Więcej informacji o właściwościach komponentu: [Wspólne właściwości komponentów](/budowanie-aplikacji/interfejs-uzytkownika/formularze/praca-z-komponentami-bazowymi/wspolne-wlasciwosci-komponentow.md)

## Lista dokumentów do wygenerowania

Konfigurację komponentu dodajemy w zakładce **Źródło**. Przykładowe konfiguracje:

{% code title="Przykład 1 - Konfiguracja, gdy dane pochodzą z pól formularza" %}

```xml
<p1:GesDocumentGenerator id="GesDocumentGenerator1" inheritLayout="true">
  <p1:GesDocumentGenerator.layoutData>
    <GridData horizontalAlignment="FILL" horizontalSpan="16"/>
  </p1:GesDocumentGenerator.layoutData>
  <data:DocumentGeneratorItems>
    <data:DocumentGeneratorItem generatorName="fop" fileName="my_file.pdf" documentTemplate="my_temp.xsl-*"/>
  </data:DocumentGeneratorItems>
</p1:GesDocumentGenerator>
```

{% endcode %}

{% code title="Przykład 2 - Konfiguracja, gdy dane pochodzą ze zmiennej xmlDocument" %}

```xml
<p1:GesDocumentGenerator id="GesDocumentGenerator1" inheritLayout="false">
  <data:ListeningOn>
    <data:ListenField id="xmlDocument"/>
  </data:ListeningOn>
  <data:ClearOn/>
  <p1:GesDocumentGenerator.layoutData>
    <ns6:GridData horizontalAlignment="LEFT" horizontalSpan="6" verticalAlignment="CENTER"/>
  </p1:GesDocumentGenerator.layoutData>
  <data:DocumentGeneratorItems>
    <data:DocumentGeneratorItem generatorName="fopFromVariable" fileName="my_file.pdf" documentTemplate="my_template.xsl-*"/>
  </data:DocumentGeneratorItems>
</p1:GesDocumentGenerator>
```

{% endcode %}

Powyżej przedstawiono przykładowe konfiguracje dokumentów do wygenerowania. Parametr **generatorName** określa nazwę generatora dokumentów, który ma być użyty do wygenerowania dokumentu, w kolejnym parametrze określamy nazwę pliku (**fileName**), która zostanie zaprezentowana użytkownikowi, a ostatni nazwę szablonu dokumentu dostępnego w repozytorium (**documentTemplate** w formacie NAZWA\_SZABLONU-WERSJA).

{% hint style="warning" %}
Generowanie dokumentów odbywa się zgodnie z przepływem grafu zależności — należy zatem pamiętać, aby ustawić odpowiednio listę nasłuchiwań.

Jeśli komponent znajduje się na ostatniej stronie wniosku, na której są także pola przekazywane do generowanego dokumentu, to komponent musi nasłuchiwać na coś, co się zmienia na wyjście ze strony. Przykłady:

* Utworzenie Exit Service ze zwykłym Echo Service (np. dającym wartość true) i przypisanie wyniku Echo Service do zmiennej, na którą potem dokument generator będzie nasłuchiwał.
* Dodanie w GesDocumentGenerator nasłuchiwania na zmienną predefiniowaną **currentPageMid**.
  {% endhint %}

## Ilustracja komponentu

![Ilustracja 1. Przykładowy wygląd komponentu na wniosku](/files/1a2b13d8ab53abdea162d998660b3c0a9db5107a)

{% hint style="info" %}
Wniosek demo: demoDocuments
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.eximee.com/budowanie-aplikacji/interfejs-uzytkownika/formularze/biblioteka-komponentow-bazowych/5-dokumenty-i-zaloczniki/generator-dokumentow-documentgenerator.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
