Generowanie PDF z rozpoznawaniem tabel.
Z WordTemplateService ZALECANE
String templateName = "Przykładowy szablon" ; WordTemplateService wordTemplateService = SpringContext.getBean( WordTemplateService.class ); File outputFile = TemporaryFile.create(); wordTemplateService.generateForProcess( outputFile, templateName, processId, OutputFormat.PDF );
Analogicznie można też użyć wordTemplateService.generateForActivity, aby generować z kontekstu zadania.
Zarówno do wordTemplateService.generateForProcess i wordTemplateService.generateForProcess są też warianty do których można dołożyć mapę z dodatkowymi danymi, które mają być brane do generowania poza kontekstem procesu/zadania.
Wygenerowany pdf można podłączyć do procesu i archiwum za pomocą 'WordTemplateUtil'.
String archiveDocumentClassName = "Przykładowa klasa"; WfDocument wfDoc = WordTemplateUtil.archiveAndAttachToProcess( outputFile, processId, activityId, archiveDocumentClassName, templateName, OutputFormat.PDF, true, false );
Jeśli po wstawieniu dokumentu potrzebne jest ustawienie wartości indeksów lub ustawienie opisu dokumentu to wystarczy dla tego celu dla danej klasy dokumentów ustawić w archiwum dla źródła akcji 'Dodanie nowego dokumentu z poziomu procesu' akcję typu 'Przepisanie indeksów z procesu do dokumentów' lub 'Uruchomienie skryptu'.
Bezpośrednio z PrepeareDoc NIE ZALECANE
Nie zalecane
Jeśli konieczne jest wywołanie generowania w Java, to zalecane korzystanie z WordTemplateService.
Przykład uruchomienia :
DocumentTemplateService templateService = ServiceFactory.getDocumentTemplateService(); DocumentTemplateTable template = templateService.getByName( "Przykładowy szablon" ); String templatePath = template.getTemplatePath(); String archiveDocumentClassName = "Przykładowa klasa"; Map<String, Object> mOptionalParameters = null; PrepeareDoc.createPdfAndSaveInArchive( templatePath, archiveDocumentClassName, processId, mOptionalParameters );
Nie używać
Nie wstawiać do 'mOptionalParameters' parametrów variablesMarker, whichTables, whichHeaders. Technicznie można je podać, ale wstawienie albo zmiana wartości domyślnej skutkuje niepoprawnym działaniem np. nie zostaną poprawnie rozpoznane tabele lub zmienne i dokument nie zostanie poprawnie wygenerowany.
Można używać parametrów documentDescription, documentIndices i pageNumbers. Opis parametrów jest aktualny w dokumentacji.
Generowanie PDF bez rozpoznawania tabel. NIE ZALECANE
Ten sposób wymaga jawnego podania informacji o użytych w szablonie tabelach, nie potrafi rozpoznać czy poszczególne tabele są statyczne czy dynamiczne.
Dynamiczna tabela to taka gdzie ilość rekordów nie jest znana i za każdym razem może być inna.
Nie zalecane
Ten sposób nie jest już zalecany. Został zachowany wraz z poniższą dokumentacją tylko dla zgodności wstecznej.
Jeśli konieczne jest wywołanie generowania w Java, to zalecane korzystanie z WordTemplateService.
Przykład uruchomienia :
Map<String, Object> mOptionalParameters = new HashMap<String, Object>(); //pierwsze dwie tabele statyczne, trzecia dynamiczna mOptionalParameters.put( "whichTables", Arrays.asList( false, false, true )); PrepeareDoc.createPdfAndSaveInArchive( templatePath, archiveDocumentClassName, processId, mOptionalParameters );
W 'mOptionalParameters' wymagany jest parametr 'whichTables', pozostałe parametry są opcjonalne.
Opis parametrów jest aktualny w dokumentacji.
Parametr 'variablesMarker' domyślnie przyjmuje wartość @, jednak w przypadku zmiany na inny też działa ok. Jednak nie ma takiej potrzeby, bo zmienne powinny zostać poprawnie rozpoznane dla domyślnego ustawienia nawet jeśli znak @ jest używany w treści szablonu.