59

I want to find out the easiest way to replace a single page in a multiple page PDF with another single page PDF in Linux. What tool is best for this?

Currently I do it like this:

  1. split pdf to single pages using pdfsam
  2. replace the pages that I want to replace
  3. merge them using pdfsam
  4. use ghostscript to force the page size as same

Any better way?

88

You could use the PDF Toolkit PDFtk:

Example:

pdftk A=inA.pdf B=inB.pdf cat A1-12 B3 A14-end output out1.pdf

The output consists of the first 12 pages of inA.pdf, followed by page 3 of inB.pdf and then pages 14 until end of inA.pdf.

Many Linux distributions provide a PDFtk package you can download and install using their package manager.

  • 7
    Thanks! Note, A= and B= must be uppercase. When I tried lowercase pdftk though a= was part of the filename. – biscuit314 Oct 9 '17 at 13:23
  • Didn't work for me: ` pdftk A=./inA.pdf B=./inB.pdf A1-4 B1 A6-end output out.pdf Error: Unable to find file. Error: Failed to open PDF file: A1-4 Error: Unable to find file. Error: Failed to open PDF file: B1 Error: Unable to find file. Error: Failed to open PDF file: A6-end Errors encountered. No output created. Done. Input errors, so no output created. ` - I used qpdf and worked. – azbarcea May 22 '20 at 19:18
  • 2
    @azbarcea: the cat is missing. The complete command: pdftk A=./inA.pdf B=./inB.pdf cat A1-4 B1 A6-end output out.pdf. While qpdf certainly has its merits, pdftk allows additional rotation parameters for the cat operation. Try pdftk --help – Axel Kemper May 22 '20 at 19:40
  • thank you Axel! – azbarcea May 23 '20 at 16:05
18

You could also use qpdf which is open source:

Same example as the one in the other response:

qpdf --empty --pages inA.pdf 1-12 inB.pdf 3 inA.pdf 14-z -- out1.pdf
  • You probably mean inB.pdf instead of B.pdf. This should probably be the accepted answer as pdftk is discontinued as far as I know. – Marius Hofert Apr 9 '19 at 10:40
  • I don't know if you can change the accepted answer after it is already set. However, I agree this is the better option as it is still very actively maintained. I also really like the fact that it offers an AppImage so you can use it without installing. :D – Michael Tunnell May 13 '19 at 15:42
0

If you just wanted to replace the last page of a two-page pdf with another pdf (one-page), like me, but not trying to insert a page in between pages, it can be done like so:

sudo pdftk A=Doc1.pdf B=Doc2.pdf cat A1 B output DocEdited.pdf

Note:

  • This will replace the last page in Doc1 with the page from Doc2;
  • B is like B1-end; since Doc2 is a PDF of one page so B1 or B is the same;
  • cat A1: Taking the first page from A (or Doc1).
  • There is no need to run pdftk as root. Please edit your answer to drop "sudo" from the command. – Ruben Dec 7 '20 at 15:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.