Hello,

as promised in some places I am posting another status update for the
pdfmm/PoDoFo merge situation. Short news: I finished all the big
refactors/reviews that I wanted to hand over for pdfmm 0.10, that
wants to become PoDoFo-next/PoDoFo 1.0.

The ETA of the previous status update was missed because of a busy
schedule on unrelated tasks and also lot of initially unintended
features that were actually delivered to pdfmm, like better text
extraction[1] or more PdfImage decoding options[2]. The last very big
update that I delivered is the long promised PdfField/PdfAnnotation
hierarchy/ownership refactor[3].Basically the main issues with
PdfField/Annotation API were:

- It wasn't always clear who was responsible to own the instances of
these types, especially for PdfField instances;
- It wasn't very handy to access these items collections, like the
/Fields array in the /AcroForm, or the /Annots array in pages, or the
field children list in /Kids array;
- the hierarchies for both PdfField/PdfAnnotation were unclear and
incomplete, and there wasn't a clear coupling between the two.

All of this work can be visualized in the attached UML diagram with
the new hierarchies. Deliver an API usability on pair with features of
other modern languages is far to be easy in C++, showing several
limits of the language or requiring features that are very hard to
grasp for C++ developers (eg. creating custom iterators). Also the PDF
specification is sometimes hard to model in a object oriented API. The
plan now continues with the following tasks:

- merge PoDoFo latest patches into pdfmm;
- finish mechanical port of PoDoFo tools to pdfmm;
- rename back pdfmm to PoDoFo;
- create a PoDoFo-next branch in PoDoFo's github and upload all this work.

More API changes are to be expected in the PoDoFo-next branch, before
what should be 1.0, but I expect those to be not that big like the
ones that happened in pdfmm repository. I consider it an imperative to
create this PoDoFo-next branch and deliver all of this work under the
PoDoFo name. My hope is to finish these tasks before the end of the
year but I already know it will be hard: around 80% of the time of the
last refactor was done on my free time, and probably the same will
happen for the above tasks. Also, I am going to be father soon, so
consider my attempts to deliver slowed down by family responsibilities
in the future.

I hope you appreciate this work and still hold on waiting it coming to
PoDoFo github. Of course you can preview all the work on pdfmm
repository[4], which I guarantee you is way more tested behind the
scenes than what the public unit tests suggest, especially for the new
features.

Cheers,
Francesco

[1] 
https://github.com/pdfmm/pdfmm/commit/9229908cb89a7a62a697aed01be2c046f4154bd1
[2] 
https://github.com/pdfmm/pdfmm/commit/9d6fc3fca7a00217b8ee431aa831eab0fbf3b4fe
[3] 
https://github.com/pdfmm/pdfmm/commit/05faca589b732cf0b78122dabfd4a39c285e9a2b
[4] https://github.com/pdfmm/pdfmm
_______________________________________________
Podofo-users mailing list
Podofo-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/podofo-users

Reply via email to