2017-03-31 80 views
0

我想更改我的pdf中每個頁面的mediabox條目。如何使用iText設置MediaBox值

https://i.imgur.com/mSqoIch.pngenter image description here

有沒有辦法做到這一點與iText的,這樣下面的值將用於

mediaBox[0] = 0 
mediaBox[1] = 0 
mediaBox[2] = 595.22 
mediaBox[0] = 842 
+1

iText的解決這個問題5或iText 7?您是從頭開始創建文檔,還是要更改現有文檔中的MediaBox? (請注意,如果您更改現有文檔的媒體框,則現有內容不會重排,如果您不小心,可以輕鬆剪輯現有內容。) –

回答

0

可以通過設置mediaboxes這樣

File outputPdf = File.createTempFile("moveMediabox", ".pdf"); 
PdfReader reader = new PdfReader(ByteSource.wrap(inputPdfBytes).openBufferedStream()); 
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(outputPdf)); 
int numberOfPages = reader.getNumberOfPages(); 

for (int i = 1; i <= numberOfPages; i++) { 
     PdfDictionary pagedict = reader.getPageN(i); 
     PdfArray mediabox = pagedict.getAsArray(PdfName.MEDIABOX); 
     int x = mediabox.getAsNumber(0).intValue(); 
     int y = mediabox.getAsNumber(1).intValue(); 
     if (x != 0 && y != 0){ 
      isChanged = true; 
      mediabox.set(0, new PdfNumber(0)); 
      mediabox.set(1, new PdfNumber(0)); 
      mediabox.set(2, new PdfNumber(mediabox.getAsNumber(2).intValue() - x)); 
      mediabox.set(3, new PdfNumber(mediabox.getAsNumber(3).intValue() - y)); 
     } 
     else{ 
      LOG.info("no need to repair media box, already at x:0 y:0"); 
     } 
    }