[英]iText - Clone existing content and add in same page
我想知道是否可以使用 iText 克隆 PDF 的現有內容。 基本上我有以下格式的PDF:
不克隆內容
我想克隆上面 PDF 左側的內容,並希望得到以下格式的結果。
克隆內容后
我想知道這是否可以使用 iText PdfStamper 類或任何其他類的 iText?
使用 iText7 更新代碼
public void clonePageContent(String dest) throws IOException {
// Initialize PDF Document
PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
PdfDocument sourcePdf = new PdfDocument(new PdfReader(SRC));
// Original page
PdfPage origPage = sourcePdf.getPage(1);
// Original page size
Rectangle orig = origPage.getPageSize();
PdfFormXObject pageCopy = origPage.copyAsFormXObject(pdf);
// N-up page
PageSize nUpPageSize = PageSize.LETTER;
PdfPage page = pdf.addNewPage(nUpPageSize);
page.setRotation(90);
PdfCanvas canvas = new PdfCanvas(page);
// Scale page
AffineTransform transformationMatrix = AffineTransform
.getScaleInstance(
nUpPageSize.getWidth() / orig.getWidth() / 2f,
nUpPageSize.getHeight() / orig.getHeight() / 2f);
canvas.concatMatrix(transformationMatrix);
// Add pages to N-up page
canvas.addXObject(pageCopy, 0, orig.getHeight());
canvas.addXObject(pageCopy, orig.getWidth(), orig.getHeight());
pdf.close();
sourcePdf.close();
}
使用上面的代碼,我無法按預期生成輸出。 有人可以說明應該調整什么才能獲得上述預期輸出嗎?
經過這么多天的努力,下面的代碼有助於實現我期望的上述輸出。 希望有一天這可能對某人有所幫助! PS:我是 iText7 的新手。
public void clonePageContent(String dest) throws IOException {
// Initialize PDF Document
PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
PdfDocument sourcePdf = new PdfDocument(new PdfReader(SRC));
// Original page
PdfPage origPage = sourcePdf.getPage(1);
// Original page size
Rectangle orig = origPage.getPageSize();
PdfFormXObject pageCopy = origPage.copyAsFormXObject(pdf);
//PdfCanvas canvas = new PdfCanvas(pageCopy,sourcePdf);
// N-up page
PageSize nUpPageSize = PageSize.LETTER;
PdfPage page = pdf.addNewPage(nUpPageSize).setRotation(90);
PdfCanvas canvas = new PdfCanvas(page);
// Scale page
AffineTransform transformationMatrix = AffineTransform
.getScaleInstance(
page.getPageSize().getWidth() / orig.getWidth(), page.getPageSize().getHeight() / orig.getHeight()
);
canvas.concatMatrix(transformationMatrix);
System.out.println(page.getPageSize().getWidth());
System.out.println(orig.getWidth());
// Add pages to N-up page
canvas.addXObject(pageCopy, 0, 0);
canvas.addXObject(pageCopy, 0, 350f); //350f
//canvas.addXObject(pageCopy, orig.getRight(), orig.getWidth());
pdf.close();
sourcePdf.close();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.