iText7 叠加叠加两个 PDF 作为一个新问题
iText7 superimpose overlay two PDF as one new issue
我正在尝试将两张 A4 PDF 页面叠加或叠加为新的 A4 PDF 中的一页
我试过颠倒源文档的顺序,检查它们真的是 A4,但每次我 运行 时,第二个对象总是向右和向上添加大约 10 毫米。
在添加第二个对象之前我必须设置某种起点或边距吗?
PdfDocument pdfDocNew = new PdfDocument(new PdfWriter(dest));
PdfDocument pdfDocSrc1 = new PdfDocument(new PdfReader(source1));
PdfDocument pdfDocSrc2 = new PdfDocument(new PdfReader(source2));
PageSize pageSize = PageSize.A4;
PdfPage targetPage = pdfDocNew.AddNewPage(pageSize);
PdfCanvas canvas = new PdfCanvas(targetPage);
PdfPage currentPage = pdfDocSrc1.GetPage(1);
Rectangle orig = currentPage.GetPageSize();
var width = 0.99f;
var height = 0.99f;
AffineTransform transformationMatrix = AffineTransform.GetScaleInstance(width,height);
canvas.ConcatMatrix(transformationMatrix);
var height1 = orig.GetHeight();
var width2 = orig.GetWidth() / 2;
var height2 = orig.GetHeight() / 2;
PdfFormXObject pageCopy = currentPage.CopyAsFormXObject(pdfDocNew);
canvas.AddXObject(pageCopy,0,0);
currentPage = pdfDocSrc2.GetPage(1);
pageCopy = currentPage.CopyAsFormXObject(pdfDocNew);
canvas.AddXObject(pageCopy,0,0);
pdfDocNew.Close();
谢谢@mkl
GetLeft() 和 GetBottom() 均返回 29.17
所以我现在根据这些进行调整(通过变量但有效)
canvas.AddXObject(pageCopy,-29.17,-29.17)
我正在尝试将两张 A4 PDF 页面叠加或叠加为新的 A4 PDF 中的一页 我试过颠倒源文档的顺序,检查它们真的是 A4,但每次我 运行 时,第二个对象总是向右和向上添加大约 10 毫米。 在添加第二个对象之前我必须设置某种起点或边距吗?
PdfDocument pdfDocNew = new PdfDocument(new PdfWriter(dest));
PdfDocument pdfDocSrc1 = new PdfDocument(new PdfReader(source1));
PdfDocument pdfDocSrc2 = new PdfDocument(new PdfReader(source2));
PageSize pageSize = PageSize.A4;
PdfPage targetPage = pdfDocNew.AddNewPage(pageSize);
PdfCanvas canvas = new PdfCanvas(targetPage);
PdfPage currentPage = pdfDocSrc1.GetPage(1);
Rectangle orig = currentPage.GetPageSize();
var width = 0.99f;
var height = 0.99f;
AffineTransform transformationMatrix = AffineTransform.GetScaleInstance(width,height);
canvas.ConcatMatrix(transformationMatrix);
var height1 = orig.GetHeight();
var width2 = orig.GetWidth() / 2;
var height2 = orig.GetHeight() / 2;
PdfFormXObject pageCopy = currentPage.CopyAsFormXObject(pdfDocNew);
canvas.AddXObject(pageCopy,0,0);
currentPage = pdfDocSrc2.GetPage(1);
pageCopy = currentPage.CopyAsFormXObject(pdfDocNew);
canvas.AddXObject(pageCopy,0,0);
pdfDocNew.Close();
谢谢@mkl GetLeft() 和 GetBottom() 均返回 29.17 所以我现在根据这些进行调整(通过变量但有效) canvas.AddXObject(pageCopy,-29.17,-29.17)