Bonjour à tous,
J'ai un soucis avec Itext je voudrais modifier du texte dans un pdf. J'ai un système de clef valeur dans mon pdf d'origine. Aucun soucis pour le remplacement du texte en général. Voici le code que j'utilise.
Par contre les modifications ne sont pas effective dans l'entête et le pied de page ni dans certains paragraphe qui sont lié a un sommaire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 private void editPdf(Map<String, String> editInfo) throws FileNotFoundException, DocumentException, IOException { PdfReader reader = new PdfReader(inputFilePdf); for(int y = 1; y < reader.getNumberOfPages()+1; y++ ) { PdfDictionary dict = reader.getPageN(y); //PdfObject object = dict.getDirectObject(PdfName.CONTENTS); PdfArray refs = null; if (dict.get(PdfName.CONTENTS).isArray()) { refs = dict.getAsArray(PdfName.CONTENTS); } else if (dict.get(PdfName.CONTENTS).isIndirect()) { refs = new PdfArray(dict.get(PdfName.CONTENTS)); } for (Map.Entry<String, String> entry : editInfo.entrySet()) { for (int i = 0; i < refs.getArrayList().size(); i++) { PRStream stream = (PRStream) refs.getDirectObject(i); byte[] data = PdfReader.getStreamBytes(stream); stream.setData(new String(data).replace(entry.getKey() , entry.getValue()).getBytes()); } } } PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(outputFile)); stamper.close(); reader.close(); }
Si quelqu'un a une petite idée je suis preneur. Je penses qu'il faut traiter entête et pied de page différemment ainsi que les paragraphe lié au sommaire mais je n'ai pour le moment pas trouvé de solution.Ou alors une solution pour parcourir tout les "texte" du document pdf et remplacer les clef chose que j'ai réussi à faire avec POI mais sur un document Word.
Ma version de Itext est la 4.
Merci d'avance.
Partager