2016-10-07 28 views
0

我有一个8.5英寸x 11英寸的PDF。我想将页面的前半部分剪下并插入到新PDF的第1页。然后,取页面的下半部分并将其插入PDF的第2页。如何复制PDF的上半部分并插入新的PDF

我基本上试图把PDF页面分成两半......我看到的所有文档都涉及到将单个页面拆分为单独的文件。我想实质上复制页面的一部分并将其粘贴到另一个文档中。

使用itextsharp提供方向的任何帮助?我已经使用它并理解了这些概念。但是,我有一段艰难的时光。我相信我会使用矩形并使用坐标。

回答

2

看来,你正在期待平铺 PDF。您不会告诉我们您计划使用哪种版本的iText。由于您似乎对此很陌生,因此我假设您使用的是iText 7.在这种情况下,请查阅iText 7 Jump-Start tutorialChapter 6,我们可以将带有单页的PDF格式化为包含四页的PDF格式。

原文PDF:

enter image description here

瓷砖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:

enter image description here

的代码见TheGoldenGateBridge_Tiles t将带有1页的PDF分成2页的PDF,这是使用一些简单的数学的问题。

如果您使用的是iText 5,那么以前的问题已经回答了很多次。例如见: