diff --git a/.github/workflows/asciidoc_2_gh_pages.yml b/.github/workflows/asciidoc_2_gh_pages.yml index 22fbb3c9e..f1ec1aaa9 100644 --- a/.github/workflows/asciidoc_2_gh_pages.yml +++ b/.github/workflows/asciidoc_2_gh_pages.yml @@ -50,8 +50,8 @@ jobs: - name: Verify Mermaid CLI installation run: mmdc --version - - name: Convert AsciiDoc to HTML5 - run: cd fj-doc-guide;mvn clean asciidoctor:process-asciidoc@asciidoc-to-html + - name: Convert AsciiDoc to HTML5 and PDF + run: cd fj-doc-guide;mvn clean asciidoctor:process-asciidoc@asciidoc-to-html asciidoctor:process-asciidoc@asciidoc-to-pdf - name: Build Legacy Pages uses: actions/jekyll-build-pages@main @@ -64,6 +64,9 @@ jobs: - name: Copy new site run: cp -fr ./fj-doc-guide/target/generated-html5/ ./fj-doc-guide/target/site/guide/ + - name: Copy pdf buide + run: cp -fr ./fj-doc-guide/target/generated-pdf/fj-doc-guide-*.pdf ./fj-doc-guide/target/site/guide/fj-doc-guide.pdf + - name: Setup Pages uses: actions/configure-pages@main diff --git a/.github/workflows/build_maven_package.yml b/.github/workflows/build_maven_package.yml index a8d704054..73d43ba83 100644 --- a/.github/workflows/build_maven_package.yml +++ b/.github/workflows/build_maven_package.yml @@ -37,4 +37,3 @@ jobs: maven-additional-profiles: ',buildreact' disable-maven-dependency-submission: ${{ vars.DISABLE_MAVEN_DEPENDENCY_SUBMISSION }} disable-upload-sarif: ${{ vars.DISABLE_UPLOAD_SARIF }} - maven-core: '2' diff --git a/CHANGELOG.md b/CHANGELOG.md index 84eb445ae..585e20446 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- [fj-doc-maven-plugin] support for asciidoc doc handler (fj-doc-version 8.8.7+) +- [fj-doc-maven-plugin] updated readme information for quarkus-3 flavour +- [fj-doc-guide] added pdf documentation +- [fj-doc-playground-quarkus] fj-doc-ext-kotlin-version set to 0.4.2 + ## [8.9.2] - 2024-10-14 ### Changed diff --git a/README.md b/README.md index 010ddb78d..43778ea08 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,8 @@ Framework to produce documents in different output formats starting from an XML [![Online playground](https://img.shields.io/badge/Try%20Now-Online%20Playground-1AC736?style=for-the-badge&logo=Onlinect%20Playground&logoColor=white)](https://docs.fugerit.org/fj-doc-playground/home/) [![Fugerit Github Project Conventions](https://img.shields.io/badge/Fugerit%20Org-Project%20Conventions-1A36C7?style=for-the-badge&logo=Onlinect%20Playground&logoColor=white)](https://universe.fugerit.org/src/docs/conventions/index.html) -[![view - Guide](https://img.shields.io/badge/view-Guide-blue?style=for-the-badge)](https://venusdocs.fugerit.org/guide/ "Go to project documentation") +[![HTML - Guide](https://img.shields.io/badge/HTML-Guide-blue?style=for-the-badge)](https://venusdocs.fugerit.org/guide/ "Go to project HTML documentation") +[![PDF - Guide](https://img.shields.io/badge/PDF-Guide-red?style=for-the-badge)](https://venusdocs.fugerit.org/guide/fj-doc-guide.pdf "Go to project PDF documentation") The Core library (fj-doc-base) is all you need to start, even though typically you will use at least : * [fj-doc-base](fj-doc-base/README.md) @@ -38,14 +39,6 @@ Full build is made by : `mvn clean install -P full,test` -Or with the maven wrapper for linux : - -`./mvnw clean install -P full,test` - -Or with the maven wrapper for windows : - -`./mvnw clean install -P full,test` - ### Run The Fugerit Venus Doc project is a library for generating documents to be included. diff --git a/fj-doc-guide/pom.xml b/fj-doc-guide/pom.xml index 76cb5896d..2dfb474bd 100644 --- a/fj-doc-guide/pom.xml +++ b/fj-doc-guide/pom.xml @@ -24,12 +24,12 @@ 3.0.0 - 2.3.15 - 2.5.12 - 2.3.0 - 1.2024.3 + 2.3.18 + 3.0.0 + 2.3.1 + 1.2024.5 1.0.3 - 9.4.6.0 + 9.4.8.0 yyyy-MM-dd'T'HH:mm:ss'Z' ${project.build.directory}/generated-pdf ${project.build.directory}/generated-html5 diff --git a/fj-doc-guide/src/main/docs/asciidoc/attributes/_attributes-common.adoc b/fj-doc-guide/src/main/docs/asciidoc/attributes/_attributes-common.adoc index 9c370ca27..ad74facda 100644 --- a/fj-doc-guide/src/main/docs/asciidoc/attributes/_attributes-common.adoc +++ b/fj-doc-guide/src/main/docs/asciidoc/attributes/_attributes-common.adoc @@ -1,10 +1,9 @@ :author: Matteo Franci :revnumber: v1.0.0 -:revdate: June XX, 2024 +:revdate: October 15, 2024 :email: m@fugerit.org -:description: This is a comparison of a simple online demo photobook \ -implemented with three popular java cloud ready framework. -:keywords: java, graalvm, spring, springboot, quarkus, micronaut +:description: Fugerit Doc Venus : document generation framework +:keywords: java, xml, json, yaml, kotlin, pdf, html, xlsx, csv, document generation :encoding: utf-8 :lang: en :toc: left diff --git a/fj-doc-guide/src/main/docs/asciidoc/chapters/03_4_doc_format_info.adoc b/fj-doc-guide/src/main/docs/asciidoc/chapters/03_4_doc_format_info.adoc new file mode 100644 index 000000000..553f71197 --- /dev/null +++ b/fj-doc-guide/src/main/docs/asciidoc/chapters/03_4_doc_format_info.adoc @@ -0,0 +1,38 @@ +[#doc-format-entry-point-info] +=== Doc Format Info Element + +The _info_ element is available to setup some specific properties of the document. + +Here is a link:https://venusdocs.fugerit.org/docs/html/doc_meta_info.html[list of possible info element]. + +For instance in this document we set following _info_ elements : + +* margin +* doc-title +* doc-author +* doc-language + +Some DocHandler will ignore some info elements. + +[source,xml] +---- + + + + + + 10;10;10;30 + + Hello World + fugerit79 + en + + + Hello World! + + + +---- diff --git a/fj-doc-guide/src/main/docs/asciidoc/chapters/06_0_base.adoc b/fj-doc-guide/src/main/docs/asciidoc/chapters/06_0_base.adoc new file mode 100644 index 000000000..86daf0590 --- /dev/null +++ b/fj-doc-guide/src/main/docs/asciidoc/chapters/06_0_base.adoc @@ -0,0 +1,50 @@ +<<< +[#doc-handler-base] +=== [fj-doc-base] + +Here are described the doc handlers included in the basic module, which usually is always included : + +[source,xml] +---- + + org.fugerit.java + fj-doc-base + ${fj-doc-version} + +---- + +[#doc-handler-base-md-ext] +==== MarkDown (Extended) + +This doc handler would render a MarkDown (Extended) document. The Basic and Extended version only differ for table management. Basic version will render tables in html. + +*In brief* : + +- *compliance level* : _HIGH_ +- *compliance detail* : All generic link:#doc-format-entry-point[Venus Doc Format] elements are supported. +- *native ready* : _YES_ + +Add this element to ** : + +[source,xml] +---- + +---- + +[#doc-handler-base-md-basic] +==== MarkDown (Basic) + +This doc handler would render a MarkDown (Basic) document. The Basic and Extended version only differ for table management. Basic version will render tables in html. + +*In brief* : + +- *compliance level* : _HIGH_ +- *compliance detail* : All generic link:#doc-format-entry-point[Venus Doc Format] elements are supported. +- *native ready* : _YES_ + +Add this element to ** : + +[source,xml] +---- + +---- \ No newline at end of file diff --git a/fj-doc-guide/src/main/docs/asciidoc/chapters/06_1_freemarker-html.adoc b/fj-doc-guide/src/main/docs/asciidoc/chapters/06_1_freemarker-html.adoc index 2024a12f6..f48c9f611 100644 --- a/fj-doc-guide/src/main/docs/asciidoc/chapters/06_1_freemarker-html.adoc +++ b/fj-doc-guide/src/main/docs/asciidoc/chapters/06_1_freemarker-html.adoc @@ -18,6 +18,12 @@ To use this doc handler, you will need to add the following dependency : This doc handler would render a full html document. +*In brief* : + +- *compliance level* : _HIGH_ +- *compliance detail* : All generic link:#doc-format-entry-point[Venus Doc Format] elements are supported. +- *native ready* : _YES_ + Add this element to ** : [source,xml] @@ -31,9 +37,33 @@ Add this element to ** : This doc handler would render only the body of the html document. (useful to inject the body as a fragment). +*In brief* : + +- *compliance level* : _HIGH_ +- *compliance detail* : All generic link:#doc-format-entry-point[Venus Doc Format] elements are supported. +- *native ready* : _YES_ + Add this element to ** : [source,xml] ---- +---- + +[#doc-handler-freemarker-asciidoc] +==== Asciidoc (ADOC) + +This doc handler would be rendered as an asciidoc document. + +*In brief* : + +- *compliance level* : _HIGH_ +- *compliance detail* : All generic link:#doc-format-entry-point[Venus Doc Format] elements are supported. +- *native ready* : _YES_ + +Add this element to ** : + +[source,xml] +---- + ---- \ No newline at end of file diff --git a/fj-doc-guide/src/main/docs/asciidoc/chapters/06_2_mod-fop.adoc b/fj-doc-guide/src/main/docs/asciidoc/chapters/06_2_mod-fop.adoc index 26dceb328..e73c74e50 100644 --- a/fj-doc-guide/src/main/docs/asciidoc/chapters/06_2_mod-fop.adoc +++ b/fj-doc-guide/src/main/docs/asciidoc/chapters/06_2_mod-fop.adoc @@ -1,6 +1,6 @@ <<< [#doc-handler-mod-fop] -=== [fj-doc-mod-fop] +=== [fj-doc-mod-fop] A PDF/FO DocHandler To use this doc handler, you will need to add the following dependency : @@ -22,6 +22,12 @@ Usually Apache FOP uses link:https://www.w3.org/TR/xslt-30/[XSL Transformations] This doc handler would render a full PDF document with default FOP configuration. +*In brief* : + +- *compliance level* : _HIGH_ +- *compliance detail* : All generic link:#doc-format-entry-point[Venus Doc Format] elements are supported. +- *native ready* : _NO_ (As Apache FOP is not ready). + Add this element to ** : [source,xml] @@ -114,6 +120,12 @@ And here a link:https://venusdocs.fugerit.org/fj-doc-sample/src/main/resources/f This doc handler would render a full link:https://xmlgraphics.apache.org/fop/fo.html[FO] intermediate document. +*In brief* : + +- *compliance level* : _HIGH_ +- *compliance detail* : All generic link:#doc-format-entry-point[Venus Doc Format] elements are supported. +- *native ready* : _YES_ + [source,xml] ---- diff --git a/fj-doc-guide/src/main/docs/asciidoc/chapters/06_3_mod-poi.adoc b/fj-doc-guide/src/main/docs/asciidoc/chapters/06_3_mod-poi.adoc new file mode 100644 index 000000000..af5277d48 --- /dev/null +++ b/fj-doc-guide/src/main/docs/asciidoc/chapters/06_3_mod-poi.adoc @@ -0,0 +1,107 @@ +<<< +[#doc-handler-mod-poi] +=== [fj-doc-mod-poi] : a XLS/XLSX DocHandler + +To use this doc handler, you will need to add the following dependency : + +[source,xml] +---- + + org.fugerit.java + fj-doc-mod-poi + ${fj-doc-version} + +---- + +This module is based on link:https://poi.apache.org/[Apache POI Project]. + +[#doc-handler-mod-poi-basics] +==== POI Handler Basics + +The following information apply to both xlsx and xls DocHandler. + +You will need at least a table, with an _id_ set. (in this example the id is *data-table*). + +And the link:https://venusdocs.fugerit.org/docs/html/doc_meta_info.html#excel-table-id[excel-table-id] element with the comma separated enumeration of the table to render as sheet. : + +[source,xml] +---- +data-table=print +---- + +The given table (*data-table*) will be rendered as the named sheet (*print*) in the couple : *$tableId*=*$sheetName*. + +Here is a full example. + +[source,xml] +---- + + + + + data-table=print + + + + + Name + Surname + Title + + + + + + + + + + + +
+ +
+---- + +More elements specific to excel format are available link:https://venusdocs.fugerit.org/docs/html/doc_meta_info.html#meta_xls[here]. + +[#doc-handler-mod-poi-xlsx] +==== Xlsx DocHandler + +This doc handler would a XLSX document. + +*In brief* : + +- *compliance level* : _MEDIUM_ +- *compliance detail* : Only single table elements of the link:#doc-format-entry-point[Venus Doc Format] are rendered. +- *native ready* : _NO_ (As Apache POI is not ready). + +Add this element to ** : + +[source,xml] +---- + + +---- + +[#doc-handler-mod-poi-xls] +==== Xls DocHandler + +This doc handler would a XLS document. + +*In brief* : + +- *compliance level* : _MEDIUM_ +- *compliance detail* : Only single table elements of the link:#doc-format-entry-point[Venus Doc Format] are rendered. +- *native ready* : _NO_ (As Apache POI is not ready). + +Add this element to ** : + +[source,xml] +---- + + +---- \ No newline at end of file diff --git a/fj-doc-guide/src/main/docs/asciidoc/chapters/06_4_mod-opencsv.adoc b/fj-doc-guide/src/main/docs/asciidoc/chapters/06_4_mod-opencsv.adoc new file mode 100644 index 000000000..174d68ddc --- /dev/null +++ b/fj-doc-guide/src/main/docs/asciidoc/chapters/06_4_mod-opencsv.adoc @@ -0,0 +1,79 @@ +<<< +[#doc-handler-mod-opencsv] +=== [fj-doc-mod-opencsv] : a CSV DocHandler + +To use this doc handler, you will need to add the following dependency : + +*In brief* : + +- *compliance level* : _MEDIUM_ +- *compliance detail* : Only a single table element of the link:#doc-format-entry-point[Venus Doc Format] is rendered as a CSV document. +- *native ready* : _YES_ + +[source,xml] +---- + + org.fugerit.java + fj-doc-mod-opencsv + ${fj-doc-version} + +---- + +This module is based on link:https://opencsv.sourceforge.net/[OpenCSV]. + +This doc handler would a CSV document. + +Add this element to ** : + +[source,xml] +---- + + +---- + +You will need at least a table, with an _id_ set. (in this example the id is *data-table*). + +And the link:https://venusdocs.fugerit.org/docs/html/doc_meta_info.html#csv-table-id[csv-table-id] element with the comma separated enumeration of the table to render as sheet. : + +[source,xml] +---- +data-table +---- + +Here is a full example. + +[source,xml] +---- + + + + data-table + + + + + Name + Surname + Title + + + + + + + + + + + +
+ +
+---- + +More elements specific to CSV format are available link:https://venusdocs.fugerit.org/docs/html/doc_meta_info.html#meta_csv[here]. + +NOTE: In comparison to Xlsx Doc Handler the OpenCSV one is able to render only one table at once. \ No newline at end of file diff --git a/fj-doc-guide/src/main/docs/asciidoc/chapters/06_5_mod-openpdf-ext.adoc b/fj-doc-guide/src/main/docs/asciidoc/chapters/06_5_mod-openpdf-ext.adoc new file mode 100644 index 000000000..fdc49ad9f --- /dev/null +++ b/fj-doc-guide/src/main/docs/asciidoc/chapters/06_5_mod-openpdf-ext.adoc @@ -0,0 +1,87 @@ +<<< +[#doc-handler-mod-openpdf-ext] +=== [fj-doc-mod-openpdf-ext] : a PDF and HTML DocHandler + +To use this doc handler, you will need to add the following dependency : + +*In brief* : + +- *compliance level* : _MEDIUM_ +- *compliance detail* : Most elements of the link:#doc-format-entry-point[Venus Doc Format] are supported. lists have not been implemented yet. +- *native ready* : _NO_ (As OpenPDF is not ready). + +[source,xml] +---- + + org.fugerit.java + fj-doc-mod-openpdf-ext + ${fj-doc-version} + +---- + +This module is based on link:https://github.com/LibrePDF/OpenPDF/[OpenPDF] (based on a fork of iText). + +[#doc-handler-mod-openpdf-ext-pdf] +==== [fj-doc-mod-openpdf-ext-pdf] : PDF DocHandler + +This doc handler would a PDF document. + +Add this element to ** : + +[source,xml] +---- + + +---- + +More elements specific to fixed size formats, like PDF, are available link:https://venusdocs.fugerit.org/docs/html/doc_meta_info.html#meta_fixed[here]. + +[#doc-handler-mod-openpdf-ext-pdf-ref] +*docHandlerCustomConfig reference for org.fugerit.java.doc.mod.openpdf.ext.PdfTypeHandler"* + +[cols="2,1,1,6", options="header"] +|======================================================================================================================================== +| name | type | default | description +| *charset* anchor:doc-handler-mod-openpdf-ext-pdf-charset[] | _string_ | _UTF-8_ | This will set the charset to use. +|======================================================================================================================================== + +Additionaly *fonts* can be configured as child elements of *docHandlerCustomConfig* + +[cols="2,1,1,6", options="header"] +|======================================================================================================================================== +| name | type | default | description +| *name* anchor:doc-handler-mod-openpdf-ext-pdf-font-name[] | _string_ | | Name of the font +| *path* anchor:doc-handler-mod-openpdf-ext-pdf-font-path[] | _string_ | | Path of the font (in classloader of file) +|======================================================================================================================================== + +Here is a custom configuration example : + +[source,xml] +---- + + + + + + +---- + +[#doc-handler-mod-openpdf-ext-html] +==== [fj-doc-mod-openpdf-ext-html] : HTML DocHandler + +This doc handler would a HTML document. + +*In brief* : + +- *compliance level* : _MEDIUM_ +- *compliance detail* : Most elements of the link:#doc-format-entry-point[Venus Doc Format] are supported. lists have not been implemented yet. +- *native ready* : _NO_ (As OpenPDF is not ready). + +Add this element to ** : + +[source,xml] +---- + + +---- + diff --git a/fj-doc-guide/src/main/docs/asciidoc/chapters/06_6_mod-openrtf-ext.adoc b/fj-doc-guide/src/main/docs/asciidoc/chapters/06_6_mod-openrtf-ext.adoc new file mode 100644 index 000000000..4893bf0bc --- /dev/null +++ b/fj-doc-guide/src/main/docs/asciidoc/chapters/06_6_mod-openrtf-ext.adoc @@ -0,0 +1,35 @@ +<<< +[#doc-handler-mod-openrtf-ext] +=== [fj-doc-mod-openrtf-ext] : a RTF DocHandler + +To use this doc handler, you will need to add the following dependency : + +*In brief* : + +- *compliance level* : _MEDIUM_ +- *compliance detail* : Most elements of the link:#doc-format-entry-point[Venus Doc Format] are supported. lists have not been implemented yet. +- *native ready* : _NO_ (As OpenRTF is not ready). + +[source,xml] +---- + + org.fugerit.java + fj-doc-mod-openrtf-ext + ${fj-doc-version} + +---- + +This module is based on link:https://github.com/LibrePDF/OpenRTF[OpenRTF]. + +This doc handler would a RTF document. + +Add this element to ** : + +[source,xml] +---- + + +---- + +More elements specific to fixed size formats, like RTF, are available link:https://venusdocs.fugerit.org/docs/html/doc_meta_info.html#meta_fixed[here]. + diff --git a/fj-doc-guide/src/main/docs/asciidoc/chapters/06_doc_handlers.adoc b/fj-doc-guide/src/main/docs/asciidoc/chapters/06_doc_handlers.adoc index b0cccd450..bfde28994 100644 --- a/fj-doc-guide/src/main/docs/asciidoc/chapters/06_doc_handlers.adoc +++ b/fj-doc-guide/src/main/docs/asciidoc/chapters/06_doc_handlers.adoc @@ -19,3 +19,78 @@ flowchart TB end .... +[#doc-handler-module-handlers] +=== DocHandler Module Index + +[cols="4,2,1,3", options="header"] +|======================================================================================================================================== +| doc-handler | module | type | description + +| link:#doc-handler-base-md-ext[org.fugerit.java.doc.base.typehandler.markdown.​SimpleMarkdownExtTypeHandlerNoCommentsUTF8] +| link:#doc-handler-base[fj-doc-base] +| MD +| Renders a MarkDown (Extended) document. + +| link:#doc-handler-base-md-basic[org.fugerit.java.doc.base.typehandler.markdown.​SimpleMarkdownBasicTypeHandlerNoCommentsUTF8] +| link:#doc-handler-base[fj-doc-base] +| MD +| Renders a MarkDown (Basic) document (tables are rendered as HTML). + +| link:#doc-handler-freemarker-html[org.fugerit.java.doc.freemarker.html.​FreeMarkerHtmlTypeHandlerEscapeUTF8] +| link:#doc-handler-freemarker[fj-doc-freemarker] +| HTML +| Renders HTML documents using link:https://freemarker.apache.org/[Apache FreeMarker template engine]. + +| link:#doc-handler-freemarker-fragment-html[org.fugerit.java.doc.freemarker.html.​FreeMarkerHtmlFragmentTypeHandlerEscapeUTF8] +| link:#doc-handler-freemarker[fj-doc-freemarker] +| HTML Fragment +| Same as above, but an HTML fragment is just the body of the HTML document. + +| link:#doc-handler-mod-fop-pdf-basic[org.fugerit.java.doc.mod.fop.​PdfFopTypeHandler] +| link:#doc-handler-mod-fop[fj-doc-mod-fop] +| PDF (PDF/A, PDF/UA) +| A PDF doc handler based on link:https://xmlgraphics.apache.org/fop/[Apache FOP Project]. It offers options for PDF/A and PDF/UA formats. + +| link:#doc-handler-mod-fop-fo[org.fugerit.java.doc.mod.fop.​FreeMarkerFopTypeHandlerUTF8] +| link:#doc-handler-mod-fop[fj-doc-mod-fop] +| FO (XLS-FO) +| A link:https://www.w3.org/2002/08/XSLFOsummary.html[XLS-FO] doc handler based on link:https://xmlgraphics.apache.org/fop/[Apache FOP Project]. + +| link:#doc-handler-mod-poi-xlsx[org.fugerit.java.doc.mod.poi.​XlsxPoiTypeHandler] +| link:#doc-handler-mod-poi[fj-doc-mod-poi] +| XLSX +| Generates an XLSX document using link:https://poi.apache.org/[Apache POI Project]. + +| link:#doc-handler-mod-poi-xls[org.fugerit.java.doc.mod.poi.​XlsPoiTypeHandler] +| link:#doc-handler-mod-poi[fj-doc-mod-poi] +| XLS +| Generates an XLS document using link:https://poi.apache.org/[Apache POI Project]. + +| link:#doc-handler-mod-opencsv[org.fugerit.java.doc.mod.opencsv.​OpenCSVTypeHandler] +| link:#doc-handler-mod-opencsv[fj-doc-mod-opencsv] +| CSV +| Generates a CSV document using link:https://opencsv.sourceforge.net/[OpenCSV]. + +| link:#doc-handler-mod-openpdf-ext-pdf[org.fugerit.java.doc.mod.openpdf.ext.​PdfTypeHandler] +| link:#doc-handler-mod-openpdf-ext[fj-doc-mod-openpdf-ext] | PDF +| Generates a PDF document using link:https://github.com/LibrePDF/OpenPDF/[OpenPDF]. + +| link:#doc-handler-mod-openpdf-ext-html[org.fugerit.java.doc.mod.openpdf.ext.​HtmlTypeHandler] +| link:#doc-handler-mod-openpdf-ext[fj-doc-mod-openpdf-ext] +| HTML +| Generates a HTML document using link:https://github.com/LibrePDF/OpenPDF/[OpenPDF]. + +| link:#doc-handler-mod-openrtf-ext[org.fugerit.java.doc.mod.openrtf.ext.​RtfTypeHandler] +| link:#doc-handler-mod-openrtf-ext[fj-doc-mod-openpdf-ext] +| RTF +| Generates a RTF document using link:https://github.com/LibrePDF/OpenRTF[OpenRTF]. + +|======================================================================================================================================== + +Each section describing a specific doc handler will contain this quick reference : + +*In brief* : + +- *compliance level* : _COMPLETE_, _HIGH_, _MEDIUM_, _LOW_, The level of support to link:#doc-format-entry-point[Venus Doc Format]. +- *compliance detail* : The limitations to the support of the link:#doc-format-entry-point[Venus Doc Format] (for instance : unsupported elements or attributes). +- *native ready* : _YES_, _NO_ (If the doc handler is ready for native compilation with link:https://www.graalvm.org/[GraalVM]). \ No newline at end of file diff --git a/fj-doc-guide/src/main/docs/asciidoc/chapters/07_004_doc-faq-resize-xls.adoc b/fj-doc-guide/src/main/docs/asciidoc/chapters/07_004_doc-faq-resize-xls.adoc new file mode 100644 index 000000000..0dd9a4048 --- /dev/null +++ b/fj-doc-guide/src/main/docs/asciidoc/chapters/07_004_doc-faq-resize-xls.adoc @@ -0,0 +1,19 @@ + +[#doc-faq-clean-resize-xls] +=== How do I have a Excel document cells resize to fit the content. + +It is possible to use the elements : + +* link:https://venusdocs.fugerit.org/docs/html/doc_meta_info.html#excel-try-autoresize[excel-try-autoresize] +* link:https://venusdocs.fugerit.org/docs/html/doc_meta_info.html#excel-fail-on-autoresize-error[excel-fail-on-autoresize-error] + + +For instance : + +[source,xml] +---- +true +false +---- + +The DocHandler will try to automatically resize the cell content of the Excel Sheet. \ No newline at end of file diff --git a/fj-doc-guide/src/main/docs/asciidoc/index.adoc b/fj-doc-guide/src/main/docs/asciidoc/index.adoc index fa16ea703..0b12ee3dd 100644 --- a/fj-doc-guide/src/main/docs/asciidoc/index.adoc +++ b/fj-doc-guide/src/main/docs/asciidoc/index.adoc @@ -18,6 +18,7 @@ include::chapters/03_doc_format.adoc[] include::chapters/03_1_doc_format_xml.adoc[] include::chapters/03_2_doc_format_json_yaml.adoc[] include::chapters/03_3_doc_format_kotlin.adoc[] +include::chapters/03_4_doc_format_info.adoc[] include::chapters/04_doc_freemarker.adoc[] include::chapters/04_1_doc_freemarker_config.adoc[] @@ -25,10 +26,16 @@ include::chapters/04_2_doc_freemarker_chain.adoc[] include::chapters/04_3_doc_freemarker_usage.adoc[] include::chapters/06_doc_handlers.adoc[] +include::chapters/06_0_base.adoc[] include::chapters/06_1_freemarker-html.adoc[] include::chapters/06_2_mod-fop.adoc[] +include::chapters/06_3_mod-poi.adoc[] +include::chapters/06_4_mod-opencsv.adoc[] +include::chapters/06_5_mod-openpdf-ext.adoc[] +include::chapters/06_6_mod-openrtf-ext.adoc[] include::chapters/07_doc-faq.adoc[] include::chapters/07_001_doc-faq-create-project.adoc[] include::chapters/07_002_doc-faq-validate-document.adoc[] -include::chapters/07_003_doc-faq-clean-source.adoc[] \ No newline at end of file +include::chapters/07_003_doc-faq-clean-source.adoc[] +include::chapters/07_004_doc-faq-resize-xls.adoc[] \ No newline at end of file diff --git a/fj-doc-guide/src/main/docs/asciidoc/resources/themes/book_cover_basic_v1.0.0.png b/fj-doc-guide/src/main/docs/asciidoc/resources/themes/book_cover_basic_v1.0.0.png index 32e543cf6..378df0c68 100644 Binary files a/fj-doc-guide/src/main/docs/asciidoc/resources/themes/book_cover_basic_v1.0.0.png and b/fj-doc-guide/src/main/docs/asciidoc/resources/themes/book_cover_basic_v1.0.0.png differ diff --git a/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/maven/MojoInit.java b/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/maven/MojoInit.java index c78357c24..15a9f7fca 100644 --- a/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/maven/MojoInit.java +++ b/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/maven/MojoInit.java @@ -9,6 +9,7 @@ import org.fugerit.java.doc.project.facade.FlavourFacade; import org.fugerit.java.doc.project.facade.FlavourContext; import org.fugerit.java.doc.project.facade.ModuleFacade; +import org.fugerit.java.doc.project.facade.VersionCheck; import java.io.File; @@ -60,6 +61,8 @@ public void execute() throws MojoExecutionException, MojoFailureException { context.setModules( ModuleFacade.toModuleList( this.extensions ) ); context.setAddLombok( this.addLombok ); context.setFlavourVersion( this.flavourVersion ); + context.setVersion( VersionCheck.findVersion( this.version ) ); + context.setExtensions( this.extensions ); this.getLog().info( String.format( "flavour context : %s", context ) ); FlavourFacade.initProject( context ); } ); diff --git a/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/BasicVenusFacade.java b/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/BasicVenusFacade.java index b1df42def..8c1712995 100644 --- a/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/BasicVenusFacade.java +++ b/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/BasicVenusFacade.java @@ -2,22 +2,17 @@ import lombok.extern.slf4j.Slf4j; import org.apache.maven.model.*; -import org.apache.maven.plugin.lifecycle.Execution; import org.codehaus.plexus.util.xml.Xpp3Dom; import org.codehaus.plexus.util.xml.Xpp3DomBuilder; import org.fugerit.java.core.cfg.ConfigRuntimeException; import org.fugerit.java.core.io.helper.HelperIOException; -import org.fugerit.java.core.lang.helpers.BooleanUtils; import org.fugerit.java.core.lang.helpers.StringUtils; -import org.fugerit.java.doc.freemarker.tool.FreeMarkerTemplateSyntaxVerifier; import org.maxxq.maven.dependency.ModelIO; import java.io.*; -import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.Properties; -import java.util.stream.Collectors; @Slf4j public class BasicVenusFacade { diff --git a/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/FlavourContext.java b/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/FlavourContext.java index ab9308f90..c459f39d8 100644 --- a/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/FlavourContext.java +++ b/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/FlavourContext.java @@ -38,6 +38,12 @@ public class FlavourContext { @Getter @Setter private String flavourVersion; + @Getter @Setter + private String version; + + @Getter @Setter + private String extensions; + private String toClassName( String base, String splitString ) { StringBuilder buf = new StringBuilder(); String[] split = base.split( splitString ); @@ -52,4 +58,8 @@ public String getArtifactIdAsClassName() { return toClassName( res, "\\." ); } + public boolean isAsciidocFreemarkerHandlerAvailable() { + return VersionCheck.isMajorThan( VenusContext.VERSION_ASCIIDOC_FREEMARKER_HANDLER, this.getVersion() ); + } + } diff --git a/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/VenusContext.java b/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/VenusContext.java index a082039e2..585ade564 100644 --- a/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/VenusContext.java +++ b/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/VenusContext.java @@ -19,6 +19,8 @@ @ToString public class VenusContext { + public static final String VERSION_ASCIIDOC_FREEMARKER_HANDLER = "8.8.6"; + public static final String VERSION_NA_VERIFY_PLUGIN = "8.7.2"; public static final String VERSION_NA_FULL_PROCESS = "8.6.2"; @@ -122,6 +124,10 @@ public boolean isVerifyPluginNotAvailable() { return VersionCheck.isMajorThan( VERSION_NA_VERIFY_PLUGIN, this.getVersion() ); } + public boolean isAsciidocFreemarkerHandlerAvailable() { + return VersionCheck.isMajorThan( VERSION_ASCIIDOC_FREEMARKER_HANDLER, this.getVersion() ); + } + public boolean isPreVersion862() { return VersionCheck.isMajorThan( VERSION_NA_FULL_PROCESS, this.getVersion() ); } diff --git a/fj-doc-maven-plugin/src/main/resources/config/template/flavour/micronaut-4/DocController.ftl b/fj-doc-maven-plugin/src/main/resources/config/template/flavour/micronaut-4/DocController.ftl index 75fa6180a..8e648b5aa 100644 --- a/fj-doc-maven-plugin/src/main/resources/config/template/flavour/micronaut-4/DocController.ftl +++ b/fj-doc-maven-plugin/src/main/resources/config/template/flavour/micronaut-4/DocController.ftl @@ -27,7 +27,11 @@ public class DocController { <@fhm.createMicronautPath context=context outputMime="text/markdown" outputExtension="md" outputDescription="Markdown"/> <@fhm.createMicronautPath context=context outputMime="text/html" outputExtension="html" outputDescription="HTML"/> - + + <#if context.asciidocFreemarkerHandlerAvailable> + <@fhm.createMicronautPath context=context outputMime="text/asciidoc" outputExtension="adoc" outputDescription="AsciiDoc"/> + + <#if context.modules?seq_contains("fj-doc-mod-fop")> <@fhm.createMicronautPath context=context outputMime="application/pdf" outputExtension="pdf" outputDescription="PDF"/> diff --git a/fj-doc-maven-plugin/src/main/resources/config/template/flavour/openliberty/DocResource.ftl b/fj-doc-maven-plugin/src/main/resources/config/template/flavour/openliberty/DocResource.ftl index 0c0a83067..a45ccb523 100644 --- a/fj-doc-maven-plugin/src/main/resources/config/template/flavour/openliberty/DocResource.ftl +++ b/fj-doc-maven-plugin/src/main/resources/config/template/flavour/openliberty/DocResource.ftl @@ -29,6 +29,10 @@ public class DocResource { <@fhm.createQuarkusPath context=context outputMime="text/html" outputExtension="html" outputDescription="HTML"/> + <#if context.asciidocFreemarkerHandlerAvailable> + <@fhm.createQuarkusPath context=context outputMime="text/asciidoc" outputExtension="adoc" outputDescription="AsciiDoc"/> + + <#if context.modules?seq_contains("fj-doc-mod-fop")> <@fhm.createQuarkusPath context=context outputMime="application/pdf" outputExtension="pdf" outputDescription="PDF"/> diff --git a/fj-doc-maven-plugin/src/main/resources/config/template/flavour/quarkus-2/DocResource.ftl b/fj-doc-maven-plugin/src/main/resources/config/template/flavour/quarkus-2/DocResource.ftl index bd53c3703..de5878fa1 100644 --- a/fj-doc-maven-plugin/src/main/resources/config/template/flavour/quarkus-2/DocResource.ftl +++ b/fj-doc-maven-plugin/src/main/resources/config/template/flavour/quarkus-2/DocResource.ftl @@ -29,6 +29,10 @@ public class DocResource { <@fhm.createQuarkusPath context=context outputMime="text/html" outputExtension="html" outputDescription="HTML"/> + <#if context.asciidocFreemarkerHandlerAvailable> + <@fhm.createQuarkusPath context=context outputMime="text/asciidoc" outputExtension="adoc" outputDescription="AsciiDoc"/> + + <#if context.modules?seq_contains("fj-doc-mod-fop")> <@fhm.createQuarkusPath context=context outputMime="application/pdf" outputExtension="pdf" outputDescription="PDF"/> diff --git a/fj-doc-maven-plugin/src/main/resources/config/template/flavour/quarkus-2/DocResourceTest.ftl b/fj-doc-maven-plugin/src/main/resources/config/template/flavour/quarkus-2/DocResourceTest.ftl index 46ba44e6e..52a5ed759 100644 --- a/fj-doc-maven-plugin/src/main/resources/config/template/flavour/quarkus-2/DocResourceTest.ftl +++ b/fj-doc-maven-plugin/src/main/resources/config/template/flavour/quarkus-2/DocResourceTest.ftl @@ -20,6 +20,13 @@ class DocResourceTest { given().when().get("/doc/example.html").then().statusCode(200); } + <#if context.asciidocFreemarkerHandlerAvailable> + @Test + void testAsciiDoc() { + given().when().get("/doc/example.adoc").then().statusCode(200); + } + + <#if context.modules?seq_contains("fj-doc-mod-fop")> @Test void testPdf() { diff --git a/fj-doc-maven-plugin/src/main/resources/config/template/flavour/quarkus-3/DocResource.ftl b/fj-doc-maven-plugin/src/main/resources/config/template/flavour/quarkus-3/DocResource.ftl index 0c0a83067..a45ccb523 100644 --- a/fj-doc-maven-plugin/src/main/resources/config/template/flavour/quarkus-3/DocResource.ftl +++ b/fj-doc-maven-plugin/src/main/resources/config/template/flavour/quarkus-3/DocResource.ftl @@ -29,6 +29,10 @@ public class DocResource { <@fhm.createQuarkusPath context=context outputMime="text/html" outputExtension="html" outputDescription="HTML"/> + <#if context.asciidocFreemarkerHandlerAvailable> + <@fhm.createQuarkusPath context=context outputMime="text/asciidoc" outputExtension="adoc" outputDescription="AsciiDoc"/> + + <#if context.modules?seq_contains("fj-doc-mod-fop")> <@fhm.createQuarkusPath context=context outputMime="application/pdf" outputExtension="pdf" outputDescription="PDF"/> diff --git a/fj-doc-maven-plugin/src/main/resources/config/template/flavour/quarkus-3/DocResourceTest.ftl b/fj-doc-maven-plugin/src/main/resources/config/template/flavour/quarkus-3/DocResourceTest.ftl index 46ba44e6e..52a5ed759 100644 --- a/fj-doc-maven-plugin/src/main/resources/config/template/flavour/quarkus-3/DocResourceTest.ftl +++ b/fj-doc-maven-plugin/src/main/resources/config/template/flavour/quarkus-3/DocResourceTest.ftl @@ -20,6 +20,13 @@ class DocResourceTest { given().when().get("/doc/example.html").then().statusCode(200); } + <#if context.asciidocFreemarkerHandlerAvailable> + @Test + void testAsciiDoc() { + given().when().get("/doc/example.adoc").then().statusCode(200); + } + + <#if context.modules?seq_contains("fj-doc-mod-fop")> @Test void testPdf() { diff --git a/fj-doc-maven-plugin/src/main/resources/config/template/flavour/quarkus-3/README.ftl b/fj-doc-maven-plugin/src/main/resources/config/template/flavour/quarkus-3/README.ftl index d3a4f8db5..bbad5b379 100644 --- a/fj-doc-maven-plugin/src/main/resources/config/template/flavour/quarkus-3/README.ftl +++ b/fj-doc-maven-plugin/src/main/resources/config/template/flavour/quarkus-3/README.ftl @@ -18,6 +18,10 @@ Open the [swagger-ui](http://localhost:8080/q/swagger-ui/) Test available paths (for instance : [/doc/example.md](http://localhost:8080/doc/example.md)) +NOTE: +- Powered by Quarkus ${context.flavourVersion} +- Using Fugerit Venus Doc ${context.version} (extensions : ${context.extensions}) + ## Overview This project has been initialized using [fj-doc-maven-plugin init goal](https://venusguides.fugerit.org/src/docs/wizard/fj-doc-maven-plugin_init.html). @@ -25,7 +29,7 @@ This project has been initialized using [fj-doc-maven-plugin init goal](https:// The quarkus 3 structure is similar to running the quarkus create goal : ```shell -mvn io.quarkus.platform:quarkus-maven-plugin:3.14.2:create \ +mvn io.quarkus.platform:quarkus-maven-plugin:${context.flavourVersion}:create \ -DprojectGroupId=${context.groupId} \ -DprojectArtifactId=${context.artifactId} \ -Dextensions='rest,rest-jackson,config-yaml,smallrye-openapi' diff --git a/fj-doc-maven-plugin/src/main/resources/config/template/flavour/springboot-3/DocController.ftl b/fj-doc-maven-plugin/src/main/resources/config/template/flavour/springboot-3/DocController.ftl index 86876b6ee..f2f4050f0 100644 --- a/fj-doc-maven-plugin/src/main/resources/config/template/flavour/springboot-3/DocController.ftl +++ b/fj-doc-maven-plugin/src/main/resources/config/template/flavour/springboot-3/DocController.ftl @@ -30,7 +30,11 @@ public class DocController { <@fhm.createSpringBootPath context=context outputMime="text/markdown" outputExtension="md" outputDescription="Markdown"/> <@fhm.createSpringBootPath context=context outputMime="text/html" outputExtension="html" outputDescription="HTML"/> - + + <#if context.asciidocFreemarkerHandlerAvailable> + <@fhm.createSpringBootPath context=context outputMime="text/asciidoc" outputExtension="adoc" outputDescription="AsciiDoc"/> + + <#if context.modules?seq_contains("fj-doc-mod-fop")> <@fhm.createSpringBootPath context=context outputMime="application/pdf" outputExtension="pdf" outputDescription="PDF"/> diff --git a/fj-doc-maven-plugin/src/main/resources/config/template/fm-doc-process-config-template.ftl b/fj-doc-maven-plugin/src/main/resources/config/template/fm-doc-process-config-template.ftl index 852f9efa6..0502111dd 100644 --- a/fj-doc-maven-plugin/src/main/resources/config/template/fm-doc-process-config-template.ftl +++ b/fj-doc-maven-plugin/src/main/resources/config/template/fm-doc-process-config-template.ftl @@ -23,6 +23,10 @@ + <#if context.asciidocFreemarkerHandlerAvailable> + + + <#if context.modules?seq_contains("fj-doc-mod-fop")> diff --git a/fj-doc-playground-quarkus/pom.xml b/fj-doc-playground-quarkus/pom.xml index a1166a1be..df469d127 100644 --- a/fj-doc-playground-quarkus/pom.xml +++ b/fj-doc-playground-quarkus/pom.xml @@ -24,7 +24,7 @@ 3.4.1 3.1.0 1.4.3 - 0.4.1 + 0.4.2 2.0.21