2017-07-09 1 views
0

Lorsque j'essaie de redimensionner la page en 7.31 x 11, une partie du contenu de cette page est rognée hors de la fenêtre. Ci-dessous le lien pour mon document de sortie.Pourquoi une partie du contenu est rognée après le redimensionnement de la page au format 7,31 x 11?

http://www.filedropper.com/mynewdocument

Ci-dessous mon code source

import java.awt.print.PrinterException; 
import java.io.File; 
import java.io.IOException; 

import org.apache.pdfbox.pdmodel.PDDocument; 
import org.apache.pdfbox.pdmodel.PDPage; 
import org.apache.pdfbox.pdmodel.common.PDRectangle; 
import org.apache.pdfbox.pdmodel.encryption.InvalidPasswordException; 
import org.apache.pdfbox.pdmodel.interactive.action.PDActionGoTo; 
import org.apache.pdfbox.pdmodel.interactive.documentnavigation.destination.PDPageDestination; 
import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDDocumentOutline; 
import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineItem; 
import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineNode; 

public class PDFConvert { 

    public static void main(String[] args) throws InvalidPasswordException, IOException, PrinterException { 

     File file = new File("d:\\pdf\\000009.pdf"); 
     PDDocument document = PDDocument.load(file); 
     PDPage page1 = document.getDocumentCatalog().getPages().get(0); 

     PDDocumentOutline outline = document.getDocumentCatalog().getDocumentOutline(); 
     PDRectangle mediaBox = new PDRectangle(7.31f * 72, 11.0f * 72); 
     PDPage reSizepage = printBookmark(document, outline, ""); 
     if (reSizepage != null) { 
      reSizepage.setMediaBox(mediaBox); 
     } 

     PDDocument doc = new PDDocument(); 
     doc.addPage(page1); 
     doc.addPage(reSizepage); 

     doc.save("d:\\pdf\\mynewDocument.pdf"); 
     doc.close(); 

    } 

    public static PDPage printBookmark(PDDocument document, PDOutlineNode bookmark, String indentation) 
      throws IOException { 
     PDOutlineItem current = bookmark.getFirstChild(); 

     while (current != null) { 
      System.out.println(current.getTitle()); 

      if (current.getDestination() instanceof PDPageDestination) { 

       if (current.getTitle().equals("Table DP-2. Profile of Selected Social Characteristics: 2000")) { 

        PDPageDestination pd = (PDPageDestination) current.getDestination(); 
        System.out.println("Destination page: " + (pd.retrievePageNumber())); 

        return pd.getPage(); 

       } 
      } 

      printBookmark(document, current, indentation + " "); 
      current = current.getNextSibling(); 
     } 
     return null; 

    } 
} 

Répondre

0

Bien sûr, votre contenu est rognée, c'est ce que vous avez dit de faire. Vous devez réduire le contenu aussi, être préfixer une matrice de mise à l'échelle au flux de contenu de la page:

if (reSizepage != null) 
    { 
     reSizepage.setMediaBox(mediaBox); 

     PDPageContentStream contentStream = new PDPageContentStream(document, reSizepage, PDPageContentStream.AppendMode.PREPEND, false); 
     contentStream.transform(Matrix.getScaleInstance(0.9f, 0.9f)); 
     contentStream.close(); 
    } 
+1

Soyez conscient, cependant, que cela ne ** pas ** déplacer ou redimensionner les annotations en conséquence. – mkl