Hello Dominik, PoDoFo developers, I'm writing this message to communicate you that a new project forking PoDoFo has been been formally set up. While forks are not something new in the open source scene, I am aware of the potential shock that such news can cause in well established communities. With this in mind, please allow me to go straight to the point. What I would like to is: - explain what is pdfmm and why I decided to fork PoDoFo; - ask for briefly checking correct copyright/authorship attribution in pdfmm, with regards to current licensing terms in PoDoFo; - accept criticism for the modalities of the fork and lack of communication.
pdfmm[1] is a full revamp of the PoDoFo library, introducing: - new features and bug fixes; - a reviewed API based on C++17; - sanitization of the code style, with complete removal of the Hungarian notation and C style allocations/constructs. pdfmm is a single person project and has been worked behind the scene for at least the past 2 years. The main new features/bug fixes are: - UTF-8 strings are now first citizen in all the library. Removed high level APIs with implicit/confusing PdfDocEncoding encoded strings in all the library. Removed high level wchar_t support in WIN32 builds; - PdfString is now backed with UTF-8 storage or raw buffer. Removed low level UTF-16BE storage. Appropriate conversions are done on the fly when reading/writing/accessing the instances; - PdfName is now backed with UTF-8 storage and/or raw buffer. Removed implicit (and confusing) PdfDocEncoding storage. Appropriate conversions are done on the fly when reading/writing/accessing the instances; - Added support for PDF 2.0 UTF-8 strings (untested); - Brand new PdfEncoding class with support for both /Encoding and /ToUnicode; - PdfEncoding more complete Unicode support accepting UTF-8 strings for conversion operations. Text extraction is **immensely** improved; - Automatic creation of /Encoding CIDMap and /ToUnicode CMaps; - Improved XRefStream support, added support for it in incremental saves (no more coercion to XRef tables after incremental saves); - Many fixes in save incremental object/generation number incrementing; - Added PdfSigner abstract class and mm::SignDocument(). Removed previous available and hard to use signing facilities; - Added PdfFontType1Encoding, which supports Type1 implicit encodings. Attached you can find a full list of the features/bug fixes, including a git short log with the most prominent commits descriptions. Motivations in support of forking PoDoFo are mostly technical, with a desire to rework the inner core of the library, deprecate old compilers support and provide a modern/reviewed C++17 API. There are also more personal and "political" reasons in support which are mainly: - perceived stagnation in PoDoFo development in general, with prominent developers no more interested, or simply lacking time, in pushing core changes (some of those are really necessary to improve the PDF specification support) or code cleaning; - unwillingness/hesitation on my side to discuss about deep interventions in the library such as radical API/core changes, removal of the Hungarian notation, code style formatting, removal of inline methods, old compilers support and C style APIs usage; - general lack of time on my side in pursuing this big amount of technical changes within the established PoDoFo community; - perceived reluctance within current PoDoFO management in moving to git hosting. pdfmm aims to fully respect copyright attributions with regards to PoDoFo licensing terms and a task to revamp the AUTHORS file enlisting all the authors that contributed in the forked PoDoFo code (also better specifying the area of their intervention) has been created[2]. The "LGPL 2.0 and later" headers have been preserved in all the files, except for the newly created ones, which are upgraded to "LGPL 2.1" fixed. As a whole, pdfmm is hence distributed with the LGPL 2.1 license. pdfmm is currently not a full replacement of PoDoFo: all the tools have been removed and there is no plan to restore them until they are rewritten with a new license which, in my opinion, shouldn't be GPL. As a consequence pdfmm doesn't currently aim for inclusion in Linux distributions. Concluding, I'm very proud of the contributions I did to PoDoFo which it was the first open source project where I substantially contributed to. Because of some mistakes on my side, my introduction has not been super smooth but things turned being productive very quickly and I'm thankful for high quality review and suggestions received. I am sorry about the lack of communication about my silent work with PoDoFo first and pdfmm later (the rename actually happened very recently). Lack of time is partly to blame with other reasons being having envisioned the current state of pdfmm at least 3 years ago, with perceived little chances to see the same happening within PoDoFo in reasonable time. It has been a lot of intense work and the best has yet to come. I hope to keep a good communication with all of you and say a big thank you to Dominik and others for having created PoDoFo, which remains a valuable code to start any PDF related work. Regards, Francesco [1] https://github.com/pdfmm/pdfmm [2] https://github.com/pdfmm/pdfmm/issues/26
Version 0.9.20 * pdfmm requires now a C++17 compiler * Improved XRefStream support, added support in incremental saves * Many fixes in save incremental object/generation number incrementing * String backed with UTF-8 storage * PdfName backed with UTF-8 storage * Brand new PdfEncoding class with support for both /Encoding and /ToUnicode * PdfEncoding: More complete utf-8/Unicode support * Automatic creation of CIDMap and /ToUnicode * Added PdfSigner class and mm::SignDocument() * Added PdfFontType1Encoding, which support Type1 implicit encoding * Added support for PDF 2.0 UTF-8 strings (untested) * Added PdfTextState and use it to compute string widths in PdfFont * Improved PdfDocEncoding to expose conversion utf8 conversion facilities * PdfParser: Support also files with whitespace offset before magic start * PdfObject auto ownership * Improved IsDirty handling: less dirty bit sets * Added PdfPostScriptTokenizer that as better general support for PostScript * PdfDictionary: Review/convert GetKey -> FindKey * PdfDictionary: Review GetKeyAs methods * Fixed hundreds of warnings. No warnings left in tested builds * FontConfigManager: better handling with custom configurations * Removed PdfMutex. Used std::mutex where necessary * Datatypte: remove PdfDataType::HexString * Removed support for old compilers (MSVC6, hpux, borland, turbo...) * Added better endian swap functions * Removed auto_ptr usage * Removed pdf_int/pdf_uint types * Removed use of pdf_long/long types * Removed use of ptrdiff_t * Removed unistring and ugly string conversion code. Moved to utfcpp * Reviewed PdfObject::GetNumber/PdfObject::GetReal (strict/lenient) * Remove PdfObject inheritance on PdfVariant * Reviewed PdfVariant/PdfObject/PdfArray/PdfDictionary equality/disequality operators * Simplified copyright headers * Object copy constructor must copy also stream * PdfElement: GetDocument(), GetObject() refs * PdfVecObjects: GetParentDocument() -> GetDocument() * Remove PdfSignOutputDevice::SetSignatureSize(size) * Move inline code to .cpp * Remove comments on overrides * Cleaned CMakeFiles (removed custom Find<>.cmake) * NULL -> nullptr * Use shared_ptr in PdfFontMetrics, PdfEncoding in PdfFont * Cleaned PdfFontCache (renamed PdfFontManager), removed font functions from PdfDocument * PdfArray::FindAt() return ref * Simplified license headers * Reviewed PdfPageTree and PdfPageTreeCache API * Reviewed most int vs unsigned indexing * Remove all hungarian notation * Sanitize code style * Removed all const char* and passed to string/string_view * Renamed PdfFontCache -> PdfFontManager * Renamed PdfVecObjects -> PdfIndirectObjectList * Renamed PdfNamesTree -> PdfNameTree * Renamed PdfPagesTree -> PdfPageTree * Renamed PdfPagesTreeCache -> PdfPageTreeCache * PdfObject: removed GetIndirectObject(), MustGetIndirectKey (must use PdfDictionary now) * Remove PdfMemoryManagement.cpp, Removed podofo_new, podofo_free * Add chars type for char array storage/buffering which inerits string * Review pointer vs ref parameters/return types * Remove PdfRefCountedBuffer, PdfRefCountedInputDevice, PdfRefCountedOutputDevice * Removed PdfMemoryManagement and all C style malloc/free usage * Refactored PdfOutputDevice (PdfMemoryOutputDevice/PdfFileOutputDevice/etc.) GIT shortlog ============ e22e5001c07514cf88c484e8880015418c592121 Removed PdfMemoryManagement c1831455983b81a9eec3f8fc2a657553723bf19b Removed PdfRefCountedInputDevice. Added PdfContainerOutputDevice 7d5cb9fbd4c30533307d6cc5d4e3a1330c0b0174 Removed bogus type PdfSharedBuffer, previously known as PdfRefCountedBuffer 8629e692977dc1e03cafb24610a36c532031a8fd PdfOutputDevice: Reworked to feature polymorphic behavior 09082d5e506ea86d0feef3824ad8027cfcd95efb PdfSharedBuffer: Removed bogus buffer comparison methods 36e8221c83b0ed2fdeae5c4157d28b4832f8e63e Renamed PdfRefCountedBuffer -> PdfSharedBuffer a38235dfaa311c728242d3e524e7a829fc5b0758 Renamed mm::buffer_t -> mm::chars and use it extensively in PdfString and PdfName 342c5d2f13f589d983a9c5c930693c11964a7a36 Renamed PdfVecObjects -> PdfIndirectObjectList 8830849f3a923f49bed2d0c0ba84b7d429c7fc06 Rename Base14 -> Standard14 10a25213fcd3c0c21bef5a144ef6dfcd09e19af7 Renamed PoDoFo -> pdfmm e028fe181df71cf4b8507af91a03fc1dcd6e84bd Moved span.hpp and EnumFlags to appropriate place for delivery fc78b255f5018e63bc24946df9e181ddc0163c42 Introduce new source layout 556011afcf9b329dc3d0d2fd01a6ac8c64c30e32 Purged Hungarian notation 54bc0de987fdf200872a370267faca5237a57c76 Cleaned indentation and spacing rules 389125363022df8a7afb4632848187585b2f4765 Simplified some left-over long lgpl file headers 72fcbd0a09c316c3c631c391c8911c184522daea PdfDictionary: Added AddKeyIndirectSafe and move AddKeyIndirect to perform more checks a4f2d18d75a8187537d3adfbd32b4ed90f2c245d PdfObject: Removed GetIndirectKey/MustGetIndirectKey 513168f0279ec77ebdd612ee05e8974caa60a940 PdfDictionary: Clean getter function. Removed not very useful ones 1908c593a52359cb93f61465963b6782a6404f32 PdfDictionary: Big clean GetAs/FindAs/FindParentAs 41f9180a7051a0b5b59a5c21a994fee330b6f99d PdfDictionary: Clean internal types 063fd9546dfdefed367a2953ebd3bc1ed7ed3e59 PdfReference: Removed bogus inheritance from PdfDataType and add it in the PdfVariant union f62ffd8a75b25484d1420640ba5e78f1abee9258 Patch by John Senneker: Ignore broken objects by default in PdfParser 1df44c60f4d0545e842b9036d6c7a745c173ea97 PdfInputDevice: Accept buffer nullptr with size 0 cd2e49882fefa7a417fa33341ec1a9c076ae431c PdfPainter: Fixed dirty memory issues when trying to split text in DrawMultipleLineText 1ee10d43eb5ad832be98d741450e78435d3ba76d PdfImage: Removed touching PdfXObject rect. Added GetWidth()/GetHeight() 14e0377b0cdb684409cc2807997a08556c0ef173 Clean use of PdfInputDevice::GetChar() 0490162610f43d0d2d2f587e2b50e22ad21de1e5 [FIX] Fixed PdfInputDevice::TryGetChar when reaching eof 2ddbaf7e53600551b5f7cc2e0c95f7ef36e31b8b [FIX] Fix writing /Contents filling whole prepared beacon area 34e3c0e2dd48b2d9d00b13b701d48edf9eb2dd0c PdfSigner: Better API to retrieve signature size de42661bb5ff1c60e65c9e38d933abcd05e68eb0 PdfArray: Moved accessors to unsigned instead of size_t f257eb20babc11a632e9dbea6206c7e15b9ba07b PdfSignatureField: Added custom signature /Type during preparation 1f18032916f73caeacae67a0c61f63a20465db7b PdfEncoding: Added new EPdfContents handling 06e0a5d71bcaabe0673fe8875e215841691c990b PdfContentsTokenizer: Fixer canvas spanning delmiters/begin-end tags in multiple streams dc6da59adb0a807d2c9bad283f85c7b7771a24cb PdfContentsTokenizer: Moved to std::shared_ptr device 48fec820956b1af281135be96381d2f03c4637dc PdfInputDevice: Assume non const read functions 6f060357028ce463491a35fadc1f295d89dc44b5 PdfContentsTokenizer: Improved API for reading inline images 72822df6c292b989782fde0584ad1a271ea1286c PdfTokenizer: Moved to used directly PdfInputDevice 0c9c850f44edbd19059c0d3b0b909758abf9923a [ADD] Improved cmake handling. Added googletest stub 7f57d513c58ceedb5ab1c706dcdfd36e2388268a PdfWriter: Fixes writing pdfs with inline trailer Info dictionary 6cba8439811d38a47cbc14a247d372b7515f0f6f [ADD] Better handling finding key on a detached object 62abc965d29fd7b4e28467b6977ec86a6787e52f Added Dictionary.AddIndirect, PdfArrayy.AddIndirect 0faec5008fe1e33784d0307075294a1ddeb7355e CheckEOFMarker: Small optimization/cleaning fca65de4c2e3fd778162e3e30b0c8d78f006823b PdfInputDevice: Clear eofbit prior seeking 536d5a9bb1823acfb67fa97c3b5d230ae734d12e PdfParser: Removed exception without message acf331595fefaefa3d8d0c13d54e2e46b01729c1 [FIX] PdfEncdoding: Fix parsing CMaps with mistmaching sequences length and end of sequence keyword 1c679d42f29376fca498872a2559da635699abb7 PdfStream: Fix setting RawData with undeterminate length 5989a068aa289aadfbc31fbc0e8046921476fa41 [ADD] Added PdfContentsTokenizer::TryReadNextVariant 9e8165df2ddc6d8ca9ccc6b50aadd931c47ea1ed PdfContentsTokenizer: Fix eol 55084d65a55d581e2a73d7ed138b0246b46a3b5a PdfTokenizer: ReadNext with string_view 9d9c8a4c962e738f7ff681bf6c9aae8a58d642b0 PdfTokenizer: Fix wrong assignment with literal 26c9e56b0799db474e6bb7c68fa239574f834ac3 PdfTokenizer: Review API and fixes pdfs with pages without /Contents or no stream 33582731d9551ba6451ba1207c56442f4336a224 Upgraded CMake requirement to 3.16 935f41044876f11ab8389023fa1592c6626d0e89 PdfSigner: Added GetSignatureSize() with default implementation cebad630e2652e7e768ab307e232d5b756da282d Add PdfSigner and SignDocument() free function c21a6782dd6119d142621552d8fe3c01db48134f PdfInfo: Fixed initial dates updating for constructor with object 46ae10c7cc349b72b3aeed4c7c568b3641c42f3b PdfData: Accept string_view 8efa6066a899c55bb4484ebc5c91b1842758d935 Removed used of NULL and convert it to nullptr f39487574e587a0ea43588496a6bafb6f9331736 Fixed wrong deallocation of encrypt object in PdfWriter 059797a107229a0bc5fe9649773bac2d3f496588 Removed unsafe functions and fixed warnings f7d0930e17cc84b3dc8d51e84d61c346c1bfd834 PdfImmediateWriter: Fixed warnings, better encapsulation a3d14d5aea285f7907b049267f2567aa5e645592 PdfXRefStreamParserObject: Fix warning signed/unsigned 74beb9d87100f447dccf757ce760c44f10d0a3dc PdfVecObjects: Cleaned and disabled unused functions for linux compilation d35998ee2fe48de37499e7b213e714ede9cfa744 [ADD] Synced utfcpp from https://github.com/ceztko/utfcpp 15cfecbe30b153111641a31776f0f8310e8c5551 PdfMemoryManagement: Removed unusued function podofo_is_little_endian() 14dfe42c97c36d79c2ced1704f003c84ea235982 Clean OpenSSL Build support 3138c4f7e67f62c35b48b6c1d473ac80ba7f609d PdfEncrypt: Fixed PdfAESInputStream bf53ee3a5d5ead2cc1a175b8ecf60c5a69668a35 PdfDefinesPrivate: Fix eol 05bc9b948263bdf1eb63c54444205864365f064d PdfOutputDevice: Attempt to fix locale dependent endline 97ba15076894037a329b95235cdf9ed503be7d25 PdfObject: Added some TODO doc 835e8e9c468c98c33cc5732e9f8934b4351df6a5 Updated copyright headers 556ce762a3a816685184364c777bb4b4cb4a3073 PdfXRef: Fixed handling XRefStm documents 6a7fac9cf2d3eedaaddfd4444e827c3e85fe7540 PdfXRef: Moved some code for better ordering f7953af4045f110a3e4ee348297fbff069740d10 PdfParser: Better doc/comments 9cbbc00e481c0eb3bb86758f141fc52cf536feed Cleaning PdfXRef, PdfWriter, PdfXRefStream 02a7765ac9f11099dd3c8ce95e709be894978eb2 PdfParser: Fixed wrong "offset" for Free XRef entries 4edc8f4672a8ca6d22e88d64175d984e18546874 Big cleaning: remove C style I/O, unless required 1f8553cb7dc71f321d5c4ba7ae4d91a29eee5adc PdfStream/PdfOutputStream: Clean, added string_view overloadings 0e03448f4eb1cdaa8f0c48ba7894e73fe1c6bef9 PdfObject: Fix equality/disequality semantics ce56d932b90fcc5a42e1b39533d4a767c131b180 Big cleaning PdfDocument/PdfWriter/PdfOutputDevice f39ed3d91dad4979a5e9be9813f78d8bbe586172 PdfPdfFileOutputStream: Missing fwrite error check e654504ea17376e8d89a69e623e932bb4e379e85 Clean: Removed explicit and confusing FlateCompress/UnCompress methods db3846e57ab3101345fb46ef7ada1020592fe23e PdfMemDocument: Clean shitty truncate handling c5e1aa6185fbff5816021b32b42a07d2a670d563 Removed PdfPainterMM 426b47b8cd25ddc081269983dce6d177c3aac965 [ADD] Reviewed equality/disequality operators fe35a706752a0cee955ecc6abd24c437842eff02 PdfStream: GetFiltered copy moved to unique_ptr aa66de2c4107532cd7b9513984fbd4ea7f807465 PdfStreamObject: Fix wrongly marking objects dirty on stream creation during parsing 7b533d785ca9cb5884ec25e7e7a5fd470ec5ed7d PdfDictionary: Removed BAD constructor that set dirty the object for nothing 9f23c37733af6cd25c4f479ef7de605403592fae PdfObject: Improving SetDirty/ResetDirty handling fd91207c50500bde46e2bf33899d61a64423ea31 PdfObject: Removed inheritance from PdfVariant 6bd30006b7f4f0c3c1cd95d267661578daf3e7f1 [ADD] Added PdfDocument to PdfObject 3f135de4222e26ab95122a6bd8bbcdc2487e37e4 PdfString: Clean old unicode conversion code d10f6df233f26bbb6718c5e90a77aafbeb73137d Updated utfcpp 7c0548da59507340d57095bf2dc70f6d0ab1d78b PdfString: Removed ConvertUTF8toUTF16 28763cf52145851e776ba64557ab1418d47ed8ac PdfString: Removed ConvertUTF16ToUTF8 0031c1f61475bc63568927bdab98cef9a6d83c85 [UPD] Updated utfcpp 0184ab5c9b2742ce6841e602aedb2fd265916007 PdfDictionary: Completed GetKeyAs methods b1b399059fdc87264d886c2357dd0af94ff55897 PdfVariant: Added new API for tryget values d5f61aa484f1260c25aee1a5b15ac121428be9a5 PdfVariant: Review GetNumber(), GetReal() b67c050a059a39d22788079c509ef693d9123c89 PdfDataType: Removed HexString d9319ead18913b54363dd46abd010e4ff50bbf53 PdfName: Rename m_rawdata -> m_data for better clarity 0e616ae797e8d8b587df76e54e142917973270b9 Removed libunistring support 2c65a3c346155d84df5286f30fb4132822d702e2 PdfVariant: Fix wrong fallback in switches 71925b80c6a8501a0adc0e1a6f54acbecd7234b7 Fix EOL, indentation e6e7e52276580ba402103ad7c151f9d592663e5c PdfField: Fix creating field without inserting in Acroform 972782a64841a7e743c9c7e13ae28b9588dc2e37 Fixed dependencies Fontconfig 18e2666a4e3ef101504faf22e86fca5225b8233a [CLEAN] Removed bundled Find Freetype/Fontconfig 81e2899cc2de85c6807bbb44f54da4f817f0c65b PdfPainter: Fixed use of EPdfPainterFlags::NoSaveRestore 581a5ffb9c929a77aa34d55bab8e4f2c0467213c [ADD] Added better PdfCanvas::HasRotation(teta) 8543d988aab1c4a11c7d5114089145ec0148d817 [FIX] Fix missing V2_0 PdfVersion 48f07bb7d6c15dad12c280f0aafa4d52df1cd682 PdfRect: Add FromCorners(), GetTop(), GetRight() 572683984f2a1c1dfc253195bb3ffdccb677281a [FIX] Fix date b8489af6fe43a0017a0ca5deffc380bba5062886 [ADD] Better init for PdfSignature ccf0c9609c4f991118eafe7627ccb97000f32fdf Fix iterator errors with new VS2019 (STL4015) 0777e07255ff1d6cfadd08cf283475669927b8fe [FIX] PdfStream: Fixed compilation and bug 875c3a360d96e2dce6365bbbd91fa261821efa2a PdfPainter: Better name NoSaveRestorePrior b60de620014938dbf5196b4c262049530fa67cc6 PdfPainter: Fixed NoSaveRestorePrior 8c8cd8fd4b7c70e6941ee32ac44b15ad61a3731f PdfParser: Better support documents with garbage on start of document b443fceff5ec5eb8116e04a8b55a634da71a5d2e PdfEncoding: Handle beginbfrange with string better with code points b77a8ec4195db69e6a07bd683b9d700dfa71c4cf PdfTokenizer: Don't output gargabe on exception 0257f9a9f41e73cd4d04b3c68eebf29b303d9785 PdfOutputDevice: Added string_View constructor 45678ec4f9a393eb2a69a6516ad57b33cb509309 [FIX] PdfField: Fixed GetFullName() 5f96f9334d19b20e5bc5cb8a584553abe534ae67 PdfField: AssertTerminalField() in various properties, cleaning b528b7c79b46102b45746dd741295f93717f1555 [ADD] PdfName: utf-8 first citizen 9d153287b9b119eb2b3675da84023390b83b17ce [FIX] Fixed PdfFontMetrics temporary width computation 19fd0365f0f73b23fb057c48670c1c80e7885162 [FIX] Fixed appending on page properly 95ff560d59143f4ece0f63015a001064066d986b [FIX] PdfParser: Re-init properly reference from object when deleted ParserObject 4eac8266259cd3b1826718f1cf44a64dede617ea PdfInputStream: Don't treat pointers as integers bfaeecd2426b83db6a897170d01a46c33f435c87 Fix signed/unsigned warnings ae496c9b5634bf0966e2e3c2c76fca7ecff7b9d4 Converted to type safe enums 0450dd6a66fe2766e4984b208d0c00fa2ec016dd PdfArray: FindAt returns reference 40c08f17d05e7dabfcc5a9430106f88bcd86829c PdfXObject: Fixed EnsureResourcesInitialized ca10fa7d2036fda685e917e46422793dcc78d2af PdfListField: Fix reading item 8c09ec856abd520e9254b6918de98f071cf8bf8a More warning fixes 64bit d6ff8948da0a4748d64108db6a14518307809739 PdfPage: possible fix with retrieving GetAnnotationCount() 57545519cf01fdae6d67786b07619525ca50d3a9 PdfSignatureField: Fixed retrieval of unsigned signature properties e840303cede45fa3325e2e567b387a7a88061b53 Removal of pdf_long, review of size_t vs int a1d4a6a2f82e61f06d9cc147edb66dbfbcdcdadb [CLEAN] Mass move to use orrride specifier 68f7579160546365795d7dc14af336e551db795e PdfField: Fix IsExport -> IsNoExport d2a62bd74db855f2f65903a8779daea449fd0317 EPdfDataType: change to C++11 enum class 3aa1e3c86536f8d6a5ec2b4801a1653e6df75916 PdfObject: Added PdfStream copy 5813eef96147ddf212efde871877861fe7f7d6c8 [FIX] PdfField: Fix reading text from textfields 9b5a59ff1f5c99c4204fcfc5cb7b9bf731da790b Cleaning: moved some debug macros to be always defined 6f8c267a67d77919b063ecf17bd518765da2d873 [CLEAN] Removed unuseful empty constructors. Removed some function attributes 09ee2be1f5e9712c8e6467401a067fb7926a2006 Clean: Removed n-th unuseful min/max macro f51af4d3efb80b3c8a520cc18b1844d38293ef74 PdfDate: full rewrite with date.h 2c0d640e6dcf13271239445de16442b70a69f791 Pushed requirement for C++17 466e174437cdea70cf1fcea8e62cb97d0941a526 CMakeLists.txt removed policies and unuseful FindZLIB ca9ae384e774ea7eb5f8d306961b03064538a47e Some small compilation refactor to include PdfParserObject.h in PdfParser.h 0a9689f2d0d6f094b0c3809e3dede0798af319f7 Clean: PdfArray, removed stupid functions. Removed any trace of ePdfDataType_Stream existence 8e11aa367d2e8a9a59e2972fe108c774cfa36e05 Clean: Removed PdfMutex, stlport, lua 3c691c7359b3a79f2e49a6d5a55a6fb910876efd Big clean: Removed tools, manuals, PdfHintStream a709974a94cac1759017ca7105cb636006d6df6d Burn with fire auto_ptr usage aa5986a483a87582f9d61dcda1b1646fea843ec8 Removed with fire pdf_int/pdf_uint types. The library is now C++14 dependent 59350e3510e9959209d09a8cb0428dc256aee4aa PdfEncoding: Reintroduce codespace extraction process ccb1ce215c0d062d7c49baaa786afc34f0ab1f9d PdfCanvas: Now GetStreamForAppend() creates a new content stream in /Contents always dc4977ea5b2631b7d91c4ec810a9200e3801a54f PdfImage: GetImageColorSpace() should use FindKey() 55fb51b8e5cd6b11c3ca4b9e5b0ab45d0f1c1268 PdfName: Added GestStringUtf8(), FromUtf8String() ccd0951dffbdebaf7ec7bd8765a3f31b2dd25eba PdfXObject: Added TryGetTryCreateFromObject, EPdfXObject e81241fb59ff9e5f2057d262873fb5197ee73226 PdfReference: Added GetAppearanceDictionary(), fixed GetAppearanceStream() 8e6c24f0167bacbf588d7f96e6866140f2b408e0 PdfField: Added optional acroform insertion 089df3a2e8a8dd332efb51c4fcb43934c46d589b PdfAcroForm: Added GetFieldsArray() c16fd70c6323b19f9aa6b0cf5999c9dc7d6b4236 PdfField: Added GetFieldNameRaw() 7a4f3e96b32d564df5534c95f327ecb32942256e PdfField: Support adding proper flags for all button and list fields ec63e2ac5a4ef475d969d26f06a58ae8a818af88 PdfPage: Create annotations with default print flag 7a5e8b0724255b76ae594cfb5d7cb7776b13030c PdfField: Added CreateChildField() af651fd965eeabe5218daf027469dfa87e89a60d PdfDictionary: Return added object on AddKey() 2f275f3c771a1f5e0fa404bd60ca96af13551a76 PdfField: Fixed creation of field without annotation 10563c32406dd5dc1a5d5c801df13508ef71ee86 PdfCMapEncoding: Fixed decoding when only /ToUnicode is available 655e0a7fb9f1da49bff193288ad1630a5f98d13d PdfEncoding: Fix string decoding with unit size 1 byte 2b8a2f800f975d99696acdd10d4916ace4056b2d PdfEncoding: Rewritten CMap handling 7d57e7a60956d8391dba1f128e09839eb3af4830 PdfString: Added const GetBuffer() 7ba5bdec1bce191360a2de52d0c1b630fd41ba28 PdfField: Escape dots in partial names while constructing full field name 7b5a5726f7bf4e45e6df840993f9851ab05c6f6f PdfPainter: Added support to perform save/restore before appending f7fa0326d55ba816a66d1df3ad992c7b833a07b2 Added partial support for CID identity fonts 8a99ec5f8366b975453218e5731372c46ccc1566 PdfFontConfigWrapper: Added support for global instance wrapper d63dbf06728fdcb0d3244118c1db60b03656e62f PdfDictionary: Changed internal data structure to holds full objects and not pointers 42b4eef311b9c82b4e6ef77b1be3ef5d7815ff67 PdfField: Support for PdfField of unknown type 1712a01bb7b94bd9fd881816bfac4fb9948664ca PdfObjectStreamParserObject: Stop removing objects after parsing 02b623bb8bf331bc65a963fd291c1ca19572550c [FIX] Flatten: find /AP key instead of getting c47edf3119eaafca32b2014ad5e5cf169e2f621f PdfFontConfigWrapper: Workaround configuring Fontconfig externally 05334812f777669309e4d04334fdc6e45d66f527 PdfDate: Added a ToStringW3C method that exports the W3C date representation of the string aa0d5be04ac241ce982d2fc67a8f38ed11bc6588 PdfString: Added support to directly create HexString e999b752ac762c1f478814594b5a2d63a6f0d17e PdfXObject: Added getter/setter for rect 26dd98a829ed3e2ac86bb6d74254d02cff9cdb41 PdfField: Added GetFullFieldName() 8fd41ca19175923a20f9321904d8c02520d408dd PdfString: Added convenience PdfString::FromUtf8String() method 2ba49def695e5b7819a97e507000188833481e13 PdfField: Added creation of PdfField from PdfObjcect 23996a02d1e057a4ba93efbe1042a8017b6b3291 PdfField: Support for reading recursively name and choice field items adb6ef65703aa6ebd1e0292c66f3f372c3a4ddb4 PdfTokenizer: ReadDictionary/ReadArray small optimization 0d6b0bd8ef272e5b2da04fbc72a819bb62c82c77 PdfParser: Support also files with whitespace offset before magic start 2f8f12bc35a9201c87ae83bb014133f7afe60827 PdfObject: Workaround write function for PDF/A compatiblity a47e60d45eff555a277a167725e01219ed8c7fdd Don't build resource file on static build 3e95a0f71a2314de721938a8a3cb6d81d7fb9513 PdfMemDocument: Relaxed WriteUpdate with provided device to allow update even if document is not loaded for update 80d6ea81b89b38d37749ccf0157b06000c7d77b3 PdfField: Add retrieving flags from parent 34a97a0f9a771e2161b3d4652c7b4c9c1b3aee8c PdfMemoryOutputStream: Change INITIAL_SIZE to const 1dea2875b65e5c69560fbd3c2e7983afdc673fc3 PdfFontCache: Forward declare LOGFONTA, LOGFONTW to avoid include Windows.h 63c8da0c794dca9a59137e168087de4d0b1052a7 PdfImage: Added getter for ColorSpace 1e5bc9dc431937eaad7b0a83725c69c93da0b331 PdfAnnotation: Added GetAppearanceStream method 0359928f7b0033b204c5d0d5c7f353dff842a998 PdfSignatureField::SetAppearanceStream: Removed use of unuseful SetAppearanceStreamForObject method 1d0b28653585ac61262450ab17347d9bc86930e7 PdfXObject: Added method to optionally initialize resources on XObject c8075fcd4b8c23a3f03a920f83a52e6b637be33d Fix GetFieldFlags method to set 0 on not found flags dd1f352f090c3c723681539c440388546b6c295a Better API for creation of typed PdfField(s) from widget 3e538d64ca15850b5f61ad046bc9f5da762625b6 PdfSignatureField: Add getter/setter for signer namer c198d831bdcd67405d4ea7585a95bc4f11536629 PdfSignatureField: Added getters for reason, location, name 157a92902d498f9a9ae0acb7fd08fd124b7367d3 PdfVariant: Added SetName method d63bbdea04437f926797f3fed8fda47df7221916 PdfPage: Added SetMediaBox method 4aa2e2aa289c18c230a3b5fddd598e9c7c7d5310 PdfArray: Use bound checking for operator[] f233cf912be8adbf5a40a3563756f0a354bd227a PdfFontFactory: Fix lookup Type 0 fonts with inline DescendantFonts array 6e61d803d6a2ee9c181ca10342c7db4cc6dd8131 PdfObject: Introduced automatic ownership handling b47f416b4fa89393d9fe7854573bfd6c77376c76 PdfArray: Removed inheritance from std::vector 4ceb8c9ed990b7db30c032d26db0d9acd42722e9 Squashed commit of the following: PdfEncoding: Tentatively write CMap ROS (Registry, Ordering, Supplement) with custom entries PdfFont: Reviewed Bold, Italic handling Centralized font subset prefix generation in PdfFont PdfFontTrueTypeFont: Fixed producing a working font subset with new CID CMap PdfFontTrueTypeSubset: clean, some fixes and proper reference to doc PdfEncoding: Added Char codes to CID CMap and /ToUnicode CMap export Removed PdfEncoding equality operators, cleaned PdfFontCache Clean PdfPagesTree/PdfPagesTreeCache Don't add metrics descriptors for standard14 fonts Cleaned enums: Removed E prefix and moved unknown value to be 0, not 0xFF PdfFontType1Base14: Fixed /Widths export Big clean about CID -> GID mapping, Base14 fonts handling Restricted inheritance to several classes Reviewed accessibility of PdfFont, PdfFontMetrics, PdfEncodingMap PdfFont: Better get char/default width Readded width compute in PdfFont Tons of fixes PdfIdentityEncoding/PdfFontType1Encoding/PdfEncoding/PdfFontMetrics PdfEncoding: Add support for both /Encoding and /ToUnicode leverage Rename PdfEncoding -> PdfEncodingMap PdfEncoding: Moved to use PdfPostScriptTokenizer instead of PdfContentsTokenizer PdfEncrypt: Fixed various cases of encrypt/decryptes. Also better API Moved PdfSimpleEncoding to separate files Added better handling of missing chars in /ToUnicode Added support octal values in string smaller than 3 digits Also big clean and PdfInputDevice.TryGetChar() moved to char type Removal of escape tables and move to methods with switch Added PdfFontType1Encoding Added PdfPostScriptTokenizer Added working PdfUnicodeMap Removed long type for good PdfCMapEncoding: Better handle presence of /ToUnicode PdfObject: Added TryGetStream PdfEncoding: Fixed reading of beginbfrange and beginbfchar strings PdfEncoding: Removed font parameters from convert functions PdfEncoding/PdfPainter: Moved more API to string_view PdfEncoding: Simplified API for unicode conversion Removed PdfField(const PdfField&) constructors Add PdfTextState, separating it from PdfFontMetrics Rename PdfListField -> PdfChoiceField PdfString: Port to utf-8 first citizen PdfFontTTFSubnet: Cleaned, removed ByteSwap functions. Maybe fix for big endian archs Removed some byte swap functions Tons of cleaning code styles, formatting
_______________________________________________ Podofo-users mailing list Podofo-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/podofo-users