gnu: poppler: Update to 0.62.0.
[jackhill/guix/guix.git] / gnu / packages / pdf.scm
CommitLineData
135eb524 1;;; GNU Guix --- Functional package management for GNU
8e755b1b 2;;; Copyright © 2013, 2015, 2016 Andreas Enge <andreas@enge.fr>
8befb33d 3;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
aae8ba47 4;;; Copyright © 2014, 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
3e40bb82 5;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
f22debac 6;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
86008652 7;;; Coypright © 2016 ng0 <ng0@we.make.ritual.n0.is>
7e0d513f 8;;; Coypright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
af8c7e10 9;;; Coypright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
ed9b09e4 10;;; Coypright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
f3e22216 11;;; Coypright © 2016 Julien Lepiller <julien@lepiller.eu>
5d68e9d6 12;;; Copyright © 2016 Arun Isaac <arunisaac@systemreboot.net>
af8c7e10 13;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
92ae98e2 14;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
e05fc441 15;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
135eb524
AE
16;;;
17;;; This file is part of GNU Guix.
18;;;
19;;; GNU Guix is free software; you can redistribute it and/or modify it
20;;; under the terms of the GNU General Public License as published by
21;;; the Free Software Foundation; either version 3 of the License, or (at
22;;; your option) any later version.
23;;;
24;;; GNU Guix is distributed in the hope that it will be useful, but
25;;; WITHOUT ANY WARRANTY; without even the implied warranty of
26;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27;;; GNU General Public License for more details.
28;;;
29;;; You should have received a copy of the GNU General Public License
30;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
31
32(define-module (gnu packages pdf)
b5b73a82 33 #:use-module ((guix licenses) #:prefix license:)
135eb524
AE
34 #:use-module (guix packages)
35 #:use-module (guix download)
ab1c2319 36 #:use-module (guix utils)
135eb524 37 #:use-module (guix build-system gnu)
0f28ee34 38 #:use-module (guix build-system cmake)
3efb57ea 39 #:use-module (guix build-system python)
8d4169a1 40 #:use-module (guix build-system trivial)
135eb524 41 #:use-module (gnu packages)
aae8ba47 42 #:use-module (gnu packages autotools)
31f248fa 43 #:use-module (gnu packages backup)
8d4169a1
LC
44 #:use-module (gnu packages base)
45 #:use-module (gnu packages bash)
135eb524 46 #:use-module (gnu packages compression)
31f248fa 47 #:use-module (gnu packages curl)
3e40bb82 48 #:use-module (gnu packages databases)
bac31d1f 49 #:use-module (gnu packages djvu)
31f248fa
EF
50 #:use-module (gnu packages fontutils)
51 #:use-module (gnu packages game-development)
3e40bb82 52 #:use-module (gnu packages gettext)
31f248fa 53 #:use-module (gnu packages ghostscript)
f3e22216 54 #:use-module (gnu packages gl)
8db824ba 55 #:use-module (gnu packages glib)
31f248fa
EF
56 #:use-module (gnu packages gnome)
57 #:use-module (gnu packages gnupg)
8db824ba 58 #:use-module (gnu packages gtk)
31f248fa
EF
59 #:use-module (gnu packages image)
60 #:use-module (gnu packages imagemagick)
1650cf92 61 #:use-module (gnu packages javascript)
31f248fa
EF
62 #:use-module (gnu packages lesstif)
63 #:use-module (gnu packages linux)
0f28ee34 64 #:use-module (gnu packages lua)
765f0ac8
RW
65 #:use-module (gnu packages pcre)
66 #:use-module (gnu packages perl)
31f248fa
EF
67 #:use-module (gnu packages photo)
68 #:use-module (gnu packages pkg-config)
3fa2dc27 69 #:use-module (gnu packages python)
31f248fa 70 #:use-module (gnu packages qt)
8d4169a1 71 #:use-module (gnu packages sdl)
cc2b77df 72 #:use-module (gnu packages tls)
31f248fa
EF
73 #:use-module (gnu packages xdisorg)
74 #:use-module (gnu packages xorg)
8db824ba 75 #:use-module (srfi srfi-1))
135eb524
AE
76
77(define-public poppler
78 (package
79 (name "poppler")
1b821701 80 (version "0.62.0")
135eb524
AE
81 (source (origin
82 (method url-fetch)
5cc3096c 83 (uri (string-append "https://poppler.freedesktop.org/poppler-"
8befb33d 84 version ".tar.xz"))
6983ba56
SB
85 (sha256
86 (base32
1b821701
MB
87 "1ii9ly1pngyvs0aiq2wxpya08hidpl54y7nsb8b1vxnnskgp76jv"))))
88 (build-system cmake-build-system)
6983ba56 89 ;; FIXME:
a25fe6d6 90 ;; use libcurl: no
135eb524
AE
91 (inputs `(("fontconfig" ,fontconfig)
92 ("freetype" ,freetype)
7363cda4 93 ("libjpeg" ,libjpeg)
a25fe6d6 94 ("libpng" ,libpng)
135eb524 95 ("libtiff" ,libtiff)
927d4d9b 96 ("lcms" ,lcms)
301804d6 97 ("openjpeg" ,openjpeg)
8db824ba
LC
98 ("zlib" ,zlib)
99
100 ;; To build poppler-glib (as needed by Evince), we need Cairo and
101 ;; GLib. But of course, that Cairo must not depend on Poppler.
102 ("cairo" ,(package (inherit cairo)
103 (inputs (alist-delete "poppler"
104 (package-inputs cairo)))))
105 ("glib" ,glib)))
c4c4cc05 106 (native-inputs
426adbe8 107 `(("pkg-config" ,pkg-config)
6983ba56
SB
108 ("glib" ,glib "bin") ; glib-mkenums, etc.
109 ("gobject-introspection" ,gobject-introspection)))
135eb524
AE
110 (arguments
111 `(#:tests? #f ; no test data provided with the tarball
a25fe6d6 112 #:configure-flags
1b821701
MB
113 (let* ((out (assoc-ref %outputs "out"))
114 (lib (string-append out "/lib")))
115 (list "-DENABLE_XPDF_HEADERS=ON" ; to install header files
116 "-DENABLE_ZLIB=ON"
117 (string-append "-DCMAKE_INSTALL_LIBDIR=" lib)
118 (string-append "-DCMAKE_INSTALL_RPATH=" lib)))))
35b9e423 119 (synopsis "PDF rendering library")
135eb524
AE
120 (description
121 "Poppler is a PDF rendering library based on the xpdf-3.0 code base.")
14ecc0ef 122 (license license:gpl2+)
5f8fc5e3 123 (home-page "https://poppler.freedesktop.org/")))
14ecc0ef 124
95bbaa02 125(define-public poppler-qt4
c74acb56 126 (package (inherit poppler)
8410cb62
RW
127 (name "poppler-qt4")
128 (inputs `(("qt-4" ,qt-4)
129 ,@(package-inputs poppler)))
130 (synopsis "Qt4 frontend for the Poppler PDF rendering library")))
131
f22debac 132(define-public poppler-qt5
c74acb56 133 (package (inherit poppler)
f22debac 134 (name "poppler-qt5")
13297861 135 (inputs `(("qtbase" ,qtbase)
f22debac
RJ
136 ,@(package-inputs poppler)))
137 (synopsis "Qt5 frontend for the Poppler PDF rendering library")))
138
3efb57ea
RW
139(define-public python-poppler-qt4
140 (package
141 (name "python-poppler-qt4")
142 (version "0.24.0")
143 (source
144 (origin
145 (method url-fetch)
146 (uri (string-append "https://pypi.python.org/packages/source/p"
147 "/python-poppler-qt4/python-poppler-qt4-"
148 version ".tar.gz"))
149 (sha256
150 (base32
151 "0x63niylkk4q3h3ay8zrk3m1xiik0x3hlr4gvj7kswx48qi1vb99"))))
152 (build-system python-build-system)
153 (arguments
154 `(#:phases
155 (modify-phases %standard-phases
156 (add-after
157 'unpack 'patch-poppler-include-paths
158 (lambda _
159 (substitute* (find-files "." "poppler-.*\\.sip")
160 (("qt4/poppler-.*\\.h" header)
161 (string-append "poppler/" header)))
162 #t)))))
163 (native-inputs
164 `(("pkg-config" ,pkg-config)))
165 (inputs
166 `(("python-sip" ,python-sip)
167 ("python-pyqt-4" ,python-pyqt-4)
168 ("poppler-qt4" ,poppler-qt4)))
169 (home-page "https://pypi.python.org/pypi/python-poppler-qt4")
170 (synopsis "Python bindings for Poppler-Qt4")
171 (description
172 "This package provides Python bindings for the Qt4 interface of the
173Poppler PDF rendering library.")
174 (license license:lgpl2.1+)))
175
99bcae94
RW
176(define-public python-poppler-qt5
177 (package
178 (name "python-poppler-qt5")
179 (version "0.24.2")
180 (source
181 (origin
182 (method url-fetch)
183 (uri (pypi-uri "python-poppler-qt5" version))
184 (sha256
185 (base32
186 "0l69llw1fzwz8y90q0qp9q5pifbrqjjbwii7di54dwghw5fc6w1r"))))
187 (build-system python-build-system)
188 (arguments
189 `(;; There are no tests. The check phase just causes a rebuild.
190 #:tests? #f
191 #:phases
192 (modify-phases %standard-phases
193 (replace 'build
194 (lambda* (#:key inputs #:allow-other-keys)
195 (substitute* "setup.py"
196 ;; This check always fails, so disable it.
197 (("if not check_qtxml\\(\\)")
198 "if True")
199 ;; Enable C++11, which is needed because of Qt5.
200 (("\\*\\*ext_args" line)
201 (string-append "extra_compile_args=['-std=gnu++11'], " line)))
202 ;; We need to pass an extra flag here. This cannot be in
203 ;; configure-flags because it should not be passed for the
204 ;; installation phase.
205 ((@@ (guix build python-build-system) call-setuppy)
206 "build_ext" (list (string-append "--pyqt-sip-dir="
207 (assoc-ref inputs "python-pyqt")
208 "/share/sip")) #t))))))
209 (native-inputs
210 `(("pkg-config" ,pkg-config)))
211 (inputs
212 `(("python-sip" ,python-sip)
213 ("python-pyqt" ,python-pyqt)
214 ("poppler-qt5" ,poppler-qt5)
215 ("qtbase" ,qtbase)))
216 (home-page "https://pypi.python.org/pypi/python-poppler-qt5")
217 (synopsis "Python bindings for Poppler-Qt5")
218 (description
219 "This package provides Python bindings for the Qt5 interface of the
220Poppler PDF rendering library.")
221 (license license:lgpl2.1+)))
222
aae8ba47
RW
223(define-public libharu
224 (package
225 (name "libharu")
226 (version "2.3.0")
227 (source (origin
228 (method url-fetch)
229 (uri (string-append "https://github.com/libharu/libharu/archive/"
230 "RELEASE_"
231 (string-join (string-split version #\.) "_")
232 ".tar.gz"))
233 (file-name (string-append name "-" version ".tar.gz"))
234 (sha256
235 (base32
236 "1lm4v539y9cb1lvbq387j57sy7yxda3yv8b1pk8m6zazbp66i7lg"))))
237 (build-system gnu-build-system)
238 (arguments
239 `(#:configure-flags
240 (list (string-append "--with-zlib="
241 (assoc-ref %build-inputs "zlib"))
242 (string-append "--with-png="
243 (assoc-ref %build-inputs "libpng")))
244 #:phases
245 (modify-phases %standard-phases
d10092b8 246 (add-after 'unpack 'autogen
aae8ba47
RW
247 (lambda _ (zero? (system* "autoreconf" "-vif")))))))
248 (inputs
249 `(("zlib" ,zlib)
250 ("libpng" ,libpng)))
251 (native-inputs
252 `(("autoconf" ,autoconf)
253 ("automake" ,automake)
254 ("libtool" ,libtool)))
255 (home-page "http://libharu.org/")
256 (synopsis "Library for generating PDF files")
257 (description
258 "libHaru is a library for generating PDF files. libHaru does not support
259reading and editing of existing PDF files.")
260 (license license:zlib)))
261
14ecc0ef
AE
262(define-public xpdf
263 (package
264 (name "xpdf")
f410c110 265 (version "3.04")
14ecc0ef
AE
266 (source (origin
267 (method url-fetch)
268 (uri (string-append "ftp://ftp.foolabs.com/pub/xpdf/xpdf-"
269 version ".tar.gz"))
270 (sha256 (base32
f410c110 271 "1rbp54mr3z2x3a3a1qmz8byzygzi223vckfam9ib5g1sfds0qf8i"))))
14ecc0ef
AE
272 (build-system gnu-build-system)
273 (inputs `(("freetype" ,freetype)
19cb5170 274 ("gs-fonts" ,gs-fonts)
14ecc0ef
AE
275 ("lesstif" ,lesstif)
276 ("libpaper" ,libpaper)
277 ("libx11" ,libx11)
278 ("libxext" ,libxext)
279 ("libxp" ,libxp)
280 ("libxpm" ,libxpm)
281 ("libxt" ,libxt)
f410c110 282 ("libpng" ,libpng)
01eafd38 283 ("zlib" ,zlib)))
14ecc0ef
AE
284 (arguments
285 `(#:tests? #f ; there is no check target
bdbf227f
AE
286 #:parallel-build? #f ; build fails randomly on 8-way machines
287 #:configure-flags
288 (list (string-append "--with-freetype2-includes="
289 (assoc-ref %build-inputs "freetype")
290 "/include/freetype2"))
19cb5170 291 #:phases
dc1d3cde
KK
292 (modify-phases %standard-phases
293 (replace 'install
294 (lambda* (#:key outputs inputs #:allow-other-keys #:rest args)
295 (let* ((install (assoc-ref %standard-phases 'install))
296 (out (assoc-ref outputs "out"))
297 (xpdfrc (string-append out "/etc/xpdfrc"))
298 (gs-fonts (assoc-ref inputs "gs-fonts")))
299 (apply install args)
300 (substitute* xpdfrc
19cb5170
AE
301 (("/usr/local/share/ghostscript/fonts")
302 (string-append gs-fonts "/share/fonts/type1/ghostscript"))
dc1d3cde
KK
303 (("#fontFile") "fontFile")))
304 #t)))))
9e771e3b 305 (synopsis "Viewer for PDF files based on the Motif toolkit")
14ecc0ef 306 (description
e881752c 307 "Xpdf is a viewer for Portable Document Format (PDF) files.")
14ecc0ef
AE
308 (license license:gpl3) ; or gpl2, but not gpl2+
309 (home-page "http://www.foolabs.com/xpdf/")))
0f28ee34 310
b3886e0c
PW
311(define-public zathura-cb
312 (package
313 (name "zathura-cb")
4df3dc41 314 (version "0.1.6")
b3886e0c
PW
315 (source (origin
316 (method url-fetch)
317 (uri
318 (string-append "https://pwmt.org/projects/zathura-cb/download/zathura-cb-"
319 version ".tar.gz"))
320 (sha256
321 (base32
4df3dc41 322 "1fim4mpm8l2g3msj1vg70ks3c9lrwllv3yh4jv8l9f8k3r19b3l8"))))
b3886e0c
PW
323 (native-inputs `(("pkg-config" ,pkg-config)))
324 (propagated-inputs `(("girara" ,girara)))
325 (inputs `(("libarchive" ,libarchive)
326 ("gtk+" ,gtk+)
327 ("zathura" ,zathura)))
328 (build-system gnu-build-system)
329 (arguments
b1982b80
MW
330 `(#:make-flags (list (string-append "PREFIX=" %output)
331 (string-append "PLUGINDIR=" %output "/lib/zathura")
332 "CC=gcc")
b3886e0c
PW
333 #:tests? #f ; Package does not contain tests.
334 #:phases
dc1d3cde 335 (modify-phases %standard-phases (delete 'configure))))
b3886e0c
PW
336 (home-page "https://pwmt.org/projects/zathura-cb/")
337 (synopsis "Comic book support for zathura (libarchive backend)")
338 (description "The zathura-cb plugin adds comic book support to zathura
339using libarchive.")
340 (license license:zlib)))
341
721a4f7d
PW
342(define-public zathura-ps
343 (package
344 (name "zathura-ps")
fe5fe355 345 (version "0.2.4")
721a4f7d
PW
346 (source (origin
347 (method url-fetch)
348 (uri
349 (string-append "https://pwmt.org/projects/zathura-ps/download/zathura-ps-"
350 version ".tar.gz"))
351 (sha256
352 (base32
fe5fe355 353 "1nxbl0glnzpan78fhdfzhkcd0cikcvrkzf9m56mb0pvnwzlwg7zv"))))
721a4f7d
PW
354 (native-inputs `(("pkg-config" ,pkg-config)))
355 (propagated-inputs `(("girara" ,girara)))
356 (inputs `(("libspectre" ,libspectre)
357 ("gtk+" ,gtk+)
358 ("zathura" ,zathura)))
359 (build-system gnu-build-system)
360 (arguments
b1982b80
MW
361 `(#:make-flags (list (string-append "PREFIX=" %output)
362 (string-append "PLUGINDIR=" %output "/lib/zathura")
363 "CC=gcc")
721a4f7d
PW
364 #:tests? #f ; Package does not contain tests.
365 #:phases
dc1d3cde 366 (modify-phases %standard-phases (delete 'configure))))
721a4f7d
PW
367 (home-page "https://pwmt.org/projects/zathura-ps/")
368 (synopsis "PS support for zathura (libspectre backend)")
369 (description "The zathura-ps plugin adds PS support to zathura
370using libspectre.")
371 (license license:zlib)))
372
bac31d1f
PW
373(define-public zathura-djvu
374 (package
375 (name "zathura-djvu")
16a9f83f 376 (version "0.2.6")
bac31d1f
PW
377 (source (origin
378 (method url-fetch)
379 (uri
380 (string-append "https://pwmt.org/projects/zathura-djvu/download/zathura-djvu-"
381 version ".tar.gz"))
382 (sha256
383 (base32
16a9f83f 384 "0py0ra44f65cg064xzds0qr6vnglj2a5bwhnbwa0dyh2nyizdzmf"))))
bac31d1f
PW
385 (native-inputs `(("pkg-config" ,pkg-config)))
386 (propagated-inputs `(("girara" ,girara)))
387 (inputs
388 `(("djvulibre" ,djvulibre)
389 ("gtk+" ,gtk+)
390 ("zathura" ,zathura)))
391 (build-system gnu-build-system)
392 (arguments
b1982b80
MW
393 `(#:make-flags (list (string-append "PREFIX=" %output)
394 (string-append "PLUGINDIR=" %output "/lib/zathura")
395 "CC=gcc")
bac31d1f
PW
396 #:tests? #f ; Package does not contain tests.
397 #:phases
dc1d3cde 398 (modify-phases %standard-phases (delete 'configure))))
bac31d1f
PW
399 (home-page "https://pwmt.org/projects/zathura-djvu/")
400 (synopsis "DjVu support for zathura (DjVuLibre backend)")
401 (description "The zathura-djvu plugin adds DjVu support to zathura
402using the DjVuLibre library.")
403 (license license:zlib)))
404
43dc47fa
MB
405(define-public zathura-pdf-mupdf
406 (package
407 (name "zathura-pdf-mupdf")
408 (version "0.3.1")
409 (source (origin
410 (method url-fetch)
411 (uri
412 (string-append "https://pwmt.org/projects/zathura-pdf-mupdf"
413 "/download/zathura-pdf-mupdf-" version ".tar.gz"))
414 (sha256
415 (base32
416 "06zqn8z6a0hfsx3s1kzqvqzb73afgcl6z5r062sxv7kv570fvffr"))))
417 (native-inputs `(("pkg-config" ,pkg-config)))
418 (propagated-inputs `(("girara" ,girara)))
419 (inputs
420 `(("gtk+" ,gtk+)
421 ("jbig2dec" ,jbig2dec)
422 ("libjpeg" ,libjpeg)
423 ("mupdf" ,mupdf)
424 ("openjpeg" ,openjpeg)
425 ("openssl" ,openssl)
426 ("zathura" ,zathura)))
427 (build-system gnu-build-system)
428 (arguments
429 `(#:make-flags (list (string-append "PREFIX=" %output)
430 (string-append "PLUGINDIR=" %output "/lib/zathura")
431 "CC=gcc")
432 #:tests? #f ;No tests.
433 #:phases (modify-phases %standard-phases (delete 'configure))))
434 (home-page "https://pwmt.org/projects/zathura-pdf-mupdf/")
435 (synopsis "PDF support for zathura (mupdf backend)")
436 (description "The zathura-pdf-mupdf plugin adds PDF support to zathura
437by using the @code{mupdf} rendering library.")
438 (license license:zlib)))
439
7708557f
PW
440(define-public zathura-pdf-poppler
441 (package
442 (name "zathura-pdf-poppler")
4ec84091 443 (version "0.2.7")
7708557f
PW
444 (source (origin
445 (method url-fetch)
446 (uri
447 (string-append "https://pwmt.org/projects/zathura-pdf-poppler/download/zathura-pdf-poppler-"
448 version ".tar.gz"))
449 (sha256
450 (base32
4ec84091 451 "1h43sgxpsbrsnn5z19661642plzhpv6b0y3f4kyzshv1rr6lwplq"))))
7708557f
PW
452 (native-inputs `(("pkg-config" ,pkg-config)))
453 (propagated-inputs `(("girara" ,girara)))
454 (inputs
455 `(("poppler" ,poppler)
456 ("gtk+" ,gtk+)
457 ("zathura" ,zathura)
458 ("cairo" ,cairo)))
459 (build-system gnu-build-system)
460 (arguments
b1982b80
MW
461 `(#:make-flags (list (string-append "PREFIX=" %output)
462 (string-append "PLUGINDIR=" %output "/lib/zathura")
463 "CC=gcc")
7708557f
PW
464 #:tests? #f ; Package does not include tests.
465 #:phases
dc1d3cde 466 (modify-phases %standard-phases (delete 'configure))))
7708557f
PW
467 (home-page "https://pwmt.org/projects/zathura-pdf-poppler/")
468 (synopsis "PDF support for zathura (poppler backend)")
469 (description "The zathura-pdf-poppler plugin adds PDF support to zathura
470by using the poppler rendering engine.")
471 (license license:zlib)))
472
3e40bb82
PW
473(define-public zathura
474 (package
475 (name "zathura")
623feb45 476 (version "0.3.7")
3e40bb82
PW
477 (source (origin
478 (method url-fetch)
479 (uri
480 (string-append "https://pwmt.org/projects/zathura/download/zathura-"
481 version ".tar.gz"))
482 (sha256
483 (base32
623feb45 484 "1w0g74dq4z2vl3f99s2gkaqrb5pskgzig10qhbxj4gq9yj4zzbr2"))
fc1adab1
AK
485 (patches (search-patches
486 "zathura-plugindir-environment-variable.patch"))))
3e40bb82 487 (native-inputs `(("pkg-config" ,pkg-config)
b94a6ca0 488 ("gettext" ,gettext-minimal)))
3e40bb82
PW
489 (inputs `(("girara" ,girara)
490 ("sqlite" ,sqlite)
491 ("gtk+" ,gtk+)))
492 (native-search-paths
493 (list (search-path-specification
494 (variable "ZATHURA_PLUGIN_PATH")
495 (files '("lib/zathura")))))
496 (build-system gnu-build-system)
497 (arguments
498 `(#:make-flags
499 `(,(string-append "PREFIX=" (assoc-ref %outputs "out"))
500 "CC=gcc" "COLOR=0")
501 #:tests? #f ; Tests fail: "Gtk cannot open display".
502 #:test-target "test"
503 #:phases
dc1d3cde 504 (modify-phases %standard-phases (delete 'configure))))
3e40bb82
PW
505 (home-page "https://pwmt.org/projects/zathura/")
506 (synopsis "Lightweight keyboard-driven PDF viewer")
507 (description "Zathura is a customizable document viewer. It provides a
508minimalistic interface and an interface that mainly focuses on keyboard
509interaction.")
510 (license license:zlib)))
511
0f28ee34
LC
512(define-public podofo
513 (package
514 (name "podofo")
0b181ff9 515 (version "0.9.5")
0f28ee34
LC
516 (source (origin
517 (method url-fetch)
de67e922
LF
518 (uri (string-append "mirror://sourceforge/podofo/podofo/" version
519 "/podofo-" version ".tar.gz"))
0f28ee34
LC
520 (sha256
521 (base32
0b181ff9 522 "012kgfx5j5n6w4zkc1d290d2cwjk60jhzsjlr2x19g3yi75q2jc5"))))
0f28ee34
LC
523 (build-system cmake-build-system)
524 (inputs ; TODO: Add cppunit for tests
5cc0e486 525 `(("lua" ,lua-5.1)
0f28ee34
LC
526 ("libpng" ,libpng)
527 ("openssl" ,openssl)
528 ("fontconfig" ,fontconfig)
529 ("libtiff" ,libtiff)
530 ("libjpeg" ,libjpeg-8)
531 ("freetype" ,freetype)
532 ("zlib" ,zlib)))
cb6a14ba
AE
533 (arguments
534 `(#:configure-flags '("-DPODOFO_BUILD_SHARED=ON"
dde70926
AE
535 "-DPODOFO_BUILD_STATIC=ON")
536 #:phases
dc1d3cde
KK
537 (modify-phases %standard-phases
538 (add-before 'configure 'patch
539 (lambda* (#:key inputs #:allow-other-keys)
540 (let ((freetype (assoc-ref inputs "freetype")))
541 ;; Look for freetype include files in the correct place.
542 (substitute* "cmake/modules/FindFREETYPE.cmake"
543 (("/usr/local") freetype)))
544 #t)))))
0f28ee34
LC
545 (home-page "http://podofo.sourceforge.net")
546 (synopsis "Tools to work with the PDF file format")
547 (description
548 "PoDoFo is a C++ library and set of command-line tools to work with the
549PDF file format. It can parse PDF files and load them into memory, and makes
550it easy to modify them and write the changes to disk. It is primarily useful
551for applications that wish to do lower level manipulation of PDF, such as
552extracting content or merging files.")
553 (license license:lgpl2.0+)))
c0b390ed
MB
554
555(define-public mupdf
556 (package
557 (name "mupdf")
e5da4d8b 558 (version "1.11")
c0b390ed
MB
559 (source
560 (origin
561 (method url-fetch)
76379dca 562 (uri (string-append "https://mupdf.com/downloads/archive/"
235c4ec3 563 name "-" version "-source.tar.gz"))
c0b390ed 564 (sha256
c41d97be 565 (base32
e5da4d8b 566 "02phamcchgsmvjnb3ir7r5sssvx9fcrscn297z73b82n1jl79510"))
07dfc898 567 (patches (search-patches "mupdf-build-with-openjpeg-2.1.patch"
ae7e24c4
LF
568 "mupdf-CVE-2017-14685.patch"
569 "mupdf-CVE-2017-14686.patch"
570 "mupdf-CVE-2017-14687.patch"
07dfc898 571 "mupdf-CVE-2017-15587.patch"))
c0b390ed 572 (modules '((guix build utils)))
1650cf92 573 (snippet '(delete-file-recursively "thirdparty"))))
c0b390ed
MB
574 (build-system gnu-build-system)
575 (inputs
576 `(("curl" ,curl)
577 ("freetype" ,freetype)
c41d97be 578 ("harfbuzz" ,harfbuzz)
c0b390ed
MB
579 ("jbig2dec" ,jbig2dec)
580 ("libjpeg" ,libjpeg)
581 ("libx11" ,libx11)
582 ("libxext" ,libxext)
1650cf92 583 ("mujs" ,mujs)
c41d97be 584 ("openjpeg" ,openjpeg)
c0b390ed
MB
585 ("openssl" ,openssl)
586 ("zlib" ,zlib)))
587 (native-inputs
588 `(("pkg-config" ,pkg-config)))
589 (arguments
8e755b1b
AE
590 '(#:tests? #f ; no check target
591 #:make-flags (list "CC=gcc"
592 "XCFLAGS=-fpic"
593 (string-append "prefix=" (assoc-ref %outputs "out")))
594 #:phases (modify-phases %standard-phases
595 (delete 'configure))))
76379dca 596 (home-page "https://mupdf.com")
2274b816 597 (synopsis "Lightweight PDF viewer and toolkit")
c0b390ed
MB
598 (description
599 "MuPDF is a C library that implements a PDF and XPS parsing and
600rendering engine. It is used primarily to render pages into bitmaps,
601but also provides support for other operations such as searching and
602listing the table of contents and hyperlinks.
603
604The library ships with a rudimentary X11 viewer, and a set of command
7e0d513f
EF
605line tools for batch rendering @command{pdfdraw}, rewriting files
606@command{pdfclean}, and examining the file structure @command{pdfshow}.")
c0b390ed 607 (license license:agpl3+)))
765f0ac8
RW
608
609(define-public qpdf
610 (package
611 (name "qpdf")
8337cb21 612 (version "6.0.0")
765f0ac8
RW
613 (source (origin
614 (method url-fetch)
de67e922
LF
615 (uri (string-append "mirror://sourceforge/qpdf/qpdf/" version
616 "/qpdf-" version ".tar.gz"))
8337cb21
EF
617 (sha256
618 (base32
619 "0csj2p2gkxrc0rk8ykymlsdgfas96vzf1dip3y1x7z1q9plwgzd9"))
503409b5
LC
620 (modules '((guix build utils)))
621 (snippet
622 ;; Replace shebang with the bi-lingual shell/Perl trick to remove
623 ;; dependency on Perl.
624 '(substitute* "qpdf/fix-qdf"
625 (("#!/usr/bin/env perl")
626 "\
627eval '(exit $?0)' && eval 'exec perl -wS \"$0\" ${1+\"$@\"}'
628 & eval 'exec perl -wS \"$0\" $argv:q'
629 if 0;\n")))))
765f0ac8
RW
630 (build-system gnu-build-system)
631 (arguments
503409b5 632 `(#:disallowed-references (,perl)
0adfe0cc
EF
633 #:phases
634 (modify-phases %standard-phases
635 (add-before 'configure 'patch-paths
636 (lambda _
637 (substitute* "make/libtool.mk"
638 (("SHELL=/bin/bash")
639 (string-append "SHELL=" (which "bash"))))
640 (substitute* (append
641 '("qtest/bin/qtest-driver")
642 (find-files "." "\\.test"))
643 (("/usr/bin/env") (which "env"))))))))
765f0ac8 644 (native-inputs
503409b5
LC
645 `(("pkg-config" ,pkg-config)
646 ("perl" ,perl)))
765f0ac8
RW
647 (propagated-inputs
648 `(("pcre" ,pcre)))
649 (inputs
503409b5 650 `(("zlib" ,zlib)))
765f0ac8
RW
651 (synopsis "Command-line tools and library for transforming PDF files")
652 (description
653 "QPDF is a command-line program that does structural, content-preserving
654transformations on PDF files. It could have been called something like
655pdf-to-pdf. It includes support for merging and splitting PDFs and to
656manipulate the list of pages in a PDF file. It is not a PDF viewer or a
657program capable of converting PDF into other formats.")
658 (license license:clarified-artistic)
659 (home-page "http://qpdf.sourceforge.net/")))
7ad608e4
RW
660
661(define-public xournal
662 (package
663 (name "xournal")
664 (version "0.4.8")
665 (source
666 (origin
667 (method url-fetch)
de67e922
LF
668 (uri (string-append "mirror://sourceforge/xournal/xournal/" version
669 "/xournal-" version ".tar.gz"))
7ad608e4
RW
670 (sha256
671 (base32
672 "0c7gjcqhygiyp0ypaipdaxgkbivg6q45vhsj8v5jsi9nh6iqff13"))))
673 (build-system gnu-build-system)
674 (inputs
675 `(("gtk" ,gtk+-2)
676 ("pango" ,pango)
677 ("poppler" ,poppler)
678 ("glib" ,glib)
679 ("libgnomecanvas" ,libgnomecanvas)))
680 (native-inputs
681 `(("pkg-config" ,pkg-config)))
682 (home-page "http://xournal.sourceforge.net/")
683 (synopsis "Notetaking using a stylus")
684 (description
685 "Xournal is an application for notetaking, sketching, keeping a journal
686using a stylus.")
687 (license license:gpl2+)))
3fa2dc27
MB
688
689(define-public python-reportlab
690 (package
691 (name "python-reportlab")
692 (version "3.3.0")
693 (source (origin
694 (method url-fetch)
695 (uri (pypi-uri "reportlab" version))
696 (sha256
697 (base32
698 "0rz2pg04wnzjjm2f5a8ik9v8s54mv4xrjhv5liqjijqv6awh12gl"))))
699 (build-system python-build-system)
9e378e6a
MB
700 (arguments
701 '(;; FIXME: There is one test failure, but it does not cause the
702 ;; build to fail. No time to investigate right now.
703 #:test-target "tests"))
3fa2dc27
MB
704 (propagated-inputs
705 `(("python-pillow" ,python-pillow)))
706 (home-page "http://www.reportlab.com")
707 (synopsis "Python library for generating PDFs and graphics")
708 (description "This is the ReportLab PDF Toolkit. It allows rapid creation
709of rich PDF documents, and also creation of charts in a variety of bitmap and
710vector formats.")
d8013ee2 711 (license license:bsd-3)))
3fa2dc27
MB
712
713(define-public python2-reportlab
d8013ee2 714 (package-with-python2 python-reportlab))
8d4169a1
LC
715
716(define-public impressive
717 (package
718 (name "impressive")
719 (version "0.11.1")
720 (source (origin
721 (method url-fetch)
722 (uri (string-append
723 "mirror://sourceforge/impressive/Impressive/"
724 version "/Impressive-" version ".tar.gz"))
725 (sha256
726 (base32
727 "0b3rmy6acp2vmf5nill3aknxvr9a5aawk1vnphkah61anxp62gsr"))))
728 (build-system python-build-system)
729
730 ;; TODO: Add dependency on pdftk.
ed9b09e4 731 (inputs `(("python2-pygame" ,python2-pygame)
8d4169a1
LC
732 ("python2-pillow" ,python2-pillow)
733 ("sdl" ,sdl)
734 ("xpdf" ,xpdf)))
735
736 (arguments
737 `(#:python ,python-2
738 #:phases (modify-phases %standard-phases
739 (delete 'build)
740 (delete 'configure)
741 (delete 'check)
742 (replace 'install
743 (lambda* (#:key inputs outputs #:allow-other-keys)
744 ;; There's no 'setup.py' so install things manually.
745 (let* ((out (assoc-ref outputs "out"))
746 (bin (string-append out "/bin"))
747 (man1 (string-append out "/share/man/man1"))
748 (sdl (assoc-ref inputs "sdl"))
749 (xpdf (assoc-ref inputs "xpdf")))
750 (mkdir-p bin)
751 (copy-file "impressive.py"
752 (string-append bin "/impressive"))
753 (wrap-program (string-append bin "/impressive")
754 `("LIBRARY_PATH" ":" prefix ;for ctypes
755 (,(string-append sdl "/lib")))
756 `("PATH" ":" prefix ;for pdftoppm
757 (,(string-append xpdf "/bin"))))
8d4169a1
LC
758 (install-file "impressive.1" man1)
759 #t))))))
760 (home-page "http://impressive.sourceforge.net")
761 (synopsis "PDF presentation tool with visual effects")
762 (description
763 "Impressive is a tool to display PDF files that provides visual effects
764such as smooth alpha-blended slide transitions. It provides additional tools
765such as zooming, highlighting an area of the screen, and a tool to navigate
766the PDF pages.")
767 (license license:gpl2)))
f3e22216
JL
768
769(define-public fbida
770 (package
771 (name "fbida")
772 (version "2.12")
773 (home-page "https://www.kraxel.org/blog/linux/fbida/")
774 (source (origin
775 (method url-fetch)
776 (uri (string-append "https://www.kraxel.org/releases/fbida/"
777 name "-" version ".tar.gz"))
778 (sha256
779 (base32
780 "0bw224vb7jh0lrqaf4jgxk48xglvxs674qcpj5y0axyfbh896cfk"))))
781 (build-system gnu-build-system)
782 (arguments
dc1d3cde
KK
783 '(#:phases
784 (modify-phases %standard-phases
785 (add-after 'unpack 'patch-ldconfig
786 (lambda _
787 (substitute* "mk/Autoconf.mk"
788 (("/sbin/ldconfig -p") "echo lib")) #t))
789 (delete 'configure))
f3e22216
JL
790 #:tests? #f
791 #:make-flags (list "CC=gcc"
792 (string-append "prefix=" (assoc-ref %outputs "out")))))
793 (inputs `(("libjpeg" ,libjpeg)
794 ("curl" ,curl)
795 ("libtiff" ,libtiff)
796 ("libudev" ,eudev)
797 ("libwebp" ,libwebp)
798 ("libdrm" ,libdrm)
799 ("imagemagick" ,imagemagick)
800 ("giflib" ,giflib)
801 ("glib" ,glib)
802 ("cairo-xcb" ,cairo-xcb)
803 ("freetype" ,freetype)
804 ("fontconfig" ,fontconfig)
805 ("libexif" ,libexif)
806 ("mesa" ,mesa)
807 ("libepoxy" ,libepoxy)
808 ("libpng" ,libpng)
809 ("poppler" ,poppler)))
810 (native-inputs `(("pkg-config" ,pkg-config)))
811 (synopsis "Framebuffer and drm-based image viewer")
812 (description
813 "fbida contains a few applications for viewing and editing images on
814the framebuffer.")
815
816 (license license:gpl2+)))
5d68e9d6
AI
817
818(define-public pdf2svg
819 (package
820 (name "pdf2svg")
821 (version "0.2.3")
822 (source (origin
823 (method url-fetch)
824 (uri (string-append
825 "https://github.com/dawbarton/pdf2svg/archive/v"
826 version ".tar.gz"))
827 (file-name (string-append name "-" version ".tar.gz"))
828 (sha256
829 (base32
830 "12pa1pajirnlrkz2il3h4l30lc2prryk1qr132jk6z9y1c3qdcag"))))
831 (build-system gnu-build-system)
832 (inputs
833 `(("cairo" ,cairo)
834 ("poppler" ,poppler)))
835 (native-inputs
836 `(("pkg-config" ,pkg-config)))
837 (home-page "http://www.cityinthesky.co.uk/opensource/pdf2svg/")
838 (synopsis "PDF to SVG converter")
839 (description "@command{pdf2svg} is a simple command-line PDF to SVG
840converter using the Poppler and Cairo libraries.")
841 (license license:gpl2+)))
ad5a7d49
HG
842
843(define-public python-pypdf2
844 (package
845 (name "python-pypdf2")
846 (version "1.26.0")
847 (source (origin
848 (method url-fetch)
849 (uri (pypi-uri "PyPDF2" version))
850 (sha256
851 (base32
852 "11a3aqljg4sawjijkvzhs3irpw0y67zivqpbjpm065ha5wpr13z2"))))
853 (build-system python-build-system)
854 (arguments
855 `(#:phases
856 (modify-phases %standard-phases
857 (add-after
858 'unpack 'patch-test-suite
859 (lambda _
860 ;; The text-file needs to be opened in binary mode for Python 3,
861 ;; so patch in the "b"
862 (substitute* "Tests/tests.py"
863 (("pdftext_file = open\\(.* 'crazyones.txt'\\), 'r" line)
864 (string-append line "b")))
865 #t))
866 (replace 'check
867 (lambda _
868 (zero? (system* "python" "-m" "unittest" "Tests.tests")))))))
869 (home-page "http://mstamy2.github.com/PyPDF2")
870 (synopsis "Pure Python PDF toolkit")
871 (description "PyPDF2 is a pure Python PDF library capable of:
872
873@enumerate
874@item extracting document information (title, author, …)
875@item splitting documents page by page
876@item merging documents page by page
877@item cropping pages
878@item merging multiple pages into a single page
879@item encrypting and decrypting PDF files
880@end enumerate
881
882By being pure Python, it should run on any Python platform without any
883dependencies on external libraries. It can also work entirely on
884@code{StringIO} objects rather than file streams, allowing for PDF
885manipulation in memory. It is therefore a useful tool for websites that
886manage or manipulate PDFs.")
887 (license license:bsd-3)))
888
889(define-public python2-pypdf2
890 (package-with-python2 python-pypdf2))
c68e8591
HG
891
892(define-public python2-pypdf
893 (package
894 (name "python2-pypdf")
895 (version "1.13")
896 (source (origin
897 (method url-fetch)
898 (uri (pypi-uri "pyPdf" version))
899 (sha256
900 (base32
901 "0fqfvamir7k41w84c73rghzkiv891gdr17q5iz4hgbf6r71y9v9s"))))
902 (build-system python-build-system)
903 (arguments
904 `(#:tests? #f ; no tests
905 #:python ,python-2))
906 (home-page "http://pybrary.net/pyPdf/")
907 (synopsis "Pure Python PDF toolkit")
908 (description "PyPDF2 is a pure Python PDF toolkit.
909
910Note: This module isn't maintained anymore. For new projects please use
911python-pypdf2 instead.")
912 (license license:bsd-3)))
99abcdbd
HG
913
914(define-public pdfposter
915 (package
916 (name "pdfposter")
917 (version "0.6.0")
918 (source (origin
919 (method url-fetch)
920 (uri (pypi-uri "pdftools.pdfposter" version ".tar.bz2"))
921 (sha256
922 (base32
923 "1i9jqawf279va089ykicglcq4zlsnwgcnsdzaa8vnm836lqhywma"))))
924 (build-system python-build-system)
925 (arguments
926 `(#:tests? #f ; no test suite, only for visual control
927 #:python ,python-2))
928 (inputs
929 ;; pdfposter 0.6.0 still uses the old pyPdf
930 `(("python2-pypdf" ,python2-pypdf)))
99abcdbd
HG
931 (home-page "https://pythonhosted.org/pdftools.pdfposter/")
932 (synopsis "Scale and tile PDF images/pages to print on multiple pages")
933 (description "@command{pdfposter} can be used to create a large poster by
934building it from multple pages and/or printing it on large media. It expects
935as input a PDF file, normally printing on a single page. The output is again
936a PDF file, maybe containing multiple pages together building the poster. The
937input page will be scaled to obtain the desired size.
938
939This is much like @command{poster} does for Postscript files, but working with
940PDF. Since sometimes @command{poster} does not like your files converted from
941PDF. Indeed @command{pdfposter} was inspired by @command{poster}.")
942 (license license:gpl3+)))
e05fc441
RS
943
944(define-public pdfgrep
945 (package
946 (name "pdfgrep")
947 (version "2.0.1")
948 (source
949 (origin
950 (method url-fetch)
951 (uri (string-append "https://pdfgrep.org/download/"
952 name "-" version ".tar.gz"))
953 (sha256
954 (base32
955 "07llkrkcfjwd3ybai9ad10ybhr0biffcplmy7lw4fb87nd2dfw03"))))
956 (build-system gnu-build-system)
957 (native-inputs
958 `(("pkg-config" ,pkg-config)))
959 (inputs
960 `(("libgcrypt" ,libgcrypt)
961 ("pcre" ,pcre)
962 ("poppler" ,poppler)))
963 (home-page "https://pdfgrep.org")
964 (synopsis "Command-line utility to search text in PDF files")
965 (description
966 "Pdfgrep searches in pdf files for strings matching a regular expression.
967Support some GNU grep options as file name output, page number output,
968optional case insensitivity, count occurrences, color highlights and search in
969multiple files.")
970 (license license:gpl2+)))