2010-11-09 17 views
20

Czy istnieje sposób edycji pliku PDF z Java?
Mam dokument PDF, który zawiera symbole zastępcze dla tekstu, który należy zastąpić przy użyciu języka Java, ale wszystkie biblioteki, które widziałem, utworzono plik PDF od podstaw i małą funkcjonalność edycji.
Czy mogę mimo to edytować plik PDF lub jest to niemożliwe?Edycja tekstu w formacie PDF za pomocą Java

Odpowiedz

11

Możesz to zrobić pod numerem iText. Przetestowałem to za pomocą następującego kodu. Dodaje fragment tekstu i czerwone kółko na każdej stronie istniejącego pliku PDF.

/* 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

Ten przykład nakłada stronę na nowy tekst i elipsę. Czy istnieje sposób modyfikacji tekstu w miejscu? Czy istnieje sposób na wyszukanie, powiedzmy tokena i * zastąpienie * go moim tekstem, a nie nałożenie go? – Vihung

+0

Dobrze, chciałbym też o tym wiedzieć! – bluish

+0

błąd ....... Błąd sygnału 7 (SIGBUS), kod 2, adres błędu 0xa290903f w tid 25590 (om.pdfgenerator) –

-1

można zrobić ograniczoną edycję z itext ale PDF jest formatem pliku end, więc nie można zrobić niczego zbyt skomplikowany. Napisałem artykuł wyjaśniający niektóre z ograniczeń: PDF format and style information.

Powiązane problemy