2016-10-07 3 views
0

У меня есть 8,5 "x 11" PDF. Я бы хотел взять верхнюю часть страницы, разрезать ее и вставить в страницу 1 нового PDF-документа. Затем возьмите нижнюю половину страницы и вставьте ее в страницу 2 PDF.Как скопировать верхнюю половину PDF и вставить в новый PDF

Я по существу пытаюсь разделить PDF-страницу пополам ... Все документы, которые я вижу, связаны с разделением отдельных страниц на отдельные файлы. Я хочу по существу скопировать часть страницы и вставить ее в другой документ.

Любая помощь в предоставлении направления с использованием itextsharp? Я использовал его раньше и понимаю понятия. Но мне тяжело. Я уверен, что я буду использовать прямоугольник и использовать координаты.

ответ

2

Кажется, что вы ищете плитка a PDF. Вы не говорите нам, какую версию iText вы планируете использовать. Поскольку вы, похоже, новичок в этом, я предполагаю, что вы используете iText 7. В этом случае обратитесь к Chapter 6 из iText 7 Jump-Start tutorial, где мы разбиваем PDF на одну страницу в PDF с четырьмя страницами.

Оригинал PDF:

enter image description here

Плиточный PDF:

enter image description here

См TheGoldenGateBridge_Tiles для кода:

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(); 

изменяющемся этот пример в код тха t плитка PDF с 1 страницей в PDF с 2 страницами, это вопрос использования простой математики.

Если вы используете iText 5, то на вопрос уже много раз ответили. Смотри, например:

Смежные вопросы