在iTextSharp中居中pdfimported页面

我通过iTextSharp使用以下function将PDF附加在一起。 它的工作正常。 唯一的问题是,大于文档(A4)的设置大小的PDF最终会缩放并放置在文档的左下角。 我想把它放在中心位置。 有人能指出我正确的方向来实现这一目标吗? 干杯。

private void appendPDF(appendDoc doc) { PdfContentByte pdfContentByte = pdfWriter.DirectContent; PdfReader pdfReader = null; if (doc.MemoryStream != null && doc.MemoryStream.CanRead) { pdfReader = new PdfReader(doc.MemoryStream); } else if (File.Exists(doc.FullFilePath)) { pdfReader = new PdfReader(doc.FullFilePath); } if (pdfReader != null) { for (int pageIndex = 1; pageIndex  1f) { iTextDocument.SetPageSize(PageSize.A4.Rotate()); } else { iTextDocument.SetPageSize(PageSize.A4); } iTextDocument.NewPage(); pdfContentByte.AddTemplate(importedPage, 0, 0); } } } 

编辑:

这是我最终使用的解决方案。

 private void appendPDF(appendDoc doc) { PdfContentByte pdfContentByte = pdfWriter.DirectContent; PdfReader pdfReader = null; if (doc.MemoryStream != null && doc.MemoryStream.CanRead) { pdfReader = new PdfReader(doc.MemoryStream); } else if (File.Exists(doc.FullFilePath)) { pdfReader = new PdfReader(doc.FullFilePath); } if (pdfReader != null) { for (int pageIndex = 1; pageIndex  1f) { iTextDocument.SetPageSize(PageSize.A4.Rotate()); } else { iTextDocument.SetPageSize(PageSize.A4); } iTextDocument.NewPage(); var truePageWidth = iTextDocument.PageSize.Width - iTextDocument.LeftMargin - iTextDocument.RightMargin; var truePageHeight = iTextDocument.PageSize.Height - iTextDocument.TopMargin - iTextDocument.BottomMargin; var x = (truePageWidth - importedPage.Width) / 2 + iTextDocument.RightMargin; var y = (truePageHeight - importedPage.Height) / 2 + iTextDocument.BottomMargin; pdfContentByte.AddTemplate(importedPage, x, y); } } } 

你可以在调用AddTemplate时设置x坐标吗?

 Float offset = 0; if(importedPage.width < iTextDocument.PageSize.Width) { offset = (iTextDocument.PageSize.Width - importedPage.width)/2; } pdfContentByte.AddTemplate(importedPage, offset, 0); 

或者它是否在AddTemplate中进行缩放,因此您不知道最终的宽度?