正如你不要複製的頁面,因爲他們是一個新的文檔作爲單獨的頁面(這是最常見的合併pdf文件使用案例),但改爲想要將所有頁面合併到一個頁面中(沿着它們的方式縮小它們的寬度和高度),單獨的code source you referenced不符合您的需要:其中的代碼着重於常見用例。
您的用例提醒了更多的n-up用例。因此,你應該看看n-up iText樣本。最明顯的一個是NUpTool其中焦點代碼是這樣的:
public void manipulatePdf(String src, String dest, int pow)
throws IOException, DocumentException {
// reader for the src file
PdfReader reader = new PdfReader(src);
// initializations
Rectangle pageSize = reader.getPageSize(1);
Rectangle newSize = (pow % 2) == 0 ?
new Rectangle(pageSize.getWidth(), pageSize.getHeight()) :
new Rectangle(pageSize.getHeight(), pageSize.getWidth());
Rectangle unitSize = new Rectangle(pageSize.getWidth(), pageSize.getHeight());
for (int i = 0; i < pow; i++) {
unitSize = new Rectangle(unitSize.getHeight()/2, unitSize.getWidth());
}
int n = (int)Math.pow(2, pow);
int r = (int)Math.pow(2, pow/2);
int c = n/r;
// step 1
Document document = new Document(newSize, 0, 0, 0, 0);
// step 2
PdfWriter writer
= PdfWriter.getInstance(document, new FileOutputStream(String.format(dest, n)));
// step 3
document.open();
// step 4
PdfContentByte cb = writer.getDirectContent();
PdfImportedPage page;
Rectangle currentSize;
float offsetX, offsetY, factor;
int total = reader.getNumberOfPages();
for (int i = 0; i < total;) {
if (i % n == 0) {
document.newPage();
}
currentSize = reader.getPageSize(++i);
factor = Math.min(
unitSize.getWidth()/currentSize.getWidth(),
unitSize.getHeight()/currentSize.getHeight());
offsetX = unitSize.getWidth() * ((i % n) % c)
+ (unitSize.getWidth() - (currentSize.getWidth() * factor))/2f;
offsetY = newSize.getHeight() - (unitSize.getHeight() * (((i % n)/c) + 1))
+ (unitSize.getHeight() - (currentSize.getHeight() * factor))/2f;
page = writer.getImportedPage(reader, i);
cb.addTemplate(page, factor, 0, 0, factor, offsetX, offsetY);
}
// step 5
document.close();
reader.close();
}
(NUpTool.java)
這種方法安排的PDF SRC的頁面的文檔DEST與在2 pow
每個目標頁面上的源頁面。
爲你的使用情況,因此,頁面中,你已經做的一個文件合併之後,你僅僅需要進行後處理,在上面使用pow
爲最小值的常規單個文件其中2 pow
不小於原來的頁數。
來源
2015-09-07 10:50:38
mkl
你能說一下「沒有快樂」嗎?它創造了一個沉悶的報紙呢?將文檔轉換爲摺疊帽子?打印出全部黑色?請[編輯]您的問題以添加缺少的信息。 – usr2564301
對不起,我的意思是它沒有合併成一個頁面,而是合併到一個單獨的文件中。我需要將來自4個不同pdf文件的4頁合併爲1個包含全部4頁(這些頁面全部縮小到其原始尺寸的25%)的單頁pdf頁 – zvikachu