Blog (9)
Komentarze (25)
Recenzje (2)

Generowanie dokumentów w postaci plików PDF

@lukasz.developerGenerowanie dokumentów w postaci plików PDF07.12.2010 21:21

Hej,

utrzymując tematykę generowania dokumentów z poprzedniego posta zdecydowałem się napisać co nieco o tworzeniu plików w formacie PDF.

Rozpatrzmy dwa scenariusze: - generowanie dokumentu bezpośrednio w postaci PDF - konwersja dokumentu z innego formatu

Nie zamierzam przedstawiać tu przekroju przez wszystkie znane lub dostępne rozwiązania i wymieniać ich wad czy zalet. Chciałbym opisać natomiast kilka znanych mi sposobów, które mogą być używane w większości praktycznych zastosowań.

Generowanie dokumentu

W tym przypadku istnieje przynajmniej kilka darmowych bibliotek, którymi możemy posłużyć. Niektóre wyraźnie różnią się od innych, skupiając się na odmiennych aspektach generacji dokumentu. Dzięki temu możemy wybrać bibliotekę, która najbardziej odpowiada naszym oczekiwaniom.

Wymienię tutaj trzy z nich:

- iText / iTextSharp Są to biblioteki dla programów napisanych w oparciu o .NET lub język Java. Udostępniają narzędzia ułatwiające m. in.: formatowanie tworzonego tekstu, generowanie tabel, tworzenie zakładek, czy dodawanie interaktywnych treści. Na stronie programu dostępne są kody źródłowe demonstrujące sposób użycia poszczególnych funkcjonalności udostępnianych przez biblioteką. W internecie można także odnaleźć tutoriale oraz inne informacje o tym jak należy używać jej we własnych aplikacjach. Warto w tym przypadku zwrócić uwagę na licencję, która jest przystosowana bardziej do celów hobbystycznych lub darmowych aplikacji i często nie jest odpowiadająca dla zastosowań komercyjnych. Wykupienie wersji płatnej pozwala jednak na usunięcie pewnych ograniczeń. Więcej informacji można znaleźć na oficjalnej stronie biblioteki.

- PDFSharp Biblioteka zawierająca mniejsze ograniczenia licencyjne :), wydana na licencji MIT. Obsługuje on formaty PDF od wersji 1.2 (Adobe Acrobat Reader 3.0) do 1.7 (Adobe Reader 8.0). Pełne wsparcie udostępnione jest dla wersji 1.4, w przypadku 1.5 obsługa niektórych funkcjonalności nie została jeszcze zaimplementowana. Podejście do generowania w tym przypadku różni się nieco od opisanego wcześniej. Udostępnione metody operują na nieco niższym poziomie abstrakcji. Mamy do dyspozycji generowanie tekstu i możliwość wstawiania prostych elementów graficznych i obrazków, jednak za znaczną część formatowania odpowiada sam programista. Biblioteka nie udostępnia też np.: automatycznego wstawiania stron czy funkcji do tworzenia tabel. PDFSharp może być natomiast bardzo przydatny w przypadku dokumentów z grafiką, jeśli chcemy mieć pełną kontrolę nad dokładnym rozmieszczeniem wszystkich elementów.

- MigraDoc Wydana również na licencji MIT. Jest to biblioteka zbudowana na bazie PDFSharp, jednak udostępnia znacznie więcej funkcji związanych z formatowaniem dokumentów. Posiada również wsparcie dla tworzenia tabel, automatycznego dodawania stron itp. Przydatna dla generowania dokumentów PDF w przypadku, gdy nie jest ważne dokładne położenie elementów i ich formatowanie możemy pozostawić automatycznym funkcjom. Wadą tej biblioteki jest nieco nieintuicyjne użycie np.: słyszałem o sytuacjach, kiedy daną funkcjonalność można teoretycznie zrealizować na kilka sposobów, jednak nie wszystkie z nich działają prawidłowo. Należy więc czasem uzbroić się w cierpliwość. Nie jest to jednak cechą wymaganą od programisty tylko przez tę jedną bibliotekę ;).

Na stronie PDFSharp i MirgaDoc możemy również znaleźć przykłady demonstrujące sposób ich użycia w konkretnych przypadkach. Warto także zwrócić uwagę, że obu bibliotek można używać razem, korzystając z funkcjonalności każdej z nich w sposób jak najbardziej dopasowany do naszych potrzeb.

Konwersja istniejącego dokumentu

W tym scenariuszu istnieje możliwość użycia specjalnego konwertera. W przypadku bezpłatnych są to zwykle konwertery online. Nie znalazłem żadnej darmowej aplikacji offline, która oferowałaby taką funkcjonalność. Jeśli ktoś zna i chce się podzielić z innymi informacją o nim, zachęcam :).

Jeśli możemy użyć Automation for Office (opisany trochę szerzej w moim poprzednim artykule), mamy znacznie ułatwione zadanie. W Office 2007 można pobrać ze strony Microsoftu specjalny dodatek umożliwiający zapis w formacie PDF lub skorzystać z możliwości wydruku do pliku PDF przy użyciu odpowiedniej aplikacji. Pamiętajmy jednak o zachowaniu ostrożności jeśli zamierzamy użyć tego rozwiązania w środowisku serwerowym.

Kolejną, jednak najbardziej żmudną w realizacji opcją jest stworzenie własnego konwertera plików z pewnego formatu do PDF. Wymaga to niewątpliwie dużo pracy, jednak jeśli napiszemy taki konwerter jako samodzielny moduł o odpowiednim poziomie uniwersalności, możemy użyć go również w swoich późniejszych projektach :).

Podsumowanie

Artykuł ten miał za zadanie zaprezentować kilka wybranych rozwiązań darmowych, które umożliwiają tworzenie nowych lub konwersję istniejących dokumentów do formatu PDF. Jeśli znasz nie wymienioną tutaj bibliotekę lub sposób generacji PDFów wart uwagi, podziel się z innymi pisząc komentarz z informacją bądź linkiem :).

Pozdrawiam,

Łukasz

P.S.

W komentarzach pojawiło się kilka innych, ciekawych rozwiązań: - ReportLab Open Source Silnik do generacji PDFów, napisany w Pythonie. Dostępny również w płatnej wersji o większych możliwościach. - LaTeX Można tworzyć dokumenty w formacie LaTeXa, a następnie konwertować je do PDFów przy użyciu pdflatex.

Dziękuję wszystkim za komentarze :).

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.