If you use iText 7, then this is an option:
public void manipulatePdf(String src, String dest) throws IOException {
PdfDocument pdfDoc = new PdfDocument(new PdfReader(src), new PdfWriter(dest));
int n = pdfDoc.getNumberOfPages();
PdfPage page;
for (int p = 1; p <= n; p++) {
new PdfCanvas(pdfDoc.getPage(p).newContentStreamBefore(),
new PdfResources(), pdfDoc).writeLiteral("
q 0.05 0 0 0.05 0 0 cm
q
");
new PdfCanvas(pdfDoc.getPage(p).newContentStreamAfter(),
new PdfResources(), pdfDoc).writeLiteral("
Q
Q
");
}
pdfDoc.close();
}
Note that 5% (the 0.05
values in the writeLiteral()
method) is really small. If there's text, it will be very hard to read what it says. Maybe you meant 95%. In that case use: writeLiteral("
q 0.95 0 0 0.95 0 0 cm
q
")
.
Source: How to shrink pages in an existing PDF?
Note: iText 5 is being discontinued, but the iText 5 answer was already posted on Stack Overflow in 2014: Shrink PDF pages with rotation using Rectangle in existing PDF
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…