Biblioteka PDF typu open source dla aplikacji C / C ++? [Zamknięte]

91

Chcę mieć możliwość generowania wyników PDF z mojej (natywnej) aplikacji C ++ Windows. Czy są dostępne jakieś bezpłatne / otwarte biblioteki do tego?

Przyjrzałem się odpowiedziom na to pytanie , ale dotyczą one głównie domeny .Net.

ChrisN
źródło

Odpowiedzi:

62

LibHaru

Haru to bezpłatna, wieloplatformowa biblioteka oprogramowania typu open source do generowania plików PDF napisanych w ANSI-C. Może działać zarówno jako biblioteka statyczna (.a, .lib), jak i biblioteka współdzielona (.so, .dll).

Sam tego nie próbowałem, ale może ci to pomoże

aku
źródło
Czy możemy czytać pliki pdf za pomocą LibHaru, czy możemy tylko tworzyć?
Rui Carneiro
5
@Rui: niestety tylko twórz.
Mark Ransom
2
FWIW, napisałem opakowanie POCO dla libHaru ( github.com/pocoproject/poco/tree/master/PDF ). Nigdy go nie opublikowaliśmy, ale jest to kod zbliżony do poziomu produkcyjnego.
Alex
Niestety LibHaru nie obsługuje czytania i edycji plików PDF. Taki bezużyteczny dla mnie.
zamrozić
19

Pracowałem nad projektem, który wymagał raportu w formacie PDF. Po wyszukaniu w Internecie znalazłem bibliotekę PoDoFo. Wydawał się bardzo wytrzymały. Nie potrzebowałem wszystkich funkcji, więc stworzyłem opakowanie, aby usunąć część złożoności. Nie było to zbyt trudne. Bibliotekę znajdziesz tutaj:

http://podofo.sourceforge.net/

Cieszyć się!


źródło
Tworzenie PdDoFo na Macu to ogromny ból, więc w końcu zrezygnowałem z prób. Budowa LibHaru była bardzo łatwa.
Podofo napotkał 2 problemy z kompilatorem, po dodaniu #include <climits>, <numeric_limits> w dwóch plikach, był w stanie zbudować pakiet. Ale w jakiś sposób system cmake nie działa dobrze na moim Linuksie, gdzie mam dwie wersje GCC (stara została dostarczona z moim Centos6.5 i najnowsza 5.3, którą zbudowałem). Łączenie jest problemem. Udało mi się połączyć helloworld, ale program testowy wygenerował pusty dokument. Bardzo trudno jest rozwiązać ten problem.
Kemin Zhou
1
Ale podofo WYMAGA biblioteki freetype2, która jest GPL, a nie LGPL . Nie możesz tworzyć oprogramowania przy użyciu freetype2, jeśli nie chcesz udostępniać publicznie swojego źródła.
18C
@ 18C: Freetype umożliwia włączenie do komercyjnych aplikacji o zamkniętym źródle. Zobacz to
Wrodzony optymista
17

Jeśli jesteś odważny i chcesz stworzyć własną, możesz zacząć od biblioteki PostScript i rozszerzyć ją, aby radziła sobie z PDF, korzystając z bezpłatnej dokumentacji Adobe PDF online .

Tyler
źródło
8

PDF Hummus. zobacz http://pdfhummus.com/ - zawiera wszystkie wymagane funkcje do manipulacji plikami PDF z wyjątkiem renderowania.

Lidia Mirkin
źródło
1
Niedawno zrobiłem duży eksport PDF z Hummusem i mogę go polecić. Prawdopodobnie nie jest kompletny pod względem obejmowania wszystkich funkcji obecnego PDFSpec (który jest dość wyczerpujący), ale jest łatwy do zrozumienia i dobrze rozszerzalny za pomocą klasy wywołania zwrotnego z wieloma funkcjami wirtualnymi ( github.com/galkahana/PDF-Writer/blob/ master / PDFWriter /… ). Zawiera obsługę TIFF / JPEG i bibliotekę freetype do obsługi czcionek.
RED SOFT ADAIR
czy udało Ci się skompilować go jako dynamicznie połączoną bibliotekę? A może obsługuje tylko statyczną bibliotekę połączoną?
Sam
8

jagpdf wydaje się być jednym z nich. Jest napisany w C ++, ale zapewnia C API.

Sangcheol Choi
źródło
7

To zależy trochę od twoich potrzeb. Niektóre zestawy narzędzi są lepsze do rysowania, inne są lepsze do pisania tekstu. Kair jest całkiem niezły do ​​rysowania (obsługuje szeroką gamę typów ekranów i plików, w tym pdf), ale może nie być idealny do dobrej typografii.

Leon Timmermans
źródło
4
  • Wydaje się, że LibHaru jest używane przez wielu.

Podejście inne niż open source to: PDF Creator Pilot, który zapewnia więcej opcji językowych, w tym C ++, C #, Delphi, ASP, ASP.NET, VB, VB.NET, VBScript, PHP i Python

prakash
źródło
1

Wypróbuj wkhtmltopdf

Funkcje oprogramowania

Wiele platform. Otwarte źródło. Konwertuj dowolne strony internetowe na dokumenty PDF za pomocą Webkit. Możesz dodać nagłówki i stopki. Generowanie TOC. Konwersje w trybie wsadowym. Może działać na serwerze Linux z serwerem XServer (muszą być zainstalowane biblioteki klienta X11). Może być bezpośrednio używany przez PHP lub Python poprzez powiązania z libwkhtmltox.

M.Hefny
źródło
To jest dobre. Ale ponieważ korzysta z datowanego zestawu internetowego, niektóre strony mogą narzekać (na przykład youtube)
swdev