2010-11-09 5 views
20

Existe-t-il un moyen de modifier un PDF à partir de Java?
J'ai un document PDF qui contient des espaces réservés pour le texte que j'ai besoin d'être remplacé en utilisant Java, mais toutes les bibliothèques que j'ai vues ont créé PDF à partir de zéro et de petites fonctionnalités d'édition.
Y at-il de toute façon je peux éditer un PDF ou est-ce impossible?Modification du texte PDF à l'aide de Java

Répondre

11

Vous pouvez le faire avec iText. Je l'ai testé avec le code suivant. Il ajoute un morceau de texte et un cercle rouge sur chaque page d'un fichier PDF existant.

/* requires itextpdf-5.1.2.jar or similar */ 
import java.io.*; 
import com.itextpdf.text.DocumentException; 
import com.itextpdf.text.pdf.*; 

public class AddContentToPDF { 

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

     /* example inspired from "iText in action" (2006), chapter 2 */ 

     PdfReader reader = new PdfReader("C:/temp/Bubi.pdf"); // input PDF 
     PdfStamper stamper = new PdfStamper(reader, 
      new FileOutputStream("C:/temp/Bubi_modified.pdf")); // output PDF 
     BaseFont bf = BaseFont.createFont(
       BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED); // set font 

     //loop on pages (1-based) 
     for (int i=1; i<=reader.getNumberOfPages(); i++){ 

      // get object for writing over the existing content; 
      // you can also use getUnderContent for writing in the bottom layer 
      PdfContentByte over = stamper.getOverContent(i); 

      // write text 
      over.beginText(); 
      over.setFontAndSize(bf, 10); // set font and size 
      over.setTextMatrix(107, 740); // set x,y position (0,0 is at the bottom left) 
      over.showText("I can write at page " + i); // set text 
      over.endText(); 

      // draw a red circle 
      over.setRGBColorStroke(0xFF, 0x00, 0x00); 
      over.setLineWidth(5f); 
      over.ellipse(250, 450, 350, 550); 
      over.stroke(); 
     } 

     stamper.close(); 

    } 
} 
+3

Cet exemple recouvre la page avec votre nouveau texte et l'ellipse. Y a-t-il un moyen de modifier le texte en place? Y a-t-il un moyen de rechercher, de dire un jeton, et de le * remplacer * par mon texte plutôt que de le superposer? – Vihung

+0

Bon point, j'aimerais bien le savoir aussi! – bluish

+0

erreur ....... Fatal signal 7 (SIGBUS), code 2, erreur addr 0xa290903f dans TID 25590 (om.pdfgenerator) –

3

Jetez un oeil à iText et this sample code

+0

Malheureusement cet exemple requiert des champs dans le fichier PDF existant. Vois ma réponse. – bluish

-1

Vous pouvez faire de l'édition limitée avec iText mais PDF est un format de fichier final de sorte que vous ne pouvez pas faire quoi que ce soit trop complexe. J'ai écrit un article expliquant certaines des limitations: PDF format and style information.

Questions connexes