<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
import com.itextpdf.text.Document;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.ColumnText;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfPageEventHelper;
import com.itextpdf.text.pdf.PdfWriter;
public class PageNumPdfPageEvent extends PdfPageEventHelper{
@Override
public void onEndPage(PdfWriter writer, Document document) {
try {
PdfContentByte pdfContent = writer.getDirectContent();
pdfContent.saveState();
pdfContent.beginText();
int footerFontSize = 11 ;
BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", false);
Font fontDetail = new Font(baseFont, footerFontSize, Font.NORMAL);
pdfContent.setFontAndSize(baseFont, footerFontSize);
String footerNum = String.format("%d", writer.getPageNumber());
Phrase phrase = new Phrase(footerNum, fontDetail);
float x = ( document.left() + document.right() ) / 2 ;
float y = document.bottom(-10) ;
ColumnText.showTextAligned(pdfContent, Element.ALIGN_CENTER, phrase, x, y, 0);
pdfContent.endText();
pdfContent.restoreState();
} catch (Exception e) {
e.printStackTrace();
}
}
}
import java.io.FileOutputStream;
import com.itextpdf.text.Document;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.pdf.*;
public class PdfUtils {
public static String addPageNum (String orgPdfPath, String outputPdfPath) {
try (
FileOutputStream fos = new FileOutputStream(outputPdfPath) ;){
Document document = new Document(PageSize.A4);
PdfWriter writer = PdfWriter.getInstance(document, fos);
writer.setPageEvent(new PageNumPdfPageEvent());
document.open();
PdfContentByte pdfContent = writer.getDirectContent();
PdfReader reader = new PdfReader(orgPdfPath);
int num = reader.getNumberOfPages();
System.out.println("总页数:" + num);
for (int i = 1; i <= num; i++) {
document.newPage();
writer.setPageEmpty(false);
PdfImportedPage page = writer.getImportedPage(reader, i);
pdfContent.addTemplate(page, 0, 0);
}
document.close();
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
return outputPdfPath ;
}
}
public class PdfUtilsTest {
public static void main(String[] args){
String orgPdfPath = "D:\\yourPdfName.pdf" ;
String outputPdfPath = "D:\\newPdfName.pdf" ;
PdfUtils.addPageNum(orgPdfPath, outputPdfPath);
}
}