Pracuję nad projektem, który pobiera kilka obrazów od użytkownika, a następnie tworzy plik PDF zawierający wszystkie te obrazy.
Czy jest jakiś sposób lub jakieś narzędzie do zrobienia tego w Pythonie? Np. Aby utworzyć plik PDF (lub eps, ps) z obrazka 1 + obraz 2 + obrazek 3 -> plik PDF?
py
[language or tag] some_keyword
jak w[python] PDF
or[python] PDF image
Odpowiedzi:
Proponuję pyPdf . Działa naprawdę fajnie. Niedawno napisałem też post na blogu, możesz go znaleźć tutaj .
źródło
Oto moje doświadczenie po wykonaniu wskazówek na tej stronie.
pyPDF nie może osadzać obrazów w plikach. Może tylko dzielić i łączyć. (Źródło: Ctrl + F na stronie dokumentacji ) Co jest świetne, ale nie, jeśli masz obrazy, które nie są jeszcze osadzone w pliku PDF.
Wydaje się, że pyPDF2 nie ma żadnej dodatkowej dokumentacji poza pyPDF.
ReportLab jest bardzo rozbudowany. ( Podręcznik użytkownika ) Jednak z odrobiną Ctrl + F i grepowaniem przez jego źródło, otrzymałem to:
Następnie spróbuj tego w wierszu poleceń Pythona:
Wszystko, czego potrzebowałem, to pobrać kilka obrazów do pliku PDF, abym mógł sprawdzić, jak wyglądają, i wydrukować je. Powyższe wystarczy, aby osiągnąć ten cel.
ReportLab jest świetny, ale skorzystałby na umieszczeniu helloworlds, takich jak powyższe, w widocznym miejscu w swojej dokumentacji.
źródło
Proponuję Pdfkit . ( instrukcja instalacji )
Tworzy pdf z plików html. Wybrałem go, aby utworzyć plik PDF w 2 krokach z mojego stosu Python Pyramid:
pdfkit.from_string(...)
metody przez przekazanie wyrenderowanego html jako parametruW ten sposób otrzymasz dokument pdf z obsługą stylów i obrazów.
Możesz go zainstalować w następujący sposób:
za pomocą pip
pip install pdfkit
źródło
Możesz spróbować tego (Python-for-PDF-Generation) lub możesz wypróbować PyQt , który obsługuje drukowanie do formatu PDF.
Python do generowania plików PDF
Portable Document Format (PDF) umożliwia tworzenie dokumentów, które wyglądają dokładnie tak samo na każdej platformie. Czasami jednak dokument PDF musi być generowany dynamicznie, co może być sporym wyzwaniem. Na szczęście są biblioteki, które mogą pomóc. W tym artykule omówiono jedną z nich dla języka Python.
Przeczytaj więcej na http://www.devshed.com/c/a/Python/Python-for-PDF-Generation/#whoCFCPh3TAks368.99
źródło
Oto rozwiązanie, które działa tylko ze standardowymi pakietami.
matplotlib
ma zaplecze PDF do zapisywania liczb w formacie PDF. Możesz tworzyć figury z wykresami pobocznymi, gdzie każdy wykres podrzędny jest jednym z obrazów. Masz pełną swobodę w manipulowaniu figurą: dodawanie tytułów, gra z pozycją itp. Gdy figura jest gotowa, zapisz ją w formacie PDF. Każde wywołaniesavefig
spowoduje utworzenie kolejnej strony PDF.Przykład poniżej przedstawia 2 obrazy obok siebie, na stronie 1 i stronie 2.
źródło
Zrobiłem to całkiem sporo w PyQt i działa to bardzo dobrze. Qt ma szerokie wsparcie dla obrazów, czcionek, stylów itp., A wszystko to można zapisać w dokumentach PDF.
źródło
Uważam, że matplotlib ma możliwość serializacji grafiki, tekstu i innych obiektów do dokumentu PDF.
źródło
fpdf to (też) python. I często używany. Zobacz wyszukiwanie PyPI / pip. Ale może została zmieniona z pyfpdf na fpdf. Z funkcji: obsługa PNG, GIF i JPG (w tym przezroczystość i kanał alfa)
źródło
Używam rst2pdf do tworzenia pliku pdf, ponieważ bardziej znam RST niż HTML. Obsługuje osadzanie prawie każdego rodzaju obrazów rastrowych lub wektorowych.
Wymaga reportlab , ale stwierdziłem, że reportlab nie jest tak prosty w użyciu (przynajmniej dla mnie).
źródło
Możesz faktycznie spróbować xhtml2pdf http://flask.pocoo.org/snippets/68/
źródło
Zależy to od formatu plików graficznych, ale do projektu tutaj w pracy użyłem narzędzia tiff2pdf w LibTIFF z RemoteSensing.org . Po prostu użyłem podprocesu do wywołania tiff2pdf.exe z odpowiednim argumentem, aby odczytać rodzaj tiff, który miałem i wypisać taki plik PDF, jaki chciałem. Jeśli nie są to tiffy, prawdopodobnie możesz przekonwertować je na tiffy za pomocą PIL lub może znaleźć narzędzie bardziej specyficzne dla twojego typu obrazu (lub bardziej ogólne, jeśli obrazy będą zróżnicowane), takie jak wspomniany powyżej ReportLab.
źródło
fpdf działa dobrze dla mnie. Znacznie prostsze niż ReportLab i naprawdę darmowe. Działa z UTF-8.
źródło
rinohtype obsługuje osadzanie obrazów PDF, PNG i JPEG (natywnie) i innych formatów bitmapowych (gdy zainstalowano Pillow).
(Pełne ujawnienie: jestem autorem rinohtype)
źródło
Jeśli znasz LaTex, możesz rozważyć pylatex
Jedną z zalet pylatexu jest łatwość kontrolowania jakości obrazu. Obrazy w pliku PDF będą tej samej jakości co oryginalne obrazy. Korzystając z reportlab, zauważyłem, że obrazy zostały automatycznie skompresowane, a jakość obrazu spadła.
Wadą pylatexu jest to, że ponieważ jest oparty na LaTex, może być trudno umieścić obrazy dokładnie tam, gdzie chcesz na stronie. Jednak odkryłem, że użycie argumentu position w klasie Figure, a czasem Subfigure, daje wystarczająco dobre wyniki.
Przykładowy kod do tworzenia pliku PDF z jednym obrazem:
Oprócz instalacji pylatexu (pip install pylatex), należy zainstalować LaTex. W przypadku Ubuntu i innych systemów Debian, które możesz uruchomić
sudo apt-get install texlive-full
. Jeśli używasz Windowsa, polecam MixTexźródło