From patchwork Fri Mar 14 23:10:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Danny Milosavljevic X-Patchwork-Id: 40191 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id E9D6527BBEA; Sat, 15 Mar 2025 00:40:53 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-7.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED, RCVD_IN_VALIDITY_CERTIFIED,RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE, SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 4826B27BBE9 for ; Sat, 15 Mar 2025 00:40:52 +0000 (GMT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ttFZQ-0007pd-CW; Fri, 14 Mar 2025 20:40:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ttECC-0004HF-0L for guix-patches@gnu.org; Fri, 14 Mar 2025 19:12:04 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ttECB-0006SE-Lv for guix-patches@gnu.org; Fri, 14 Mar 2025 19:12:03 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:Date:From:To:Subject; bh=oQCQf1VGxdf7F7fFipk5on9f1JsLz/hzS6idqyrMw6k=; b=IqnsL6kM1cDuu7EyXnhfk8oN7TZRuPTU4vC3xgNM7LU16aOgtQD2hGDXRADto8ovyG9tlF0/ZIE3cG6Q1wZ0DGpSoMmE+KFM+nxlsjWZ/aQI+tX5i++AueVctTOtV0YfcnkY/0tmrEW2w7rk4xKCNKq4UqkO2grDe5m3r/0/DRV9Rlfbnshm9UopBWUz8Va9NFEdMcjuAHupXk8RaUHdiG5VgtNQa+oHOWy5yiUdoRi+sewyMUvcf1dZjwhFf3dAOqCH6i+29wP0zDP+CEcEgKzMvmo5zICfVs8pSTTbnGWN2oGQIeiTpOgMBR5YeraBNxS0DKBoAKPmbfHzoF2vzg==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1ttECA-0004Bx-LU for guix-patches@gnu.org; Fri, 14 Mar 2025 19:12:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#77021] [PATCH] gnu: Add pdftk. Resent-From: Danny Milosavljevic Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Fri, 14 Mar 2025 23:12:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 77021 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 77021@debbugs.gnu.org Cc: Danny Milosavljevic X-Debbugs-Original-To: guix-patches@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.174199386716028 (code B ref -1); Fri, 14 Mar 2025 23:12:02 +0000 Received: (at submit) by debbugs.gnu.org; 14 Mar 2025 23:11:07 +0000 Received: from localhost ([127.0.0.1]:36719 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ttEBG-0004AP-F3 for submit@debbugs.gnu.org; Fri, 14 Mar 2025 19:11:07 -0400 Received: from lists.gnu.org ([2001:470:142::17]:35330) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1ttEBC-00049l-Vp for submit@debbugs.gnu.org; Fri, 14 Mar 2025 19:11:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ttEAy-00044P-VE for guix-patches@gnu.org; Fri, 14 Mar 2025 19:10:50 -0400 Received: from beige.elm.relay.mailchannels.net ([23.83.212.16]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ttEAq-0006KU-H6 for guix-patches@gnu.org; Fri, 14 Mar 2025 19:10:43 -0400 X-Sender-Id: dreamhost|x-authsender|dannym@friendly-machines.com Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id 3F76F4E4F60; Fri, 14 Mar 2025 23:10:34 +0000 (UTC) Received: from pdx1-sub0-mail-a314.dreamhost.com (trex-0.trex.outbound.svc.cluster.local [100.117.147.225]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 86ED04E4ABD; Fri, 14 Mar 2025 23:10:33 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1741993833; a=rsa-sha256; cv=none; b=zTDIlKWI1KzM38Gctjx4U0oHkzfIZuayQE6S17k/+wgOC8O/CVkGJC8IiHPj51OnaoYUNn 6RoyNAAUSRvUHtL6roOMiHrW693NfUEYGC4sKSN5QAwmYUoKcvMdXbTfEVzPXCalk0scxH PbN2HC7B4hpP0Yugv1ouL0il11Go+BAN3PhKt6pL8OsLhXjv2VgsDrK7fBnY71pQteMJaK 8olvkmkf1OAShagsxcOqUxD02j5OZ92C1nK0FYVrHMYXB62adG89fK1Fomgnk+V8Kk9UOx qYM+qIx8Rocch5+1+DhijtUuFBDVwGNrK7MzxdynnJgEZDT48Ilj/bKyj+5mzw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1741993833; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding:dkim-signature; bh=oQCQf1VGxdf7F7fFipk5on9f1JsLz/hzS6idqyrMw6k=; b=vU+rgRRAqvvzthJgzXxRfdiRdF35yGiMajYA88bSDnN4LXyleYeHFFXO/3dAkHMthqbtPV wB2kpxNjY0mqe/cFeNydT1cscqjtX9FHKARpI6xrGTNMKMKU1z8b5C11oeYtiHvNOlIcTh YUiDfBJtb8bGFU+nalEYUBgXmjvcqg5tG99t4V2x8TzRB+sDunabTbDEQWot1UEok47HMN s1PymeQ+BLj0ibPpwqP9EcaepMQT43zDLg/Bggsp2Ih7hfqU6gCBx0Jl/j5o/qwKSIkhhH A5mlz5wmOVSuJd2jUhOqPG0BDvaGZryoz6m75b3lGAnyYbBOFpROPGnn26Ie+w== ARC-Authentication-Results: i=1; rspamd-5bd7b8dc7d-ss8gq; auth=pass smtp.auth=dreamhost smtp.mailfrom=dannym@friendly-machines.com X-Sender-Id: dreamhost|x-authsender|dannym@friendly-machines.com X-MC-Relay: Neutral X-MC-Copy: stored-urls X-MailChannels-SenderId: dreamhost|x-authsender|dannym@friendly-machines.com X-MailChannels-Auth-Id: dreamhost X-Arch-Towering: 5eb742b70a263248_1741993834143_1825509087 X-MC-Loop-Signature: 1741993834143:1176455523 X-MC-Ingress-Time: 1741993834143 Received: from pdx1-sub0-mail-a314.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384) by 100.117.147.225 (trex/7.0.2); Fri, 14 Mar 2025 23:10:34 +0000 Received: from localhost (84-115-228-14.cable.dynamic.surfer.at [84.115.228.14]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: dannym@friendly-machines.com) by pdx1-sub0-mail-a314.dreamhost.com (Postfix) with ESMTPSA id 4ZF0TP0X0Mzdj; Fri, 14 Mar 2025 16:10:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=friendly-machines.com; s=dreamhost; t=1741993833; bh=oQCQf1VGxdf7F7fFipk5on9f1JsLz/hzS6idqyrMw6k=; h=From:To:Cc:Subject:Date:Content-Transfer-Encoding; b=OEpuAMrzwErw1GCujYc/sq+cDTa+bNebMfkJZs/erIVews37OEhmwDBvC31pCbziP GoYEd+27uFAu4J2uQoyWLHRVtedEW6b52xrZsGIZkyc6aVAuEBFGC4womQL1XPy6bk kcMEJHnbx/yWzYZ6NWr3o+VPNMcrAN9xcJaA4xg6nL48tSBnPJ8Eq+6qCSQe/bx2IX hm9tvES3LB1AeES72TW/98SQk6Vjr5aEik1Oz7fU/8rwhmsf6NcHvRWnAd+GHPZ0Yn hQo0mQ0W+177ui8M2KcOeHWavYQUb70ypRSD7KhJ03FUPLOdZCtxY1MIETo0QoatN3 4zXOGtn7/5MvQ== From: Danny Milosavljevic Date: Sat, 15 Mar 2025 00:10:14 +0100 Message-ID: <8b0938d9bd3b8283d75b2e900dbf6f2a80d1b486.1741993628.git.dannym@friendly-machines.com> X-Mailer: git-send-email 2.48.1 MIME-Version: 1.0 Received-SPF: pass client-ip=23.83.212.16; envelope-from=dannym@friendly-machines.com; helo=beige.elm.relay.mailchannels.net X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-Mailman-Approved-At: Fri, 14 Mar 2025 20:40:07 -0400 X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches * gnu/packages/pdf.scm (pdftk): New variable. Change-Id: Ia331a89d63f114c99e7613d421aff62bbc18e082 --- gnu/packages/pdf.scm | 90 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) base-commit: 88eaa9e7262481eea79ae4fe45fcc5882160750a diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm index de6df8da93..3268941729 100644 --- a/gnu/packages/pdf.scm +++ b/gnu/packages/pdf.scm @@ -52,6 +52,7 @@ (define-module (gnu packages pdf) #:use-module (guix gexp) #:use-module (guix git-download) #:use-module (guix utils) + #:use-module (guix build-system ant) #:use-module (guix build-system gnu) #:use-module (guix build-system cmake) #:use-module (guix build-system meson) @@ -84,6 +85,7 @@ (define-module (gnu packages pdf) #:use-module (gnu packages gstreamer) #:use-module (gnu packages gtk) #:use-module (gnu packages image) + #:use-module (gnu packages java) #:use-module (gnu packages javascript) #:use-module (gnu packages kde-frameworks) #:use-module (gnu packages lesstif) @@ -1792,3 +1794,91 @@ (define-public sioyek (description "Sioyek is a PDF viewer with a focus on textbooks and research papers.") (license license:gpl3+))) + +(define-public pdftk + (package + (name "pdftk") + (version "3.3.3") + (source + (origin + (method url-fetch) + (uri (string-append "https://gitlab.com/pdftk-java/pdftk/-/archive/v" + version "/pdftk-v" version ".tar.gz")) + (sha256 + (base32 "11mj0phf78pkbdzvnfhl7n4z476fiv1zjfbf2cx9wlsq8vjpv54w")))) + (build-system ant-build-system) + (arguments + (list + #:jdk openjdk11 + #:tests? #f ; no test suite + #:phases + #~(modify-phases %standard-phases + (add-before 'build 'copy-lib-files + (lambda* (#:key inputs #:allow-other-keys) + (mkdir-p "lib") + (for-each + (lambda (lib) + (copy-file lib (string-append "lib/" (basename lib)))) + (append + (find-files (assoc-ref inputs "java-bouncycastle") "\\.jar$") + (find-files (assoc-ref inputs "java-commons-lang3") "\\.jar$"))))) + (replace 'install + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (share (string-append out "/share")) + (lib (string-append out "/lib")) + (doc (string-append share "/doc/pdftk")) + (man1 (string-append share "/man/man1"))) + (mkdir-p bin) + (mkdir-p lib) + (mkdir-p doc) + (mkdir-p man1) + (install-file "build/jar/pdftk.jar" lib) + ;; Install dependencies. + (for-each + (lambda (dep-jar) + (install-file dep-jar lib)) + (append + (find-files (assoc-ref inputs "java-bouncycastle") "\\.jar$") + (find-files (assoc-ref inputs "java-commons-lang3") "\\.jar$"))) + ;; Create wrapper script. + (with-output-to-file (string-append bin "/pdftk") + (lambda _ + (format #t + "#!~a/bin/bash~@ + CLASSPATH=~a/lib/pdftk.jar:~a/lib/*~@ + exec ~a/bin/java -cp $CLASSPATH com.gitlab.pdftk_java.pdftk \"$@\"~%" + (assoc-ref inputs "bash") + out + out + (assoc-ref inputs "openjdk")))) + ;; Make the wrapper executable. + (chmod (string-append bin "/pdftk") #o755) + (copy-recursively "doc" doc) + (install-file "pdftk.1" man1))))))) + (inputs + (list bash java-bouncycastle java-commons-lang3 openjdk11)) + (home-page "https://gitlab.com/pdftk-java/pdftk") + (synopsis "Tool for manipulating PDF documents") + (description + "This package provides a tool for doing everyday things with PDF +documents. It can: +@itemize +@item Merge PDF documents or collate PDF page scans +@item Split PDF pages into a new document +@item Rotate PDF documents or pages +@item Decrypt input as necessary (password required) +@item Encrypt output as desired +@item Fill PDF forms with X/FDF data and/or flatten forms +@item Generate FDF data stencils from PDF forms +@item Apply a background watermark or a foreground stamp +@item Report PDF metrics, bookmarks and metadata +@item Add/Update PDF bookmarks or metadata +@item Attach files to PDF pages or the PDF document +@item Unpack PDF attachments +@item Burst a PDF document into single pages +@item Uncompress and re-compress page streams +@item Repair corrupted PDF (where possible) +@end itemize") + (license license:gpl2+)))