Я хочу иметь возможность генерировать вывод PDF из моего (собственного) приложения Windows на C++. Доступны ли для этого бесплатные библиотеки с открытым исходным кодом?
Я посмотрел ответы на этот вопрос, но в основном они касаются .Net.





Haru is a free, cross platform, open-sourced software library for generating PDF written in ANSI-C. It can work as both a static-library (.a, .lib) and a shared-library (.so, .dll).
Сам не пробовал, но может тебе поможет
@Rui: только творить, к сожалению.
FWIW, я написал оболочку POCO для libHaru (github.com/pocoproject/poco/tree/master/PDF). Мы никогда не выпускали его, но это код почти производственного уровня.
К сожалению, LibHaru не поддерживает чтение и редактирование PDF. Так бесполезно для меня.
Стоит отметить, что последний коммит был в 2015 году. В настоящее время библиотека не поддерживается.
Если вы отважны и хотите создать свою собственную, вы можете начать с библиотеки PostScript и дополнить ее для работы с PDF, воспользовавшись преимуществами Adobe бесплатный онлайн-справочник в формате PDF.
Подход без открытого исходного кода: PDF Creator Pilot, который предоставляет дополнительные языковые параметры, включая C++, C#, Delphi, ASP, ASP.NET, VB, VB.NET, VBScript, PHP и Python.
Это немного зависит от ваших потребностей. Одни инструменты лучше умеют рисовать, другие - писать текст. Каир неплохо подходит для рисования (поддерживает широкий спектр экранов и типов файлов, включая pdf), но может не подходить для хорошей типографики.
Я работал над проектом, для которого требовался отчет в формате pdf. После поиска в Интернете я нашел библиотеку PoDoFo. Выглядело очень крепко. Мне не нужны были все функции, поэтому я создал оболочку, чтобы абстрагироваться от некоторых сложностей. Это было не так уж сложно. Вы можете найти библиотеку здесь:
http://podofo.sourceforge.net/
Наслаждаться!
Создание PdDoFo на Mac - огромная боль, поэтому я, наконец, оставил попытки. Создать LibHaru было очень легко.
Podofo получил 2 проблемы с компилятором, после добавления #include <climits>, <numeric_limits> в два файла смог собрать пакет. Но почему-то система cmake не работает на моем Linux, где у меня есть две версии GCC (старая идет с моим Centos6.5, а последняя версия 5.3, которую я создаю). Связывание - это проблема. Мне удалось связать helloworld, но тестовая программа выдала пустой документ. Решить эту проблему очень сложно.
Но для podofo ТРЕБУЕТСЯ библиотека freetype2, которая является GPL, а не LGPL. Вы не можете создавать программы с использованием freetype2 если вы не хотите публиковать свой источник.
@ 18C: Freetype позволяет включать в коммерческие приложения с закрытым исходным кодом. См. это
Очень многообещающе выглядит библиотека muPdf: http://mupdf.com/
Также есть программа просмотра с открытым исходным кодом: http://blog.kowalczyk.info/software/sumatrapdf/free-pdf-reader.html
Похоже, muPdf предназначен для рендеринга PDF-файлов, а не для их создания?
@ vy32 Глядя на источник, я бы сказал, что создание pdf-файлов в лучшем случае находится в стадии разработки и не является основной целью muPdf.
PDF Хумус. см. http://pdfhummus.com/ - содержит все необходимые функции для работы с файлами PDF, кроме рендеринга.
Недавно я сделал большой PDF-экспорт с Hummus и могу порекомендовать его. Вероятно, неполный с точки зрения охвата всех функций текущего PDFSpec (который является довольно исчерпывающим), но простой для понимания и хорошо расширяемый с помощью класса обратного вызова с рядом виртуальных функций (github.com/galkahana/PDF-Writer/blob/master/PDFWriter/…). Содержит обработку TIFF / JPEG и библиотеку freetype для обработки шрифтов.
Вам удалось скомпилировать его как динамически подключаемую библиотеку? Или он поддерживает только статическую связанную библиотеку?
http://wxcode.sourceforge.net/docs/wxpdfdoc/
Работает с библиотекой wxWidgets.
jagpdf кажется одним из них. Он написан на C++, но предоставляет C API.
Попробуйте wkhtmltopdf
Возможности программного обеспечения
Кросс-платформенный. Открытый исходный код. Преобразуйте любые веб-страницы в документы PDF с помощью webkit. Вы можете добавлять верхние и нижние колонтитулы. Генерация ТОС. Пакетный режим преобразования. Может работать на сервере Linux с XServer (должны быть установлены клиентские библиотеки X11). Может напрямую использоваться PHP или Python через привязку к libwkhtmltox.
Это хорошо. Но, поскольку он использует устаревший webkit, некоторые страницы могут жаловаться (например, YouTube)
Можем ли мы читать файлы pdf с помощью LibHaru или можем только создавать?