3788 |
17 Mar 16 |
nicklas |
1 |
package net.sf.basedb.reggie.pdf; |
3788 |
17 Mar 16 |
nicklas |
2 |
|
3788 |
17 Mar 16 |
nicklas |
3 |
import java.io.IOException; |
3788 |
17 Mar 16 |
nicklas |
4 |
import java.io.InputStream; |
3788 |
17 Mar 16 |
nicklas |
5 |
|
6060 |
17 Nov 20 |
nicklas |
6 |
import com.itextpdf.kernel.pdf.PdfDocument; |
6060 |
17 Nov 20 |
nicklas |
7 |
import com.itextpdf.kernel.pdf.PdfReader; |
6034 |
29 Oct 20 |
nicklas |
8 |
|
6061 |
18 Nov 20 |
nicklas |
9 |
import net.sf.basedb.reggie.pdf.PdfUtil7.Align; |
6060 |
17 Nov 20 |
nicklas |
10 |
|
6061 |
18 Nov 20 |
nicklas |
11 |
|
3788 |
17 Mar 16 |
nicklas |
12 |
/** |
3788 |
17 Mar 16 |
nicklas |
Combine PDF files info a multi-page PDF. |
3788 |
17 Mar 16 |
nicklas |
@since 4.3 |
3788 |
17 Mar 16 |
nicklas |
15 |
*/ |
3788 |
17 Mar 16 |
nicklas |
16 |
public class PdfToPdfCombiner |
3788 |
17 Mar 16 |
nicklas |
17 |
extends PdfCombiner |
3788 |
17 Mar 16 |
nicklas |
18 |
{ |
6060 |
17 Nov 20 |
nicklas |
19 |
private PdfUtil7 pdfOut; |
3788 |
17 Mar 16 |
nicklas |
20 |
private String password; |
6034 |
29 Oct 20 |
nicklas |
21 |
private int totalPages; |
3788 |
17 Mar 16 |
nicklas |
22 |
|
3788 |
17 Mar 16 |
nicklas |
23 |
/** |
3788 |
17 Mar 16 |
nicklas |
Create a new combiner instance. |
3788 |
17 Mar 16 |
nicklas |
@param pdfOut The PDF file to write the output to |
3788 |
17 Mar 16 |
nicklas |
26 |
*/ |
6060 |
17 Nov 20 |
nicklas |
27 |
public PdfToPdfCombiner(PdfUtil7 pdfOut) |
3788 |
17 Mar 16 |
nicklas |
28 |
{ |
3788 |
17 Mar 16 |
nicklas |
29 |
super("application/pdf", ".pdf"); |
3788 |
17 Mar 16 |
nicklas |
30 |
this.pdfOut = pdfOut; |
6034 |
29 Oct 20 |
nicklas |
31 |
this.totalPages = 0; |
3788 |
17 Mar 16 |
nicklas |
32 |
} |
3788 |
17 Mar 16 |
nicklas |
33 |
|
3788 |
17 Mar 16 |
nicklas |
34 |
@Override |
3788 |
17 Mar 16 |
nicklas |
35 |
public void close() |
3788 |
17 Mar 16 |
nicklas |
36 |
throws IOException |
3788 |
17 Mar 16 |
nicklas |
37 |
{ |
3788 |
17 Mar 16 |
nicklas |
38 |
pdfOut.close(); |
3788 |
17 Mar 16 |
nicklas |
39 |
pdfOut = null; |
3788 |
17 Mar 16 |
nicklas |
40 |
} |
3788 |
17 Mar 16 |
nicklas |
41 |
|
3788 |
17 Mar 16 |
nicklas |
42 |
@Override |
3788 |
17 Mar 16 |
nicklas |
43 |
public boolean addFile(InputStream pdfIn, String pdfName) |
3788 |
17 Mar 16 |
nicklas |
44 |
throws IOException |
3788 |
17 Mar 16 |
nicklas |
45 |
{ |
6034 |
29 Oct 20 |
nicklas |
46 |
PdfReader reader = new PdfReader(pdfIn); |
6060 |
17 Nov 20 |
nicklas |
47 |
PdfDocument other = new PdfDocument(reader); |
6060 |
17 Nov 20 |
nicklas |
48 |
|
6060 |
17 Nov 20 |
nicklas |
49 |
int numPages = other.getNumberOfPages(); |
6034 |
29 Oct 20 |
nicklas |
50 |
for (int pageNo = 1; pageNo <= numPages; pageNo++) |
6034 |
29 Oct 20 |
nicklas |
51 |
{ |
6034 |
29 Oct 20 |
nicklas |
52 |
if (totalPages > 0) pdfOut.newPage(); |
6061 |
18 Nov 20 |
nicklas |
53 |
pdfOut.importPdf(other, pageNo, 0, 0, Float.NaN, Float.NaN, Align.LEFT); |
6034 |
29 Oct 20 |
nicklas |
54 |
totalPages++; |
6034 |
29 Oct 20 |
nicklas |
55 |
} |
6034 |
29 Oct 20 |
nicklas |
// If there is an odd number of pages (3, 5, etc.) an extra blank page is inserted |
6060 |
17 Nov 20 |
nicklas |
57 |
if (numPages > 2 && numPages % 2 == 1) pdfOut.newPage(); |
3788 |
17 Mar 16 |
nicklas |
58 |
return true; |
3788 |
17 Mar 16 |
nicklas |
59 |
} |
3788 |
17 Mar 16 |
nicklas |
60 |
} |