1. Zielsetzung
In Vi Projekt sollen PDF-Dokumente mit darin benannten Feldern aus den Vi Projekt-Daten ausgefüllt werden können.
Beispiel:
In den globalen Ordnern gibt es Vorlagen für Abnahmeprotokolle. Diese werden zentral gepflegt und sind als ausfüllbare PDF-Dokumente erstellt worden.
Zwei Tage vor einer Abnahme soll ein Abnahmeprotokoll aus den globalen Ordnern in ein Projekt übernommen werden.
Dabei sollen Felder in der PDF-Datei wie die Projektnummer, der Projektname, der Bauort, das Abnahmedatum etc. AUTOMATISCH aus den Vi Projekt-Daten gefüllt werden, so dass im Projekt dann ein quasi vorbereitetes Abnahmedokument steht. Das Ausfüllen des PDFs soll so weit gehen, dass auch Daten im Abnahmeprotokoll automatisch gefüllt werden, wie z. B. "Keller: Ja/Nein" etc. Die Dateninhalte können dabei z. B. aus den Merkmalen im Projekt kommen, die Ihren Ursprung in der Kalkulation von ViBIM solutions / Vi Kalk haben.
2. Vorgehen
Um solche automatisch gefüllten PDF-Dokumente zu erzeugen, ist ein mehrstufiges Vorgehen notwendig:
•Erstellen der PDF-Vorlagendokumente
•Übernehmen der PDF-Vorlagendokumente in das Vi Projekt
•Definition der Feldinhalte für die Felder in den PDF-Vorlagendokumenten
•Anwendung der PDF-Vorlagendokumente
2.1 Erstellen der PDF-Vorlagendokumente
Im ersten Schritt müssen die PDF-Vorlagendokumente erstellt werden.
Das kann z. B. mit Libre Office erfolgen. Libre Office ist Freeware und somit kostenfrei. Hier im Folgenden wird die Erstellung mit Libre Office 4 dokumentiert.
Das Programm kann man hier kostenfrei herunterladen: https://de.libreoffice.org/download/download/
Um ein PDF-Vorlagen-Dokument zu erstellen, muss eine neue Datei vom Typ xml-Formulardokument erstellt werden.
In einem solchen Dokument können dann im Entwurfsmodus neben festem Text auch benannte Felder verwendet werden, um das Dokument aufzubauen.
Wesentliche Elemente:
•Textfelder
•Markierfelder
•Kombinationsfeld
Textfelder werden verwendet, wenn Informationen aus Vi Projekt ausgegeben werden sollen oder wenn Eingaben im PDF-Dokument erwartet werden.
Markierfelder werden verwendet, wenn im Dokument Informationen als Ja/Nein interpretiert werden sollen
Kombinationsfelder werden verwendet, wenn ein Wert aus einer Liste ausgewählt werden soll.
Ein Beispiel könnte so aussehen:
Wichtig ist, dass alle Felder einen Namen haben, über den die Kommunikation mit Vi Projekt läuft.
Ein Doppelklick öffnet den Eigenschaftsdialog des Feldes:
Bitte vermeiden Sie bei Feldnamen die Verwendung von Umlauten oder Sonderzeichen wie z.B. „_“ etc.
Nach der Gestaltung des Dokumentes wird dieses als PDF-Dokument exportiert:
Das so exportierte Dokument ist jetzt ein PDF-Dokument.
Speichern Sie die im odt-Format erzeugte Basis-Datei für zukünftige Layout-Änderungen des Formulars ab.
WICHTIG: Für eine künftige Bearbeitung muss das Dokument auf „Im Entwurfsmodus öffnen“ geöffnet werden. (Formular > Im Entwurfsmodus öffnen).
2.2 Übernehmen der PDF-Vorlagendokumente in Vi Projekt
Vi Projekt hat für solche PDF-Vorlagendokumente eine eigene Dokumentenklasse, die PDF-Vorlagen.
PDF-Vorlagen werden in Vi Projekt anhand der Dateiendung PDFV erkannt. Um jetzt das aus LibreOffice exportierte PDF-Dokument als PDF-Vorlage in Vi Projekt ablegen zu können, muss das exportierte PDF-Dokument in der Dateinamenserweiterung/Dateiendung geändert werden: Aus dem PDF wird eine PDFV-Datei.
Die Windows-Meldung kann ignoriert werden bzw. können Sie die PDFV-Dateien einmalig auch mit einem pdf-Leseprogramm (z.B. Acrobat Reader®) verknüpfen.
Eine so umbenannte Datei kann dann per Drag + Drop ins Vi Projekt übernommen werden. Es reicht aus, diese Datei in den persönlichen Posteingang zu ziehen. Anhand der Dateiendung wird das Dokument auch in der Klasse der PDF-Vorlagen abgelegt.
Weisen Sie für die weitere Nutzung der Vorlage die entsprechenden Gruppen zu. Nur so ist diese Vorlage als „Neues Dokument“ für die berechtigten Nutzer auswählbar.
2.3 Definition der Feldinhalte für die Felder in den PDF-Vorlagendokumenten
Die Feldinhalte für die dynamischen Felder im PDF-Vorlagendokument müssen dann in den Stammdaten definiert werden. Dazu gibt es einen Stammdatenbereich unter Daten > Stammdaten > Vorlagen/Auswertungen > PDF Feldinhalte
Je nach Feldtyp müssen in der Definition der PDF-Feldinhalte unterschiedliche Einstellungen vorgenommen werden. Folgende Feldtypen stehen zur Verfügung:
•Textfelder
•Markierfelder
•Listenfelder
Textfelder
Textfelder werden aus den Vi Projekt-Daten gefüllt. Analog zur Listenkonfiguration können die Feldinhalte aus verschiedenen Bereichen gewählt werden.
•Fester Text -> der Text wird vorgegeben
•Feld der Klasse „Projekt“ -> Datenfeld aus der Datentabelle „Projekt“
•Feld der Klasse „Vorgang“ -> Datenfeld aus der Datentabelle „Vorgang“
•Feld der Klasse „Adresse“ -> Datenfeld aus der Datentabelle „Adresse“
•Projektbeteiligte -> Ausgabe einer Adresse über die funktionellen Rollen
•Terminlistenfeld -> Ausgabe eines Termins aus dem Bauzeitenplan
•Merkmal -> Ausgabe eines Merkmalswertes des Projektes
Die Definition eins Feldes zur Ausgabe eines Projektbeteiligten sieht so aus:
Die Verbindung zu den Daten wird über die Nummer der funktionellen Rolle hergestellt, das Ausgabeformat kann im Feld Ausgabeformat (Adresse) gewählt werden.
Für ein Merkmal sieht die Einstellung wie folgt aus:
Für ein Terminlistenfeld sieht das dann so aus:
Die Verbindung zu den Daten wird über den Namen des Terminlistenfeldes hergestellt, das Ausgabeformat kann im Feld Ausgabeformat (Datum) gewählt werden.
Markierfelder
Markierfelder sind Checkboxen, die im PDF-Dokument an-/ausgeschaltet werden können. Sie haben keinen vordefinierten Inhalt. Die Definition sieht folgendermaßen aus:
Listenfelder
Listenfelder sind Comboboxen, d.h. hier kann die Auswahl aus einem von mehreren Werten erfolgen. Der Inhalt der Listenfelder wird in den Stammdaten der PDF-Feldinhalte definiert. Die Definition sieht wie folgt aus:
Der Initialwert für das Listenfeld wird als Feldinhalt gesetzt, die auszuwählenden Werte in der Liste Inhalte Auswahlliste (bearbeitbar über Erweitertes Bearbeiten).
3. Anwendung der PDF-Vorlagendokumente
Sofern diese Daten dann vollständig angelegt sind, erfolgt die Umwandlung eines PDF-Vorlagendokuments in ein PDF-Dokument mit ausgefüllten Daten bei verschiedenen Aktionen in Vi Projekt:
•Wird ein PDF-Vorlagendokument (z. B. aus einem globalen Ordner) in einen Dokumentenordner eines Projektes verschoben und wird bei der Vergabe auf diesen Ordner zugegriffen, so steht in der Vergabe (Standard-Leistungsverzeichnis, Lieferanten-Leistungsverzeichnis) ein ausgefülltes PDF zur Verfügung.
•Wird ein solches Dokument in einen Ordner gestellt, der für die Bereitstellung der Daten für das Baustellenportal verwendet wird, so steht dieses ausgefüllte (und weiter ausfüllbare) PDF-Dokumente im Baustellenportal zur Verfügung.
•Über die Workflowaktion „Kopiere Ordnerinhalte“ werden im Projekt ausgefüllte (und weiter ausfüllbare) PDF-Dokumente erzeugt.
Vergabe:
Auf der Seite Anhangdokumente werden die ausgefüllten (und weiter ausfüllbaren) PDF-Dokumente angezeigt:
Standard-Leistungsverzeichnis :
Lieferanten-Leistungsverzeichnis:
(Hinweis: im gezeigten Beispiel fehlen noch Datenzugriffe auf den Bauort).
Dieses ausgefüllte PDF-Dokument wird dann auch z. B. bei der E-Mail-Beauftragung eines Subunternehmers als E-Mail-Anhang verwendet.
E-Mail:
E-Mail-Anhang als PDF:
Baustellenportal:
In gleicher Weise wird ein ausgefülltes (und weiter ausfüllbares Dokument) für die Übergabe an das Baustellenportal erzeugt:
Workflowaktion „Kopiere Ordnerinhalte“:
Über diese Workflowaktion werden alle Dokumente aus der Klasse PDF-Vorlage beim Verschieben ausgefüllt und mit den Vi Projekt-Daten versehen, so dass im Zielordner ausgefüllte (und weiter ausfüllbare Dokumente) Dokumente stehen.
Hinweis: das manuelle Verschieben einer PDF-Vorlage in einen Projekt-Ordner löst KEIN Ausfüllen des Dokumentes aus!
Makro-Code:
Sollten Sie von dem Makro „GetImportDocClass“ eine benutzerspezifische Version einsetzen, so ist diese Version mit dem Standard abzugleichen:
-------------------------------------------------------------------------------------------------
INT GetImportDocClass( STRING FileName, STRING &ClassName )
IF( StrIsEmpty( ClassName ) )
IF( StrCompareNoCase( FileGetFileExt( FileName, FALSE ), ".doc" ) == 0 )
ClassName = "WordText";
ELSEIF( StrCompareNoCase( FileGetFileExt( FileName, FALSE ), ".rtf" ) == 0 )
ClassName = "RichText";
ELSEIF( StrCompareNoCase( FileGetFileExt( FileName, FALSE ), ".eml" ) == 0 )
ClassName = "EMail";
ELSEIF( StrCompareNoCase( FileGetFileExt( FileName, FALSE ), ".pdf" ) == 0 )
ClassName = "PDF";
ELSEIF( StrCompareNoCase( FileGetFileExt( FileName, FALSE ), ".bmp" ) == 0 ||
StrCompareNoCase( FileGetFileExt( FileName, FALSE ), ".jpg" ) == 0 ||
StrCompareNoCase( FileGetFileExt( FileName, FALSE ), ".tif" ) == 0 )
ClassName = "Bild";
ELSEIF( StrCompareNoCase( FileGetFileExt( FileName, FALSE ), ".txt" ) == 0 )
ClassName = "Notiz";
ENDIF
ENDIF
VIframeGetImportDocClass( FileName, ClassName );
RETURN( 1 )
-------------------------------------------------------------------------------------------------
Der Makroaufruf „VIframeGetImportDocClass( FileName, ClassName );“ ist zwingend erforderlich, damit PDFV als Dateiendung richtig erkannt wird.