看来,你正在期待平铺 PDF。您不会告诉我们您计划使用哪种版本的iText。由于您似乎对此很陌生,因此我假设您使用的是iText 7.在这种情况下,请查阅iText 7 Jump-Start tutorial的Chapter 6,我们可以将带有单页的PDF格式化为包含四页的PDF格式。
原文PDF:
瓷砖PDF:
PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
PdfDocument sourcePdf = new PdfDocument(new PdfReader(src));
PdfPage origPage = sourcePdf.getPage(1);
PdfFormXObject pageCopy = origPage.copyAsFormXObject(pdf);
Rectangle orig = origPage.getPageSize();
//Tile size
Rectangle tileSize = PageSize.A4.rotate();
AffineTransform transformationMatrix = AffineTransform.getScaleInstance(
tileSize.getWidth()/orig.getWidth() * 2f,
tileSize.getHeight()/orig.getHeight() * 2f);
//The first tile
PdfPage page = pdf.addNewPage(PageSize.A4.rotate());
PdfCanvas canvas = new PdfCanvas(page);
canvas.concatMatrix(transformationMatrix);
canvas.addXObject(pageCopy, 0, -orig.getHeight()/2f);
//The second tile
page = pdf.addNewPage(PageSize.A4.rotate());
canvas = new PdfCanvas(page);
canvas.concatMatrix(transformationMatrix);
canvas.addXObject(pageCopy, -orig.getWidth()/2f, -orig.getHeight()/2f);
//The third tile
page = pdf.addNewPage(PageSize.A4.rotate());
canvas = new PdfCanvas(page);
canvas.concatMatrix(transformationMatrix);
canvas.addXObject(pageCopy, 0, 0);
//The fourth tile
page = pdf.addNewPage(PageSize.A4.rotate());
canvas = new PdfCanvas(page);
canvas.concatMatrix(transformationMatrix);
canvas.addXObject(pageCopy, -orig.getWidth()/2f, 0);
// closing the documents
pdf.close();
sourcePdf.close();
改变这个例子中为代码THA:
的代码见TheGoldenGateBridge_Tiles t将带有1页的PDF分成2页的PDF,这是使用一些简单的数学的问题。
如果您使用的是iText 5,那么以前的问题已经回答了很多次。例如见: