Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I install Pdftk on my server?

Tags:

linux

php

pdftk

I am using a Linux Server and am trying to install Pdftk, but I am problems trying to figure out what exactly to do.

I found the following documentation on how to install it, but they refer mostly to installing it on the local Windows machine.

They are: http://www.andrewheiss.com/blog/2009/07/29/installing-pdftk-php/

http://www.accesspdf.com/pdftk/#packages

Can someone help me unserstand exactly what files I need to place where on my server so I can refer to pdftk?

like image 547
zeckdude Avatar asked Jun 30 '10 05:06

zeckdude


People also ask

Is pdftk server free?

You can use PDFtk Server at no charge under its GPL license. Commercial users will benefit from our comprehensive commercial support agreement.

What is pdftk in Linux?

PDFtk (short for PDF Toolkit) is a toolkit for manipulating Portable Document Format (PDF) documents. It runs on Linux, Windows and MacOS. It comes in three versions: PDFtk Server (open-source command-line tool), PDFtk Free (freeware) and PDFtk Pro (proprietary paid).

What is pdftk in Ubuntu?

pdftk is a command-line tool for working with PDF files. It is commonly used for client-side scripting or server-side processing of PDF files. This snap is an unmodified Ubuntu 16.04 binary package that is re-packaged as a snap.


3 Answers

Pdftk is a version of iText which has been converted from Java to c++ and rebuilt with a command-line bridge for easy access from PHP applications.

To build pdftk on Redhat / CentOS please follow the below instructions.

ssh [server to install pdftk on]

Now that we are in the server we need to create the directories to store pdftk.

cd /
sudo mkdir extra
cd extra
sudo mkdir src
cd src
sudo wget http://www.pdfhacks.com/pdftk/pdftk-1.41.tar.gz
sudo tar zxvf pdftk-1.41.tar.gz
cd pdftk-1.41/pdftk

Now we need to install the gcj libraries.

sudo yum install java-1.4.2-gcj-compat-devel.i386

The gcc-c++ library doesn't get installed with the gcj package so we will install it now, so we don't get an error halfway through the compile process.

sudo yum install gcc-c++

If you compile the application right now you will receive a warning that tmpnam is dangerous to use and you should use mkstemp.

sudo vi report.cc

Run this from inside VI to do a search and replace for the tmpnam method.

:%s/tmpnam(/mkstemp(/g

Press escape and save the changes with

:wq!

Now that we have all the packages installed, we are going to start compiling pdftk-1.41

from /extra/src/pdftk-1.41/pdftk run the following command

sudo make -f Makefile.RedHat

This will kick off the build process for compiling and converting the java file to c++. This could take SEVERAL minutes to convert iText to c++. Go grab yourself a margarita from our new margarita machine in the break room :).

Now with the pdftk file created we will want to copy it to the /bin directory so that we can run it from anywhere.

sudo cp pdftk /usr/local/bin

Let's make sure the build was successful and run

pdftk --version
like image 102
Bot Avatar answered Sep 21 '22 15:09

Bot


As of 2020, things are different now. CentOS 6 is stepping out and pdftk can only support CentOS 5/6. GCJ on CentOS 7 is removed, so installing from source is not easy too. But we have docker now:

FROM centos:centos6
RUN yum install -y https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/pdftk-2.02-1.el6.x86_64.rpm

Then build with docker build . -t pdftk and run as:

docker run -it --rm -v $PWD:/data --workdir /data pdftk pdftk ./input.pdf output ./output.pdf

The example above can repair a pdf file missing a dozen of KB of data if you are lucky.

like image 42
ivzhh Avatar answered Sep 21 '22 15:09

ivzhh


As of 2021, there is pdftk-java: A port of the original GCJ-based PDFtk to Java, which is currently on the way to the repositories for Fedora 33+ and EPEL 7+ (latter for CentOS, RHEL or Rocky), allowing yum install pdftk-java to succeed (once the package reached the stable repositories).

Edit: The pdftk-java package is in the stable repositories since yesterday, 2021-10-29.

like image 36
rsc Avatar answered Sep 20 '22 15:09

rsc