我目前正在編寫一個應用程序,它使用iText 2.1.7將PDF格式「轉換爲」我們的需求。PDF縮放/導入已修剪/裁剪的頁面
我們基本上採用肖像PDF,並縮小頁面大小,因此我們可以在新PDF的一個橫向頁面上放置原始PDF的2頁。我們還在頁面底部留出一些空間用於後期處理。
這個過程的工作時間應該是90%。
但是,我們收到了由內容部門裁剪/裁剪的PDF,當我們在Acrobat中查看此PDF時,它看起來像是被重視。但是,當我們處理它時,新的PDF包含整個原始MediaBox和裁切線。
下面是我們使用的代碼以及問題輸出的外觀。
File tempFile = new File(tempFilename);
PdfReader reader = new PdfReader(originalPdfFile);
Document doc = new Document(new RectangleReadOnly(842f, 595f), 0, 0, 0, 0);
PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream(tempFile));
doc.open();
for (int i = 1; i < reader.getNumberOfPages(); i = i + 2) {
doc.newPage();
PdfContentByte cb = writer.getDirectContent();
PdfImportedPage page = writer.getImportedPage(reader, i); // page #1
float documentWidth = doc.getPageSize().getWidth()/2;
float documentHeight = doc.getPageSize().getHeight() - 65f;
float pageWidth = page.getWidth();
float pageHeight = page.getHeight();
float widthScale = documentWidth/pageWidth;
float heightScale = documentHeight/pageHeight;
float scale = Math.min(widthScale, heightScale);
float offsetX = (documentWidth - (pageWidth * scale))/2;
float offsetY = 65f; //100f
cb.addTemplate(page, scale, 0, 0, scale, offsetX, offsetY);
PdfImportedPage page2 = writer.getImportedPage(reader, i+1); // page #2
pageWidth = page.getWidth();
pageHeight = page.getHeight();
widthScale = documentWidth/pageWidth;
heightScale = documentHeight/pageHeight;
scale = Math.min(widthScale, heightScale);
offsetX = ((documentWidth - (pageWidth * scale))/2) + documentWidth;
offsetY = 65f; //100f
cb.addTemplate(page2, scale, 0, 0, scale, offsetX, offsetY);//430f
}
doc.close();
原來在Acrobat中:
修改雜技演員,顯示不希望pretrim內容: