Изменение размеров страниц в PDF файлах

В библиотеку для создания PDF документов PDF Creator Pilot была добавлена возможность для конвертирования PDF документов с размером страниц А4 в PDF документы с размером страниц А3. После трансформации на новой странице размером А3 помещаются две страницы размера А4 из исходного документа. Чтобы воспользоваться этой функциональностью, необходимо вызвать метод ConvertToA3. Здесь можно загрузить примеры PDF файлов до и после применения этой функции.

Так же для преобразования размеров и ориентации страниц в PDF библиотеке доступны следующие методы:

  • PageHeight – свойство для чтения/установки высоты текущей страницы;
  • PageOrientation – свойство для чтения/установки ориентации текущей страницы;
  • PageResolution – свойство для чтения/установки разрешения (в DPI) текущей страницы;
  • PageRotate – метод, который поворачивает страницу;
  • PageSize – свойство для чтения/установки размера текущей страницы;
  • PageWidth – свойство для чтения/установки ширины текущей страницы.

Артём Голубниченко

DjVu-конвертер

В настоящее время очень популярен электронный формат DjVu, предназначенный для хранения отсканированных документов (бланки, книги и т.п.). Очень часто формат DjVu позиционируют как альтернативу формату PDF. Прежде всего, защитники DjVu проводят сравнение между размером pdf и djvu файлов

Компания «Два Пилота» выпустила бесплатную программу-конвертер для создания DjVu-документов. DjVu Printer Pilot – это приложение на базе виртуального принтера для создания DjVu-файлов. После установке программы, в системе появится виртуальный принтер с именем «DjVu Printer Pilot». После чего остается любой документ, который необходимо конвертировать в DjVu, отправить на виртуальный принтер. После печати документа, появится главное окно программы, в котором можно будет сохранить полученный DjVu-документ или скомбинировать с ранее созданным.

Для создания файлов в DjVu-формате, наша компания использовала бесплатную библиотеку DjVuLibre.

Артём Голубниченко

Последствия округления

Лучше всего сразу начать с иллюстрации того, что было ДО неточного округления чисел с плавающей точкой и как это стало выглядеть ПОСЛЕ того, как ошибка была исправлена.

comparing

Проблема проявилась при конвертировании EMF в PDF (или при рисовании на HDC, полученном из PDF). Проблема была с функциями Polyline(To). На вход функции поступал массив точек, координаты которых не значительно отличались друг от друга. И далее для того, чтобы нарисовать набор линий в PDF, необходимо было преобразовать координаты из HDC в координаты для PDF. Для этой цели мы используем функцию LPtoDP. Но функция возвращает целые значения координат, поэтому, например, для двух координат из EMF (160, 74) и (159, 60) функция преобразует их в (1, 1) и (1, 2). В результате чего набор прямых приобретет вид, который представлен на скриншоте слева. Поэтому в данном случае мы перестали использовать эту функцию и получили правильный результат работы функций Polyline(To).

Артём Голубниченко

Как получить путь к системным папкам

Когда ваше приложение нуждается в том, чтобы сохранить/загрузить/скопировать какой-нибудь файл в системной папке ни в коем случае не нужно использовать жёстко прописанные пути вроде "C:\Documents and Settings\All Users\Application Data". Во-первых, этот путь может быть изменён в следующих версиях Windows. Во-вторых, пользователь может просто установить ОС на другой диск. 🙂

Избежать эти неприятности нам поможет WinAPI-функция SHGetFolderPath.

Можно почитать про нее в MSDN.

Кратко: Возвращает путь к определённой системной директории, тип которой указан в идентификаторе CSIDL.

HRESULT SHGetFolderPath( HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwFlags, LPTSTR pszPath );

Все константы CSIDL можно найти здесь.

С помощью SHGetFolderPath можно найти почти все необходимые папки.

Но среди констант CSIDL вы не найдете папку Tmp юзера. В XP по умолчанию "Documents and Settings\USERNAME\Local Settings\Temp", в Windows 7 – "Users\USERNAME\AppData\Local\Temp".

SHGetFolderPath тут ничем не поможет. Пути в разных версиях Windows сильно отличаются.

Найти путь к этой папке можно в ключе реестра HKEY_CURRENT_USER\Environment. Там есть 2 значения TEMP и TMP (теоретически должны совпадать) – путь к этой самой папке.

Всё очень просто 🙂

Олег Медведев

PDF/A – формат для долгосрочного хранения

PDF/A – это электронный формат документа, предназначенный для долгосрочного хранения. Этот стандарт был создан для удовлетворения растущих потребностей хранения информации в электронных документах на архивно-длинных промежутках времени. Многофункциональный характер формата PDF может создавать трудности для сохранения информации в течение длительного срока, и некоторые полезные функции в формате PDF, к сожалению,  несовместимы с требованиями длительного хранения. Например, документы PDF могут являться системно-зависимыми, опираясь на системные шрифты и другой контент, который хранится во внешнем исходном файле. Чем больше проходит времени, и особенно технологических изменений, эти внешние связи могут быть разорваны, и зависимая информация будет потеряна.

PDF/A стандарт основывается на PDF формате версии 1.4, и определяет некоторое подмножество компонент PDF, которые должны быть использованы при разработки программного обеспечения, которое создает или обрабатывает PDF с целю сохранения долгосрочных по сравнению с традиционными PDF документов. PDF/A направлен на сохранение внешнего вида электронных документов в течение долгого времени, а также направлен на поддержку будущего доступа и возможности перехода в будущем к новым технологиям за счет того, что он обеспечивает основу для: 1) вложения метаданных в электронный документ и 2) определения логической структуры и семантических свойств электронных документов. В результате этот формат файлов, больше подходит для долгосрочного хранения.

PDF/A-1 файлы должны включать:

  • Встроенные шрифты
  • Аппаратно-независимые цвета
  • Метаданных XMP

Наша библиотека PDF Creator Pilot имеет свойство, которое указывает, следует ли создать PDF/A совместимые файлы. Это свойство – ProducePDFA. Установка свойства ProducePDFA в VARIANT_TRUE означает, что выходной PDF файл будет совместим с PDF/A стандартом. Чтобы использовать это свойство правильно, его нужно установить перед использованием любых текстовых или графических выводов.

Если вам нужна возможность долгосрочного хранения документов, то вам следует использовать PDF/A совместимые документы. С помощью библиотеки PDF Creator Pilot  можно очень просто и быстро создавать такие документы.

Артём Голубниченко

Улучшена конвертация EMF2PDF в PDF Creator Pilot.

Недавно в библиотеке PDF Creator Pilot был исправлен баг с заливкой полигонов. В присланном документе фигуры выводились с помощью функции Polygon. Но после вывода они закрашивались неверным цветом – черным. Как оказалось это было связано с тем, что для заливки использовалась кисть со стилем BS_PATTERN. А в свойствах этой кисти поле  lbColor, содержащее цвет кисти, игнорировалось, и цвет заливки нужно было брать из функции SetBkColor. После того, как проблема стала понятной, мы незамедлительно её исправили. В результате получили правильную конвертацию emf2pdf. Чтобы оценить результат исправления, ниже представлена сравнительная картинка (до и после исправления проблемы)

Before and after fixing the problem
Before and after fixing the problem

Так же ниже можно скачать оригинальные pdf и emf файлы:

PDF файл до исправления, PDF файл после исправлени, EMF файл.

Артём Голубниченко

Новая версия Exif Farm

В начале марта наша компания выпустили новую улучшенную версию популярного EXIF редактора – Exif Farm. К существующей линии наших EXIF программ теперь добавились ещё две: Exif Farm и Exif Farm Pro.

Exif Farm – это бесплатный EXIF просмотрщик и редактор, а Exif Farm Pro – это платная версия, в которой есть возможность пакетной обработки файлов. Это и есть основное отличие двух программ.

Exif Farm – это EXIF редактор, который интегрируется в операционную систему и может быть вызван из контекстного меню в проводнике Windows или из любого иного приложение, в котором осуществляется взаимодействие с проводником Windows. Именно в этом и заключается удобство и основная особенность программы. Как же часто, переходя по папкам с фотографиями, возникает желание быстро просмотреть EXIF, или IPTC, или XMP данные. Теперь это можно сделать без запуска специальной программы. Всего-навсего, кликните правой кнопкой мыши по файлу, выберите в контекстном меню пункт “Свойства”  и перейдите на вкладку Exif Farm. И перед Вашим взором предстанет полный список метаданных, представленных в фотографии. Этот список для удобства сгруппирован. Так же, сразу можно добавить или изменить необходимую EXIF информацию.

Среди достоинств, которые мы выделяем в новой версии программы, можно отнести следующее:

– единственная программа, которая встраивается в систему и расширяет её оболочку для возможности работы с EXIF данными;

– большое количество тегов для просмотра и редактирования, включая специфические теги производителей фотокамер;

– удобство, простота и быстрота использования программы;

– современный интерфейс;

– поддержка Windows Vista и Windows 7;

– экспорт и импорт метаданных в файлы XML.

Если Вы пользуетесь другим нашим EXIF редактором  – Exif Pilot (или одной из его версий) и захотите перейти на новую программу Exif Farm, то абсолютно не почувствуете никакой разницы. И функциональные возможности, и интерфейс для работы с метаданными остались теми же. Мы постарались сделать эти программы наиболее близкими друг к другу.

Если Вы профессиональный фотограф, или фотограф-любитель, или просто Вам нужна возможность просмотра и редактирование EXIF/IPTC/XMP данных, то тогда Вам следует попробовать наши новые программы Exif Farm и Exif Farm Pro.

Артём Голубниченко.

Новый конвертер PDF2Image Pilot от компании «Два Пилота»

Очень часто для решения задач электронного документооборота (и не только) возникает потребность преобразовать PDF документы в PNG формат или многостраничный TIFF. Поэтому наша компания выпустила новый конвертер PDF2Image Pilot – программу для конвертирования PDF файлов в высококачественные BMP, EMF, GIF, JPEG, PNG, или TIFF изображения (так же поддерживает многостраничный TIFF).

Этот конвертер основан на другом нашем продукте PDF Rasterization Pilot. PDF Rasterization Pilot является библиотекой для разработчтиков. Используя это компонент, разработчики могут добавить в свою программу возможность экспорта PDF в различные графические форматы, выводить PDF на контекст устройства (будь то экран монитора или принтер).

Именно библиотеку PDF Rasterization Pilot и использует новый конвертер для сохранения PDF в графические файлы и вывода содержимого PDF в окно предварительного просмотра. Мы постарались соединить в PDF2Image Pilot возможности нашей PDF Rasterization библиотеки и наш многолетний опыт в разработке удобных и простых интерфейсов. Будем надеяться, что PDF2Image конвертер, поможет Вам в решении различных задач. Будем с нетерпением ждать Ваших отзывов и предложений!

Артём Голубниченко

Новый PDF редактор

25 января наша компания выпустила программу PDF Maker Pilot –  новый визуальный редактор для создания электронных PDF форм и PDF документов с различными графическими объектами. Разработчики, Татьяна Орловская и Александр Григорьев, работали над проектом в течение года. Новая программа – это улучшенная версия ранней программы PDF Maker Pilot.

Новый PDF Maker отличается более дружественным интерфейсом и улучшенной функциональностью. Мы старались, чтобы во время работы с программой, пользователь получал нужные ему результат с минимальным приложением усилий. По ходу разработки, мы, прежде всего, стремились сделать полноценный редактор, учесть все недостатки предыдущей версии и сделать их достоинствами новой версии PDF Maker Pilot.

В ближайших планах – добавить взаимодействие с базой данных. База данных будет содержать текстовую и графическую информацию (например, цифровые подписи) пользователя. Планируется обеспечить возможность автозаполнения бланков данными из базы, многократное заполнение бланков.

Надеемся, что теперь создавать любые PDF документы с помощью PDF Maker Pilot будет просто и приятно. Желаю всем пользователям только положительных эмоций во время работы с нашей программой!

Посетите страничку программы PDF Maker Pilot.

Артем Голубниченко
Руководитель проекта Виртуальный Принтер

Недокументированные возможности вывода текста в EMF

До недавнего времени в нашей PDF библиотеке “PDF Creator Pilot” была нерешенная проблема с выводом вертикального текста в EMF файлах. В большей степени это было связано с тем, что EMF-record, выводящая этот текст была недокументированной. Впрочем, сейчас Microsoft выпустила полную документацию по формату EMF, но ещё раньше это появилась на ресурсе www.undocprint.org. Все это вместе и помогло разрешить проблему.

Проблема изначально заключалась в том, что текст по вертикали выводился не совсем корректно. Он очень сильно сжимался, и буквы накладывались друг на друга.  Поэтому изначально было подозрение, что граничный прямоугольник (rclBounds) для вывода текста рассчитывается неверно. Как в последствии оказалось,  в этом и заключалась проблема. Опишу немного технических деталей, которые выяснились при вскрытии проблемы.

Во-первых, из формата  EMF нами была получена необходимая информация по записи EMR_SMALLTEXTOUT (сам текст, rclBounds и т.д.).

Во-вторых, как выяснилось, размеры rclBounds рассчитывались верно. Но загвоздка заключалась в том, что он не был повернут на 90′. Почему на 90′? Потому что когда текст выводится по вертикали, то в структуре LOGFONT, отражающей настройки шрифта,  – это  фиксируется в полях lfEscapement и lfOrientation. И поэтому после того, как это было определено, необходимо ещё и rclBounds также повернуть на 90′. И тогда текст стал выводиться верно.

Резюмируя, скажу, что проблема была в том, что из EMF передается не повернутый на 90′ rclBounds. Поэтому для корректного вывода текста оставалось его только повернуть на нужный угол. Ниже попытаюсь показать это на рисунках (специально выделю rclBounds, чтобы было нагляднее).

Граничные прямоугольники
Граничные прямоугольники

Исправленную версию PDF библиотеки можно загрузить здесь.

Также наглядно можно посмотреть PDF документ до исправления и PDF документ после исправления, соответственно.

Артем Голубниченко
Руководитель проекта Виртуальный Принтер