Suppose you are using the pdflatex
command to generate a PDF from your LaTeX document, and you need to insert pages from an external PDF document in the PDF document that you are creating. You can do this quite easily using the pdfpages package by Andreas Matthias. I learnt about this package from this post on Stackoverflow. The documentation accompanying the package is very good and quite easy to understand. Nevertheless, I find it helpful to have some ready examples for common use cases. The following code snippets provide some such examples. They build on the answer in the linked Stackoverflow post.
First, add \usepackage{pdfpages}
to the preamble of your LaTeX document. All the snippets below assume that you have done this.
The command syntax is:
\includepdf[key1=val1, key2=val2, key3=val3]{pathToFile}
where:
\includepdf
is the name of the command
key=val
is a comma separated list of options
pathToFile
is path to the external PDF file that you want to include.
For this post we will assume that the external PDF file is in the same directory where the LaTeX file is, and is called external.pdf
.
Most basic use (no options are specified)
%--------------
%% Snippet 1
%--------------
\includepdf{external.pdf}
This will insert the first page of external.pdf
without numbering the inserted page.
The pagecommand
option
If you want to the inserted page to have a page number add the option pagecommand={}
. With this option, the command will be:
%--------------
%% Snippet 2
%--------------
\includepdf[pagecommand={}]{external.pdf}
Now you will have the first page of the external.pdf file and it will numbered as if it were part of your LaTeX document. The default value of the pagecommand
option is { \thispagestyle{empty} }
, which is why page number was missing in the output of Snippet 1. By including pagecommand = {}
you override this option. In general, according to the documentation, "[pagecommand
] declares LaTeX commands, which are executed on each sheet of paper".
Including specific pages
Snippets 1 and 2 insert only the first page of external.pdf
document. What if you wanted to insert more pages or other pages? For this you would use the pages
option. I have left the pagecommand
option in there so that you can see how different options can be combined. It is not required for including specific pages.
To insert all pages from external.pdf, use:
%--------------
%% Snippet 3
%--------------
\includepdf[pages=-, pagecommand={}]{external.pdf}
To insert specific pages, say pages 2, 4, and 7, use:
%--------------
%% Snippet 4
%--------------
\includepdf[pages={2, 4, 7}, pagecommand={}]{external.pdf}
To insert a range of pages, say pages 9 through 13, use:
%--------------
%% Snippet 5
%--------------
\includepdf[pages={9-13}, pagecommand={}]{external.pdf}
If you want to include specific pages and a range of pages, you can combine snippets 4 and 5 as:
%--------------
%% Snippet 6
%--------------
\includepdf[pages={2, 4, 7, 9-13}, pagecommand={}]{external.pdf}
Scaling the pages
According to the documentation, pages are scaled automatically as they are inserted. This can be prevented by including noautoscale = true
option. However, for a more fine-grained control on scaling you can use the scale
option provided by the graphicx
package. For example, you can use:
%--------------
%% Snippet 7
%--------------
\includepdf[pages=-, scale=0.9, pagecommand={}]{external.pdf}
Value of scale
option should be between 0 and 1.