将每页4张的PDF拆分为每页1张的PDF

将每页4张的PDF拆分为每页1张的PDF,pdf,Pdf,我正在寻找一种自动的方法,将PDF文件拆分为每页4页的文件,每页只有1页。 页面以2x2的形式排列。转到并向下滚动到显示“平铺PDF页面”的位置 在该教程中,我们采用以下PDF格式: 我们将其平铺,使单个页面分布在四个页面上: 如果src是原始PDF的路径,dest是要创建的新PDF的路径,则需要以下代码: PdfDocument pdf = new PdfDocument(new PdfWriter(dest)); PdfDocument sourcePdf = new PdfDocume

我正在寻找一种自动的方法,将PDF文件拆分为每页4页的文件,每页只有1页。 页面以2x2的形式排列。

转到并向下滚动到显示“平铺PDF页面”的位置

在该教程中,我们采用以下PDF格式:

我们将其平铺,使单个页面分布在四个页面上:

如果
src
是原始PDF的路径,
dest
是要创建的新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();
有关完整示例,请参见

本例假设您了解如何编译和执行Java代码。如果您不懂Java,但懂C#,那么您可以轻松地将此Java代码转换为C#代码,并使用iText 7代替iText 7


如果您不懂这些编程语言中的任何一种,您应该更新您的问题并解释您想要使用哪种语言。

欢迎使用SO:-)这是关于编程问题的,而不是为了寻求一杯茶或建议或类似的问题。我们通常希望您自己尝试一些东西,不要完全得到预期的结果,将所有内容都发布在此处。最起码,我们希望问题包含寻求解决方案的编程语言/环境的信息。谢谢您的回答。我对Java非常了解,足以构建和编译它:)我只是从来没有真正使用过PDF,所以我对编辑它们一无所知。