Hi Shuxin,

Thanks for bringing up this proposal. I have used poi-tl extensively in 
previous business scenarios; its document templating capabilities are indeed 
quite comprehensive, and its plugin mechanism is very flexible.

Based on the current [DISCUSS] thread, I have a few questions I'd like to 
further exchange thoughts on:

1. Regarding document format support
Since poi-tl currently only supports DOCX, will the design of fesod-doc 
consider supporting both DOC and DOCX formats simultaneously (or perhaps 
prioritize DOCX and gradually add support for DOC later)? There is still a 
certain demand for the DOC format in some scenarios. If fesod-doc can be 
compatible with both, it might be more beneficial for migration and practical 
adoption.

2. Regarding template data models and styling expression
The template data in poi-tl is mainly passed in via two ways: Map and POJO:

When special formatting is needed, it can be handled using a Map, for example: 
map.put("name", Texts.of("zhangsan").color("000000").create());

However, for POJOs, there is currently a lack of an elegant way to express 
styles or other formatting requirements.

Could fesod-doc consider introducing annotations on POJO fields to describe 
styles or other template-related metadata? Similar to the @ExcelProperty and 
@ContentStyle annotations in fesod-sheet, this would allow users to declare 
formats and behaviors directly on the POJO using annotations.

3. Regarding the functional focus of the module
In its overall design, will fesod-doc lean more towards "writing/generating 
documents" scenarios (e.g., generating DOC/DOCX by filling templates)? Or will 
it also consider providing relatively comprehensive "reading/parsing" 
capabilities?

4. Regarding whether the API design style will follow fesod-sheet
The fluent API design of fesod-sheet is very clear, for instance:
FesodSheet.write().head().registerWriteHandler().sheet().doWrite()

I'd like to know if fesod-doc will adopt a similar design style, such as:
FesodDoc.write().withTemplate().registerWriteHandler().doFill()
Or:
Document doc = FesodDoc.write().build();
doc.addParagraphs();
Will this kind of API style be used as a reference direction for the design of 
fesod-doc?

The above are some of my thoughts based on the current discussion (not 
comprehensive). I'm very much looking forward to the future design directions 
and practical experiences shared regarding fesod-doc.

Best,
Bengbengbalabalabeng

> 2026年3月18日 18:08,Shuxin Pan <[email protected]> 写道:
> 
> Hi everyone,
> 
> As outlined in our initial roadmap, Apache Fesod aims to provide
> comprehensive interfaces for document processing. To fulfill this
> vision, I would like to propose the development of a new Doc Module
> (fesod-doc).
> 
> Why Doc Support?
> While we have a strong foundation in Excel, many users are looking for
> a unified experience to handle Word documents. Instead of focusing
> only on tables within Word, this module will provide full-document
> manipulation capabilities (paragraphs, styling, templates, etc.).
> 
> We will primarily reference Apache POI for robust low-level support
> and poi-tl for its elegant, logic-driven template engine.
> 
> Implementation & Stability:
> To ensure our existing releases and Excel features remain unaffected,
> I will use a strictly modular approach. All new code will reside
> within the fesod-doc module, maintaining complete decoupling from the
> core project.
> 
> Commitment:
> I view this as a long-term task and am fully committed to maintaining
> and evolving this module over time. At the same time, this is a
> community effort—I highly welcome any interested contributors to join
> me in this initiative.
> 
> I look forward to hearing your thoughts and suggestions on this direction!
> 
> Best regards,
> 
> Shuxin Pan (psxjoy)
> Apache Fesod PPMC Member
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to