О PDF Creator 3.9

Привет всем! Я – Виталий Шибаев, один из разработчиков библиотеки PDF Creator. В своей первой заметке я хочу рассказать об особенностях версии 3.9.

Главное, на мой взгляд, улучшение версии – вывод текста. Любой текст теперь выводится корректно с точки зрения поиска, копирования в буфер обмена. Помимо этого в общем случае выходные файлы получаются существенно меньшего размера (особенно при использовании CJK-шрифтов).

Другой, безусловно, важный момент – избавление от утечек памяти (и попутно серьезный рефакторинг кода). Как следствие, более быстрая и стабильная работа библиотеки.

Для отлова утечек мы не пользовались BoundsChecker’ом, выручили буквально два файла с кодом – http://www.colorpilot.com/~vit.shibaev/mmgr.zip, отличная вещь. Эти файлы просто добавляются в проект, в заголовочный файл прописывается #include “mmgr.h” и все! После этого рядом с исполняемым файлом программы будут создаваться файлы memleaks.log, memory.log и memreport.log. В memleaks.log показываются утечки, если есть; в memreport.log при соответствующих настройках в mmgr.cpp (по умолчанию подробные отчеты отключены) можно получить информацию обо всех выделениях/освобождениях памяти – где, когда, сколько и т.п. В общем всем C++-разработчикам рекомендую!

Возвращаюсь к улучшениям в библиотеке – теперь нормально выводятся CMYK Jpeg изображения. Эта особенность будет полезна пользователям, для которых важно качество изображений в выходном файле, как правило, при типографской печати это заметно.

Еще одна область, подвергшаяся сильным улучшениям – интерактивные формы и аннотации. Во-первых, файлы с этими элементами стали намного более оптимальными по размеру, зачастую меньше в 2-3 раза. Во-вторых – улучшился вывод юникодных символов на этих элементах. Еще одно улучшение коснулось radiobutton’ов – мы наконец включили в описание элемента Caption, т.е. теперь текст рядом с radiobutton’ом – часть контрола. Соответствующий код приобретает следующий вид:

PDF.PDFPAGE_CreateControl_RadioButton “rb_group”, 0, 0, 100, 20
PDF.PDFANNOTATION_Caption = “Place some text here”

Приоткрывая завесу нашей девелоперской кухни могу сказать, что к версии 3.9 мы значительно реорганизовали (улучшили, разумеется) код. Добавили, наконец, юнит-тесты (пока, конечно, не на весь код). Интересно, кстати, подбирали среду для юнит-тестирования на C++. Но об этом, пожалуй, уже в другой раз…

Виталий Шибаев
Разработчик PDF Creator


Technorati :

Leave a Reply

Your email address will not be published. Required fields are marked *