Java:iText库PDF合并,PDF始终位于页面底部

Java:iText库PDF合并,PDF始终位于页面底部,java,itext,Java,Itext,我正在使用iText库合并单个PDF。但是单独的pdf文件总是出现在页面的底部。任何指针,我怎么能让它显示在中间或顶部。我已经调整了我的代码 公共静态void concatPDFs(OutputStream OutputStream,布尔分页){ 文档=新文档(); 试一试{ 列表PDF=listPdf; 列表读取器=新的ArrayList(); int totalPages=0; 迭代器迭代器DFS=pdfs.Iterator(); //为PDF创建读卡器。 while(iteratorPD

我正在使用iText库合并单个PDF。但是单独的pdf文件总是出现在页面的底部。任何指针,我怎么能让它显示在中间或顶部。我已经调整了我的代码

公共静态void concatPDFs(OutputStream OutputStream,布尔分页){
文档=新文档();
试一试{
列表PDF=listPdf;
列表读取器=新的ArrayList();
int totalPages=0;
迭代器迭代器DFS=pdfs.Iterator();
//为PDF创建读卡器。
while(iteratorPDFs.hasNext()){
InputStream pdf=iteratorPDFs.next();
PdfReader PdfReader=新PdfReader(pdf);
readers.add(pdfReader);
totalPages+=pdfReader.getNumberOfPages();
}
//为outputstream创建写入程序
PdfWriter writer=PdfWriter.getInstance(文档,outputStream);
document.open();
BaseFont bf=BaseFont.createFont(BaseFont.HELVETICA,
BaseFont.CP1252,BaseFont.NOT_EMBEDDED);
PdfContentByte cb=writer.getDirectContent();//保存PDF文件
//资料
PDF导入页面;
int currentPageNumber=0;
int pageOfCurrentReaderPDF=0;
Iterator IteratorPDReader=readers.Iterator();
//循环浏览PDF文件并添加到输出中。
while(iteratorPDReader.hasNext()){
PdfReader PdfReader=iteratorpdfreeader.next();
//在目标中为每个源页面创建一个新页面。
而(pageOfCurrentReaderPDF
首先要弄清楚坐标系。PDF坐标系(0,0)表示PDF页面的左下角

您可以计算插入页面模板的新“y”位置,如下所示:

y=新文档高度-导入的页面高度

然后您可以将代码更改为:

cb.addTemplate(page, 0, y);

要合并PDF文件,最好按照iText开发人员的说明进行操作


照他说的做,你的PDF文件的格式不会改变

你最好使用iText人员自己提供的样本,例如,如果你真的想合并文档。(这些示例当然使用当前的iText版本;
PdfCopy
机制在古代版本中就已经存在了。)该示例引用了被弃用的
com.lowagie
cb.addTemplate(page, 0, y);