dokos gives the possibility to completely customize your print formats for all document types.
You can use pre-configured print styles and settings or completely customize your print formats directly from the user interface.
## 1. Configure a print format
In order to configure your print formats, dokos provides two levels of settings:
1. Print settings
These settings are global and affect all print formats
2. Print format
Each print format has its own set of settings, applicable only to itself.
## 2. Print settings
In order to configure your print settings, go to `Settings > Print Format`.
### 2.1. PDF settings
-**Send Print as PDF**: It will send all document print attached to an email as a PDF file.
If not set, all document prints will be sent as HTML files.
-**Repeat Header and Footer in PDF**: The header and footer of the PDF will be repeated on all pages.
If not set, the header will be only added to the first page and the footer will not be displayed.
-**PDF Page Size**: Officially supported page sizes are `A4` and `Letter`.
:::tip Pro Tip
If needed you can customize the page size field to add other options supported by [wkhtmltopdf](https://github.com/wkhtmltopdf/wkhtmltopdf/blob/master/src/lib/pdfsettings.cc)(The pdf generation library).
E.g. A0, A1,..., A5, A6,... Folio, Tabloid,...
:::
### 2.2. Page settings
-**Print with letterhead**: Enables the `Letter Head` option of the print preview by default.
It can be overriden in each document.
-**Compact Item Print**: Enables a more compact print format for item tables.
-**Allow Print for Draft**: Enables the print view for draft documents.
-**Send document web view link in email**: If set, it will add a link to view an HTML version of the document print in the recipients's browser.
-**Always add "Draft" Heading for printing draft documents**: Adds the word `DRAFT` at the top of every printed draft document.
-**Allow page break inside tables**: If enable, users will be able to create page break between items by checking a checkbox inside each item line.
-**Allow Print for Cancelled**: Enables the print view for cancelled documents.
-**Print taxes with zero amount**: Will print tax lines with a value equal to 0. Otherwise they will not be printed.
### 2.3. Print server
You can figure a print server linked to dokos by adding you server IP and connection port.
dokos will fetch all printers linked to this address and you will be able to select the printer to use in order to print documents from the system.
:warning: **You may need to install additional python libraries to your servers**
### 2.4. Print style
A print style is a CSS sheet adding style to your print format. You can use the [Bootstrap 3.3](https://getbootstrap.com/docs/3.3/getting-started/) framework and use its classes and components.
You can choose between several print styles provided by default with dokos or create your own print style.
A print style will be applied by default to all print formats created for your dokos site.
They can be overriden in each print format by specific CSS style.
Therefore, it is recommended to create a basic style that will be applied to all your documents print formats and to only add some specific style for each print format if needed.
Standard print formats can not be modified, because they may be updated with the software over times.
Instead, it is recommended to copy the standard print format you want to modify, to edit it and to select it in your print settings.
You may also disable print styles you do not wish to use.
### 2.5. Fonts
You can choose between several fonts provided by default and adjust the standard font size of your print formats.
## 3. Print format
There are several types of print formats:
1.**Standard**: Are embedded in the code of dokos and may be updated over time. These print formats can be copied to be customized.
2.**Not standard** and not **custom**: Customized print formats modified through the **Print Format Builder**.
3.**Not standard** and **custom**: Customized print formats in [Jinja](https://jinja.palletsprojects.com/en/master/) and generated server side or client side.
A print format can be created and modified through two different channels:
1. Go to `Settings > Print Format` and click on new or select your print format to edit.
2. If your print format is **not standard** and not a **custom** print format, you can go to `Settings > Print format builder` and select your print format or a reference document to create a new one.
### 3.1. Standard print formats
Standard print formats are provided with the software and can be used as is or customized.
In order to customize them, you need to make a copy (`Menu > Duplicate`) and to name your copy differently from standard print format.
Each print format is linked with a module and a reference document type.
You have access to all fields in the reference and your print format will only be fetched in this document type's printview.
When duplicating a standard print format, make sure you keep the same type of format: if `Custom Format` is not checked, you must use the Print Format Builder to customize it. Otherwise you'll end up making an entirely different print format.
### 3.2. User specific print formats
### 3.2.1. Custom format
#### Print format type
A custom format can be of two types:
- JINJA: Will be printed server side
- JS: Will be printed in the web browser
You can build your print format in HTML using the [Jinja](https://jinja.palletsprojects.com/en/master/) language and add style in CSS using [Bootstrap 3.3](https://getbootstrap.com/docs/3.3/getting-started/) classes and components.
If your printer allows raw printing, you can provide printer specific commands by checking **Raw Printing**.
### 3.2.2. Print Format Builder generated format
If you prefer to use the print format builder, you can define a few additional settings specific for your print format:
-**Align Labels to the Right**: Will align all labels to the right. Otherwise they will be aligned left by default.
-**Show Section Headings**: Will display the section header in the print format. This header can be customized in the print format builder.
-**Show Line Breaks after Sections**: Will add line breaks after each section
-**Default Print Language**: Will be selected by default when printing a document
-**Font**: Will override the global font defined in print settings
You can also add some CSS style in order to override the default style of your print format.
#### Edit format
You can then click on `Edit Format` to start editing your print format.
The print format builder will give you the possibility to add sections and columns as well as edit the heading of your print format.
#### Sections and columns
You can add as many sections as you want and up to 4 columns per section.
Just click on the wheel at the top of each section to configure it:
-**N° of columns**: Add up to 4 columns
-**Section heading**: Edit the title of the section. It will only be displayed if the setting is enabled in the print format properties (see above)
-**Page Break**: Will add a page break just below this section.
You can remove a section by clicking on the `remove` button.
#### Heading
You can also edit the Heading displayed at the top of the first page of your document.
Just change the labels or customize your heading completely if you feel comfortable with HTML and/or Jinja.
#### Fields
Once your layout is ready, just drag and drop fields in each columns to display them on your print format.
If the field has no value it will not be displayed.
By default, you can add all fields available for printing in the reference document.
If you want to fetch a value from another document linked to your reference document, you can add a `Custom HTML` field and use Jinja code.
E.g. You want to fetch the default bank account of a customer to print it on his/her invoice:
```
{% set bank_account = frappe.db.get_value("Customer", doc.customer, "default_bank_account") %}
<div class="col-md-9">{{ bank_account or '' }}</div>
</div>
```
#### Translations
If you add translatable labels to your code, don't forget to also add translations for each language you plan to use in the `Translation` document type.
### 3.3. Several print formats
If you have several print formats for one document, click on `Make Default` to define the most used format as default for your document.
dokos donne la possibilité de personnaliser complètement vos formats d'impression pour tous les types de documents.
Vous pouvez utiliser les styles et paramètres d'impression pré-configurés ou personnaliser complètement vos formats d'impression directement depuis l'interface utilisateur.
## 1. Configurer un format d'impression
Afin de configurer vos formats d'impression, dokos vous fournit deux niveaux de paramétrage:
1. Paramètres d'impression
Ces paramètres sont globaux et affectent tous les formats d'impression.
2. Format d'impression
Chaque format d'impression a ses propres paramètres applicable seulement pour lui-même.
## 2. Paramètres d'impression
Afin de configurer vos paramètres d'impression, allez à `Paramètres > Format d'impression`.
### 2.1. Paramètres PDF
-**Envoyer les impressions en PDF**: Cela enverra tous les documents joints à un email au format PDF.
Dans le cas contraire, toutes les impressions de documents seront envoyées au format HTML.
-**Répéter l'en-tête et le pied de page sur les PDF**: L'en-tête et le pied de page du PDF seront répétés sur toutes les pages.
Dans le cas contraire, l'en-tête sera seulement ajouté sur la première page et le pied de page ne sera pas affiché.
-**Taille de la page en PDF**: Les tailles de pages officiellement supportées sont `A4` et `Lettre`.
:::tip Astuce Pro
Si besoin, vous pouvez personnaliser le champ de taille de la page en PDF pour ajouter d'autres options supportées par [wkhtmltopdf](https://github.com/wkhtmltopdf/wkhtmltopdf/blob/master/src/lib/pdfsettings.cc)(La librairie de génération de PDF).
Ex. A0, A1,..., A5, A6,... Folio, Tabloid,...
:::
### 2.2. PARAMÈTRES DE LA PAGE
-**Imprimer avec un en-tête**: Active l'option `En-tête` de l'aperçu avant impression par défaut.
Cette option peut être activée/désactivée dans chaque aperçu avant impression.
-**Impression des articles compacte**: Active un format d'impression plus compact pour les tableaux d'articles.
-**Autoriser les impression des documents en brouillon**: Autorise l'impression des documents en brouillon.
-**Envoyer un lien web vers le document dans les emails**: Si activé, ajoutera un lien pour voir une version HTML du document imprimé dans le navigateur du destinataire.
-**Toujours ajouter "Brouillon" pour l'impression des documents brouillons**: Ajoute le mot `BROUILLON` en haut des impressions de tous les documents en brouillon.
-**Autoriser les sauts de page dans les tableaux**: Si activé, les utilisateurs peuvent créer des sauts de page entre deux articles en cochant la case correspondante dans chaque ligne d'article.
-**Autoriser les impressions des documents annulés**: Autorise l'impression de documents annulés.
-**Impression des taxes avec un montant nul**: Imprimera les lignes de taxes avec une valeur égale à 0. Dans le cas contraire, elles ne seront pas imprimées.
### 2.3. Serveur d'impression
Vous pouvez configurer un serveur d'impression lié à dokos en ajoutant l'adresse IP du serveur et le port de connexion.
dokos récupérera toutes les imprimantes liées à cette adresse et vous pourrez sélectionner l'imprimante à utiliser afin de pouvoir imprimer des documents depuis le logiciel.
:warning: **Vous devrez peut-être installer des librairies python additionnelles sur vos serveurs**
### 2.4. Style d'impression
Un style d'impression est une feuille CSS ajoutant du style à votre format d'impression. Vous pouvez utiliser le framework [Bootstrap 3.3](https://getbootstrap.com/docs/3.3/getting-started/) avec ses classes et composants.
Vous pouvez choisir entre différents styles d'impression fournis par défaut avec dokos ou créer votre propre style d'impression.
Un style d'impression sera appliqué par défaut à tous les formats d'impression créés pour votre site dokos.
Ils peuvent être écrasés dans chaque format d'impression par du style CSS spécifique.
De ce fait, il est recommandé de créer un style de base qui sera appliqué à tous les formats d'impression de vos documents et de seulement ajouter du style spécifique pour chaque format d'impression si besoin.
Les formats d'impression standards ne peuvent pas être modifiés, car ils peuvent être mis à jour avec le logiciel dans le temps.
A la place, il est recommandé de copier le format d'impression standard que vous souhaitez modifier, de l'éditer et de le sélectionner dans vos paramètres d'impression.
Vous pouvez aussi désactiver les styles d'impression que vous ne souhaitez pas utiliser.
### 2.5. Polices
Vous pouvez choisir différentes polices fournies par défaut et ajuster la taille de police standard de vos formats d'impression.
## 3. Format d'impression
Il y a plusieurs types de formats d'impression:
1.**Standard**: Inclus avec le code de dokos et peuvent être mis à jour dans le temps. Ces formats d'impression peuvent être copiés pour être personnalisés.
2.**Non standard** et non **personnalisé**: Formats d'impression personnalisé modifié via l'**Editeur de format d'impression**.
3.**Non standard** et **personnalisé**: Formats d'impression personnalisés en [Jinja](https://jinja.palletsprojects.com/en/master/) et générés sur le serveur ou dans le navigateur.
Un format d'impression peut être créé et modifié via deux canaux différents:
1. Allez à `Paramètres > Format d'impression` et cliquez sur nouveau ou sélectionnez le format à éditer.
2. Si votre format d'impression est **non standard** et n'est pas **personnalisé**, vous pouvez allez à `Paramètres > Editeur de format d'impression` et sélectionner votre format d'impression ou un document de référence pour en créer un nouveau.
### 3.1. Format d'impression standard
Les formats d'impression standards sont fournis avec le logiciel et peuvent être utilisés tels quels ou personnalisés.
Afin de les personnaliser, vous devez faire une copie (`Menu > Dupliquer`) et nommer votre copie différemment du format standard.
Chaque format d'impression est lié avec un module et un type de document de référence.
Vous avez accès à tous les champs de la référence et votre format d'impression sera uniquement proposé dans l'aperçu avant impression de ce type de document.
Lorsque vous dupliquez un format d'impression, assurez vous de conserver le même type de format: si `Format personnalisé` n'est pas coché, vous devez utiliser l'éditeur de format d'impression pour le personnaliser. Dans le cas contraire, vous créerez simplement un format d'impression complètement différent.
### 3.2. Formats d'impression spécifiques aux utilisateurs
### 3.2.1. Format personnalisé
#### Type de format d'impression
Un format d'impression personnalisé peut être de deux types:
- JINJA: Sera imprimé sur le serveur
- JS: Sera imprimé dans le navigateur
Vous pouvez construire votre format d'impression en HTML en utilisant le language [Jinja](https://jinja.palletsprojects.com/en/master/) et ajouter du style en CSS en utilisant les classes et composants de [Bootstrap 3.3](https://getbootstrap.com/docs/3.3/getting-started/).
Si votre imprimante permet l'impression brute, vous pouvez lui envoyer des commandes spécifiques en cochant **Impression brute**.
### 3.2.2. Format généré via l'éditeur de format d'impression
Si vous préférez utiliser l'éditeur de format d'impression, vous pouvez définir quelques paramètres additionnels pour votre format d'impression:
-**Alignez les étiquettes à droite**: Alignera tous les libellés à droite. Si désactivé, tous les libellés seront alignés à gauche par défaut.
-**Afficher les titres de section**: Affichera le titre de chaque section dans le format d'impression. Chaque titre est personnalisable dans l'éditeur de format d'impression.
-**Afficher les sauts de Ligne après chaque section**: Ajoutera des sauts de lignes après chaque section.
-**Langue d'impression par défault**: Sera sélectionné par défaut lors de l'impression du document.
-**Police de caractère**: Ecrasera la police globale sélectionnée dans les paramètres d'impression.
Vous pouvez aussi ajouter du style en CSS pour écraser le style par défaut de votre format d'impression.
#### Modifier le format
Vous pouvez ensuite cliquer sur `Modifier le format` pour commencer à éditer votre format d'impression.
L'éditeur de format d'impression vous donnera la possibilité d'ajouter des sections et colonnes ainsi que d'éditer la section titre de votre format d'impression.
#### Sections et colonnes
Vous pouvez ajouter autant de sections que vous le souhaitez et jusqu'à 4 colonnes par section.
Cliquez simplement sur la roue en haut à droite de chaque section pour les configurer:
-**Nb de Colonnes**: Ajoutez jusqu'à 4 colonnes.
-**Titre de la section**: Editez le titre de la section. Il sera seulement affiché sur le paramètre est activé dans les propriétés du format d'impression (voir ci-dessus)
-**Saut de page**: Ajoutera un saut de page juste sous cette section.
Vous pouvez aussi supprimer une section en cliquant sur le bouton `supprimer`.
#### Section titre
Vous pouvez aussi éditer la section titre affichée en haut de la première page de votre document.
Modifiez simplement le libellé ou personnalisés la section complètement si vous êtes à l'aise en HTML et/ou Jinja.
#### Champs
Une fois que votre structure de document est prête, glissez/déposez simplement des champs dans chaque colonne pour les afficher sur votre format d'impression.
Si le champ n'a pas de valeur, il ne sera pas affiché.
Par défaut, vous pouvez ajouter tous les champs disponibles dans le document de référence.
Si vous souhaitez récupérer la valeur d'un champ disponible dans un document lié avec votre document de référence, vous pouvez ajouter un champ `HTML personnalisé` et utiliser du code Jinja.
Ex. Vous voulez afficher le compte bancaire par défaut d'un client dans sa facture:
```
{% set bank_account = frappe.db.get_value("Customer", doc.customer, "default_bank_account") %}
<div class="col-md-9">{{ bank_account or '' }}</div>
</div>
```
#### Traductions
Si vous ajoutez des libellés traductibles dans votre code, n'oubliez pas d'ajouter également des traductions pour toutes les langues que vous envisagez d'utiliser dans le type de document `Traduction`.
### 3.3. Formats d'impression multiples
Si vous avez plusieurs formats d'impression pour un document, cliquez sur `Format par défaut pour ce type de document` pour définir le plus utilisé comme étant le format par défaut pour ce document.