2011-10-04 2 views
1

J'utilise la bibliothèque iText, et je suis en train d'ajouter un filigrane au bas de la page. Le filigrane est simple, il doit être centré et a une image sur la gauche et un texte sur la droite.Je ne sais pas comment créer un centré « image + texte » filigrane dans les fichiers PDF avec iText (Java)

À ce stade, j'ai l'image et le texte dans un format .png. Je peux calculer la position où je veux mettre l'image (centrée) en calculant la taille de la page et la taille de l'image, mais maintenant je veux inclure le texte comme texte (meilleure lisibilité, etc.).

Puis-je intégrer l'image et le texte dans certains composants, puis calculer la position que je fais maintenant? Une autre solution ou idée?

Voici mon code actuel:

try { 
     PdfReader reader = new PdfReader("example.pdf"); 
     int numPages = reader.getNumberOfPages(); 
     PdfStamper stamp = new PdfStamper(reader, new FileOutputStream("pdfWithWatermark.pdf")); 

     int i = 0; 
     Image watermark = Image.getInstance("watermark.png"); 
     PdfContentByte addMark; 

     while (i < numPages) { 
      i++; 
      float x = reader.getPageSizeWithRotation(i).getWidth() - watermark.getWidth(); 
      watermark.setAbsolutePosition(x/2, 15); 
      addMark = stamp.getUnderContent(i); 
      addMark.addImage(watermark); 
     } 
     stamp.close(); 

    } 
    catch (Exception i1) { 
     logger.info("Exception adding watermark."); 
     i1.printStackTrace(); 
    } 

Merci à l'avance!

+0

Je vais chercher une solution texte-.png (java.awt.Graphics.drawString()?) Et utilisez un API graphique pour mettre les 2 ensemble. – Wivani

+0

Le fait est que je ne veux pas mettre le texte au format PNG, j'ai besoin de le mettre en "mode texte". – Noob

Répondre

0

est un peu moche mais tu ne peux pas ajouter l'image et le texte à une table et le centre il?

1

vous feriez mieux de vérifier ceci:

import com.lowagie.text.*; 
import java.io.*; 
import com.lowagie.text.pdf.*; 
import java.util.*; 

class pdfWatermark 
{ 
    public static void main(String args[]) 
    { 
    try 
    { 
     PdfReader reader = new PdfReader("text.pdf"); 
     int n = reader.getNumberOfPages(); 

     // Create a stamper that will copy the document to a new file 
     PdfStamper stamp = new PdfStamper(reader, 
     new FileOutputStream("text1.pdf")); 
     int i = 1; 
     PdfContentByte under; 
     PdfContentByte over; 

     Image img = Image.getInstance("watermark.jpg"); 
     BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, 
     BaseFont.WINANSI, BaseFont.EMBEDDED); 

     img.setAbsolutePosition(200, 400); 

     while (i < n) 
     { 
     // Watermark under the existing page 
     under = stamp.getUnderContent(i); 
     under.addImage(img); 

     // Text over the existing page 
     over = stamp.getOverContent(i); 
     over.beginText(); 
     over.setFontAndSize(bf, 18); 
     over.showText("page " + i); 
     over.endText(); 

     i++; 
     } 

     stamp.close(); 

    } 
    catch (Exception de) 
    {} 
    } 
} 

(source)

+0

Le lien solitaire est [considéré comme une mauvaise réponse] (http://stackoverflow.com/faq#deletion) car il n'a aucune signification en lui-même et la ressource cible n'est pas garantie d'être en vie dans le futur. Veuillez essayer d'inclure au moins un résumé des informations que vous liez. – j0k

Questions connexes