services: avahi: Add Avahi to the system profile.
[guix.git] / gnu / packages / pdf.scm
blob4b30bf09d5cceea6e42617c5112bb266e3fcee25
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
3 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
4 ;;; Copyright © 2014, 2015 Ricardo Wurmus <rekado@elephly.net>
5 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
6 ;;;
7 ;;; This file is part of GNU Guix.
8 ;;;
9 ;;; GNU Guix is free software; you can redistribute it and/or modify it
10 ;;; under the terms of the GNU General Public License as published by
11 ;;; the Free Software Foundation; either version 3 of the License, or (at
12 ;;; your option) any later version.
13 ;;;
14 ;;; GNU Guix is distributed in the hope that it will be useful, but
15 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
16 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 ;;; GNU General Public License for more details.
18 ;;;
19 ;;; You should have received a copy of the GNU General Public License
20 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
22 (define-module (gnu packages pdf)
23   #:use-module ((guix licenses) #:prefix license:)
24   #:use-module (guix packages)
25   #:use-module (guix download)
26   #:use-module (guix build-system gnu)
27   #:use-module (guix build-system cmake)
28   #:use-module (guix build-system python)
29   #:use-module (gnu packages)
30   #:use-module (gnu packages compression)
31   #:use-module (gnu packages fontutils)
32   #:use-module (gnu packages ghostscript)
33   #:use-module (gnu packages databases)
34   #:use-module (gnu packages djvu)
35   #:use-module (gnu packages gettext)
36   #:use-module (gnu packages backup)
37   #:use-module (gnu packages lesstif)
38   #:use-module (gnu packages image)
39   #:use-module (gnu packages pkg-config)
40   #:use-module (gnu packages qt)
41   #:use-module (gnu packages xorg)
42   #:use-module (gnu packages gnome)
43   #:use-module (gnu packages glib)
44   #:use-module (gnu packages gtk)
45   #:use-module (gnu packages lua)
46   #:use-module (gnu packages curl)
47   #:use-module (gnu packages pcre)
48   #:use-module (gnu packages perl)
49   #:use-module (gnu packages tls)
50   #:use-module (srfi srfi-1))
52 (define-public poppler
53   (package
54    (name "poppler")
55    (version "0.37.0")
56    (source (origin
57             (method url-fetch)
58             (uri (string-append "http://poppler.freedesktop.org/poppler-"
59                                 version ".tar.xz"))
60             (sha256 (base32
61                      "1vjvd0md8y37hlq3lsj0l01a3v3mzm572rzpn1311frvmrg9r7xq"))))
62    (build-system gnu-build-system)
63    ;; FIXME: more dependencies could  be added
64    ;;  cairo output:       no (requires cairo >= 1.10.0)
65    ;;  qt4 wrapper:        no
66    ;;    introspection:    no
67    ;;  use gtk-doc:        no
68    ;;  use libcurl:        no
69    (inputs `(("fontconfig" ,fontconfig)
70              ("freetype" ,freetype)
71              ("libjpeg" ,libjpeg)
72              ("libpng" ,libpng)
73              ("libtiff" ,libtiff)
74              ("lcms" ,lcms)
75              ("openjpeg-1" ,openjpeg-1)
76              ("zlib" ,zlib)
78              ;; To build poppler-glib (as needed by Evince), we need Cairo and
79              ;; GLib.  But of course, that Cairo must not depend on Poppler.
80              ("cairo" ,(package (inherit cairo)
81                          (inputs (alist-delete "poppler"
82                                                (package-inputs cairo)))))
83              ("glib" ,glib)))
84    (native-inputs
85       `(("pkg-config" ,pkg-config)
86         ("glib" ,glib "bin")))                    ; glib-mkenums, etc.
87    (arguments
88     `(#:tests? #f ; no test data provided with the tarball
89       #:configure-flags
90       '("--enable-xpdf-headers" ; to install header files
91         "--enable-zlib")
92       #:phases
93       (alist-cons-before
94        'configure 'setenv
95        (lambda _
96          (setenv "CPATH"
97                  (string-append (assoc-ref %build-inputs "openjpeg-1")
98                                 "/include/openjpeg-1.5"
99                                 ":" (or (getenv "CPATH") ""))))
100         %standard-phases)))
101    (synopsis "PDF rendering library")
102    (description
103     "Poppler is a PDF rendering library based on the xpdf-3.0 code base.")
104    (license license:gpl2+)
105    (home-page "http://poppler.freedesktop.org/")))
107 (define-public poppler-qt4
108   (package (inherit poppler)
109    (name "poppler-qt4")
110    (inputs `(("qt-4" ,qt-4)
111              ,@(package-inputs poppler)))
112    (synopsis "Qt4 frontend for the Poppler PDF rendering library")))
114 (define-public python-poppler-qt4
115   (package
116     (name "python-poppler-qt4")
117     (version "0.24.0")
118     (source
119       (origin
120         (method url-fetch)
121         (uri (string-append "https://pypi.python.org/packages/source/p"
122                             "/python-poppler-qt4/python-poppler-qt4-"
123                             version ".tar.gz"))
124         (sha256
125          (base32
126           "0x63niylkk4q3h3ay8zrk3m1xiik0x3hlr4gvj7kswx48qi1vb99"))))
127     (build-system python-build-system)
128     (arguments
129      `(#:phases
130        (modify-phases %standard-phases
131          (add-after
132           'unpack 'patch-poppler-include-paths
133           (lambda _
134             (substitute* (find-files "." "poppler-.*\\.sip")
135               (("qt4/poppler-.*\\.h" header)
136                (string-append "poppler/" header)))
137             #t)))))
138     (native-inputs
139      `(("pkg-config" ,pkg-config)))
140     (inputs
141      `(("python-sip" ,python-sip)
142        ("python-pyqt-4" ,python-pyqt-4)
143        ("poppler-qt4" ,poppler-qt4)))
144     (home-page "https://pypi.python.org/pypi/python-poppler-qt4")
145     (synopsis "Python bindings for Poppler-Qt4")
146     (description
147      "This package provides Python bindings for the Qt4 interface of the
148 Poppler PDF rendering library.")
149     (license license:lgpl2.1+)))
151 (define-public xpdf
152   (package
153    (name "xpdf")
154    (version "3.04")
155    (source (origin
156             (method url-fetch)
157             (uri (string-append "ftp://ftp.foolabs.com/pub/xpdf/xpdf-"
158                                 version ".tar.gz"))
159             (sha256 (base32
160                      "1rbp54mr3z2x3a3a1qmz8byzygzi223vckfam9ib5g1sfds0qf8i"))))
161    (build-system gnu-build-system)
162    (inputs `(("freetype" ,freetype)
163              ("gs-fonts" ,gs-fonts)
164              ("lesstif" ,lesstif)
165              ("libpaper" ,libpaper)
166              ("libx11" ,libx11)
167              ("libxext" ,libxext)
168              ("libxp" ,libxp)
169              ("libxpm" ,libxpm)
170              ("libxt" ,libxt)
171              ("libpng" ,libpng)
172              ("zlib" ,zlib)))
173    (arguments
174     `(#:tests? #f ; there is no check target
175       #:parallel-build? #f ; build fails randomly on 8-way machines
176       #:configure-flags
177         (list (string-append "--with-freetype2-includes="
178                              (assoc-ref %build-inputs "freetype")
179                              "/include/freetype2"))
180       #:phases
181        (alist-replace
182         'install
183         (lambda* (#:key outputs inputs #:allow-other-keys #:rest args)
184          (let* ((install (assoc-ref %standard-phases 'install))
185                 (out (assoc-ref outputs "out"))
186                 (xpdfrc (string-append out "/etc/xpdfrc"))
187                 (gs-fonts (assoc-ref inputs "gs-fonts")))
188                (apply install args)
189                (substitute* xpdfrc
190                 (("/usr/local/share/ghostscript/fonts")
191                  (string-append gs-fonts "/share/fonts/type1/ghostscript"))
192                 (("#fontFile") "fontFile"))))
193         %standard-phases)))
194    (synopsis "Viewer for PDF files based on the Motif toolkit")
195    (description
196     "Xpdf is a viewer for Portable Document Format (PDF) files.")
197    (license license:gpl3) ; or gpl2, but not gpl2+
198    (home-page "http://www.foolabs.com/xpdf/")))
200 (define-public zathura-cb
201   (package
202     (name "zathura-cb")
203     (version "0.1.4")
204     (source (origin
205               (method url-fetch)
206               (uri
207                (string-append "https://pwmt.org/projects/zathura-cb/download/zathura-cb-"
208                               version ".tar.gz"))
209               (sha256
210                (base32
211                 "09ln4fpjxmhcq6cw1ka7mdkmca36gyd4gzrynbw3waz0ri0b277j"))))
212     (native-inputs `(("pkg-config" ,pkg-config)))
213     (propagated-inputs `(("girara" ,girara)))
214     (inputs `(("libarchive" ,libarchive)
215               ("gtk+" ,gtk+)
216               ("zathura" ,zathura)))
217     (build-system gnu-build-system)
218     (arguments
219      `(#:make-flags (list (string-append "PREFIX=" %output)
220                           (string-append "PLUGINDIR=" %output "/lib/zathura")
221                           "CC=gcc")
222        #:tests? #f ; Package does not contain tests.
223        #:phases
224        (alist-delete 'configure %standard-phases)))
225     (home-page "https://pwmt.org/projects/zathura-cb/")
226     (synopsis "Comic book support for zathura (libarchive backend)")
227     (description "The zathura-cb plugin adds comic book support to zathura
228 using libarchive.")
229     (license license:zlib)))
231 (define-public zathura-ps
232   (package
233     (name "zathura-ps")
234     (version "0.2.2")
235     (source (origin
236               (method url-fetch)
237               (uri
238                (string-append "https://pwmt.org/projects/zathura-ps/download/zathura-ps-"
239                               version ".tar.gz"))
240               (sha256
241                (base32
242                 "1a6ps5v1wk18qvslbkjln6w8wfzzr6fi13ls96vbdc03vdhn4m76"))))
243     (native-inputs `(("pkg-config" ,pkg-config)))
244     (propagated-inputs `(("girara" ,girara)))
245     (inputs `(("libspectre" ,libspectre)
246               ("gtk+" ,gtk+)
247               ("zathura" ,zathura)))
248     (build-system gnu-build-system)
249     (arguments
250      `(#:make-flags (list (string-append "PREFIX=" %output)
251                           (string-append "PLUGINDIR=" %output "/lib/zathura")
252                           "CC=gcc")
253        #:tests? #f ; Package does not contain tests.
254        #:phases
255        (alist-delete 'configure %standard-phases)))
256     (home-page "https://pwmt.org/projects/zathura-ps/")
257     (synopsis "PS support for zathura (libspectre backend)")
258     (description "The zathura-ps plugin adds PS support to zathura
259 using libspectre.")
260     (license license:zlib)))
262 (define-public zathura-djvu
263   (package
264     (name "zathura-djvu")
265     (version "0.2.4")
266     (source (origin
267               (method url-fetch)
268               (uri
269                (string-append "https://pwmt.org/projects/zathura-djvu/download/zathura-djvu-"
270                               version ".tar.gz"))
271               (sha256
272                (base32
273                 "1g1lafmrjbx0xv7fljdmyqxx0k334sq4q6jy4a0q5xfrgz0bh45c"))))
274     (native-inputs `(("pkg-config" ,pkg-config)))
275     (propagated-inputs `(("girara" ,girara)))
276     (inputs
277      `(("djvulibre" ,djvulibre)
278        ("gtk+" ,gtk+)
279        ("zathura" ,zathura)))
280     (build-system gnu-build-system)
281     (arguments
282      `(#:make-flags (list (string-append "PREFIX=" %output)
283                           (string-append "PLUGINDIR=" %output "/lib/zathura")
284                           "CC=gcc")
285        #:tests? #f ; Package does not contain tests.
286        #:phases
287        (alist-delete 'configure %standard-phases)))
288     (home-page "https://pwmt.org/projects/zathura-djvu/")
289     (synopsis "DjVu support for zathura (DjVuLibre backend)")
290     (description "The zathura-djvu plugin adds DjVu support to zathura
291 using the DjVuLibre library.")
292     (license license:zlib)))
294 (define-public zathura-pdf-poppler
295   (package
296     (name "zathura-pdf-poppler")
297     (version "0.2.5")
298     (source (origin
299               (method url-fetch)
300               (uri
301                (string-append "https://pwmt.org/projects/zathura-pdf-poppler/download/zathura-pdf-poppler-"
302                               version ".tar.gz"))
303               (sha256
304                (base32
305                 "1b0chsds8iwjm4g629p6a67nb6wgra65pw2vvngd7g35dmcjgcv0"))))
306     (native-inputs `(("pkg-config" ,pkg-config)))
307     (propagated-inputs `(("girara" ,girara)))
308     (inputs
309      `(("poppler" ,poppler)
310        ("gtk+" ,gtk+)
311        ("zathura" ,zathura)
312        ("cairo" ,cairo)))
313     (build-system gnu-build-system)
314     (arguments
315      `(#:make-flags (list (string-append "PREFIX=" %output)
316                           (string-append "PLUGINDIR=" %output "/lib/zathura")
317                           "CC=gcc")
318        #:tests? #f ; Package does not include tests.
319        #:phases
320        (alist-delete 'configure %standard-phases)))
321     (home-page "https://pwmt.org/projects/zathura-pdf-poppler/")
322     (synopsis "PDF support for zathura (poppler backend)")
323     (description "The zathura-pdf-poppler plugin adds PDF support to zathura
324 by using the poppler rendering engine.")
325     (license license:zlib)))
327 (define-public zathura
328   (package
329     (name "zathura")
330     (version "0.3.3")
331     (source (origin
332               (method url-fetch)
333               (uri
334                (string-append "https://pwmt.org/projects/zathura/download/zathura-"
335                               version ".tar.gz"))
336               (sha256
337                (base32
338                 "1rywx09qn6ap5hb1z31wxby4lzdrqdbldm51pjk1ifflr37xwirk"))
339               (patches
340                (list
341                 (search-patch "zathura-plugindir-environment-variable.patch")))))
342     (native-inputs `(("pkg-config" ,pkg-config)
343                      ("gettext" ,gnu-gettext)))
344     (inputs `(("girara" ,girara)
345               ("sqlite" ,sqlite)
346               ("gtk+" ,gtk+)))
347     (native-search-paths
348      (list (search-path-specification
349             (variable "ZATHURA_PLUGIN_PATH")
350             (files '("lib/zathura")))))
351     (build-system gnu-build-system)
352     (arguments
353      `(#:make-flags
354        `(,(string-append "PREFIX=" (assoc-ref %outputs "out"))
355          "CC=gcc" "COLOR=0")
356        #:tests? #f ; Tests fail: "Gtk cannot open display".
357        #:test-target "test"
358        #:phases
359        (alist-delete 'configure %standard-phases)))
360     (home-page "https://pwmt.org/projects/zathura/")
361     (synopsis "Lightweight keyboard-driven PDF viewer")
362     (description "Zathura is a customizable document viewer.  It provides a
363 minimalistic interface and an interface that mainly focuses on keyboard
364 interaction.")
365     (license license:zlib)))
367 (define-public podofo
368   (package
369     (name "podofo")
370     (version "0.9.3")
371     (source (origin
372               (method url-fetch)
373               (uri (string-append "mirror://sourceforge/podofo/podofo-"
374                                   version ".tar.gz"))
375               (sha256
376                (base32
377                 "1n12lbq9x15vqn7dc0hsccp56l5jdff1xrhvlfqlbklxx0qiw9pc"))))
378     (build-system cmake-build-system)
379     (inputs                                      ; TODO: Add cppunit for tests
380      `(("lua" ,lua-5.1)
381        ("libpng" ,libpng)
382        ("openssl" ,openssl)
383        ("fontconfig" ,fontconfig)
384        ("libtiff" ,libtiff)
385        ("libjpeg" ,libjpeg-8)
386        ("freetype" ,freetype)
387        ("zlib" ,zlib)))
388     (arguments
389      `(#:configure-flags '("-DPODOFO_BUILD_SHARED=ON"
390                            "-DPODOFO_BUILD_STATIC=ON")
391        #:phases
392          (alist-cons-before
393          'configure 'patch
394          (lambda* (#:key inputs #:allow-other-keys)
395            (let ((freetype (assoc-ref inputs "freetype")))
396              ;; Look for freetype include files in the correct place.
397              (substitute* "cmake/modules/FindFREETYPE.cmake"
398                (("/usr/local") freetype))))
399          %standard-phases)))
400     (home-page "http://podofo.sourceforge.net")
401     (synopsis "Tools to work with the PDF file format")
402     (description
403      "PoDoFo is a C++ library and set of command-line tools to work with the
404 PDF file format.  It can parse PDF files and load them into memory, and makes
405 it easy to modify them and write the changes to disk.  It is primarily useful
406 for applications that wish to do lower level manipulation of PDF, such as
407 extracting content or merging files.")
408     (license license:lgpl2.0+)))
410 (define-public mupdf
411   (package
412     (name "mupdf")
413     (version "1.6")
414     (source
415       (origin
416         (method url-fetch)
417         (uri (string-append "http://mupdf.com/downloads/archive/"
418                             name "-" version "-source.tar.gz"))
419         (sha256
420           (base32 "0qx51rj6alzcagcixm59rvdpm54w6syrwr4184v439jh14ryw4wq"))
421         (patches
422           (list (search-patch "mupdf-buildsystem-fix.patch")))
423         (modules '((guix build utils)))
424         (snippet
425           '(begin
426             ;; Don't build the bundled-in third party libraries.
427             (delete-file-recursively "thirdparty")
429             ;; Make the scripts for finding openjpeg build details executable.
430             (chmod "ojp2_cppflags.sh" #o0755)
431             (chmod "ojp2_ldflags.sh" #o0755)))))
433     (build-system gnu-build-system)
434     (inputs
435       `(("curl" ,curl)
436         ("freetype" ,freetype)
437         ("jbig2dec" ,jbig2dec)
438         ("libjpeg" ,libjpeg)
439         ("libx11" ,libx11)
440         ("libxext" ,libxext)
441         ("openjpeg" ,openjpeg-2.0)
442         ("openssl" ,openssl)
443         ("zlib" ,zlib)))
444     (native-inputs
445       `(("pkg-config" ,pkg-config)))
446     (arguments
447       ;; Trying to run `$ make check' results in a no rule fault.
448       '(#:tests? #f
450         #:modules ((guix build gnu-build-system)
451                      (guix build utils)
452                      (srfi srfi-1))
453         #:phases (alist-replace
454                    'build
455                    (lambda _ (zero? (system* "make" "XCFLAGS=-fpic")))
456                    (alist-replace
457                      'install
458                      (lambda* (#:key outputs #:allow-other-keys)
459                        (let ((out (assoc-ref outputs "out")))
460                          (zero? (system* "make" (string-append "prefix=" out)
461                                          "install"))))
462                      (alist-delete 'configure %standard-phases)))))
463     (home-page "http://mupdf.com")
464     (synopsis "Lightweight PDF viewer and toolkit")
465     (description
466       "MuPDF is a C library that implements a PDF and XPS parsing and
467 rendering engine.  It is used primarily to render pages into bitmaps,
468 but also provides support for other operations such as searching and
469 listing the table of contents and hyperlinks.
471 The library ships with a rudimentary X11 viewer, and a set of command
472 line tools for batch rendering (pdfdraw), rewriting files (pdfclean),
473 and examining the file structure (pdfshow).")
474     (license license:agpl3+)))
476 (define-public qpdf
477   (package
478    (name "qpdf")
479    (version "5.1.3")
480    (source (origin
481             (method url-fetch)
482             (uri (string-append "mirror://sourceforge/qpdf/qpdf-"
483                                 version ".tar.gz"))
484             (sha256 (base32
485                      "1lq1v7xghvl6p4hgrwbps3a13ad6lh4ib3myimb83hxgsgd4n5nm"))))
486    (build-system gnu-build-system)
487    (arguments
488       '(#:phases (alist-cons-before
489                   'configure 'patch-paths
490                   (lambda _
491                     (substitute* "make/libtool.mk"
492                       (("SHELL=/bin/bash")
493                        (string-append "SHELL=" (which "bash"))))
494                     (substitute* (append
495                                   '("qtest/bin/qtest-driver")
496                                   (find-files "." "\\.test"))
497                       (("/usr/bin/env") (which "env"))))
498                   %standard-phases)))
499    (native-inputs
500     `(("pkg-config" ,pkg-config)))
501    (propagated-inputs
502     `(("pcre" ,pcre)))
503    (inputs
504     `(("zlib" ,zlib)
505       ("perl" ,perl)))
506    (synopsis "Command-line tools and library for transforming PDF files")
507    (description
508     "QPDF is a command-line program that does structural, content-preserving
509 transformations on PDF files.  It could have been called something like
510 pdf-to-pdf.  It includes support for merging and splitting PDFs and to
511 manipulate the list of pages in a PDF file.  It is not a PDF viewer or a
512 program capable of converting PDF into other formats.")
513    (license license:clarified-artistic)
514    (home-page "http://qpdf.sourceforge.net/")))
516 (define-public xournal
517   (package
518     (name "xournal")
519     (version "0.4.8")
520     (source
521      (origin
522        (method url-fetch)
523        (uri (string-append "mirror://sourceforge/xournal/xournal-"
524                            version ".tar.gz"))
525        (sha256
526         (base32
527          "0c7gjcqhygiyp0ypaipdaxgkbivg6q45vhsj8v5jsi9nh6iqff13"))))
528     (build-system gnu-build-system)
529     (inputs
530      `(("gtk" ,gtk+-2)
531        ("pango" ,pango)
532        ("poppler" ,poppler)
533        ("glib" ,glib)
534        ("libgnomecanvas" ,libgnomecanvas)))
535     (native-inputs
536      `(("pkg-config" ,pkg-config)))
537     (home-page "http://xournal.sourceforge.net/")
538     (synopsis "Notetaking using a stylus")
539     (description
540      "Xournal is an application for notetaking, sketching, keeping a journal
541 using a stylus.")
542     (license license:gpl2+)))