2016-07-21 4 views
0

J'utilise pdfbox 1.8.11 et FOP pour ajouter une marque d'eau à pdf: s. Cela fonctionne bien pour la plupart des fichiers pdf d'entrée. Cependant, je reçois un problème lorsque le fichier est en paysage, le filigrane sera tourné à droite de 90 degrés. J'ai eu un problème similaire avec la signature visible, il est fixe. Merci à la solution dans sign landscape file. Une idée de comment faire la rotation de la marque de l'eau fonctionne? Merci d'avance!Comment ajouter un filigrane à un fichier paysage en utilisant pdfbox

L'image originale filigrane est: Up arrow

Après FOP filigrane l'image est mis en rotation: image rotated

+0

Répondu ici: https://issues.apache.org/jira/browse/PDFBOX-3434 –

+0

:-) merci beaucoup! – ryuukei

+0

Enfin, faites le fonctionner, la solution est d'ajouter une configuration d'orientation dans xsl: fo dans les paramètres de la page. par exemple. \t \t \t ' – ryuukei

Répondre

0

pour présenter des excuses réponse tardive. L'idée de 'marque d'eau' ici pour ajouter ajouter quelques transformations dans le pdf original en utilisant apache fop. Vous pouvez utiliser l'exemple de code java et l'exemple de modèle fo à partir du site Web apache fop.

Dans tous les cas, je vais illustrer l'exemple ici aussi: 1. le code java comment utiliser FOP

import org.apache.fop.apps.*; 
import org.xml.sax.*; 
import java.io.*; 
import javax.xml.transform.*; 
import javax.xml.transform.sax.*; 
import javax.xml.transform.stream.*; 

class rendtest { 

    private static FopFactory fopFactory = FopFactory.newInstance(new File(".").toURI()); 
    private static TransformerFactory tFactory = TransformerFactory.newInstance(); 

    public static void main(String args[]) { 
     OutputStream out; 
     try { 
      //Load the stylesheet 
      Templates templates = tFactory.newTemplates(
       new StreamSource(new File(args[1]))); 

      //First run (to /dev/null) 
      out = new org.apache.commons.io.output.NullOutputStream(); 
      FOUserAgent foUserAgent = fopFactory.newFOUserAgent(); 
      Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, out); 
      Transformer transformer = templates.newTransformer(); 
      transformer.setParameter("page-count", "#"); 
      transformer.transform(new StreamSource(new File(args[0])), 
       new SAXResult(fop.getDefaultHandler())); 

      //Get total page count 
      String pageCount = Integer.toString(driver.getResults().getPageCount()); 

      //Second run (the real thing) 
      out = new java.io.FileOutputStream(args[2]); 
      out = new java.io.BufferedOutputStream(out); 
      try { 
       foUserAgent = fopFactory.newFOUserAgent(); 
       fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, out); 
       transformer = templates.newTransformer(); 
       transformer.setParameter("page-count", pageCount); 
       transformer.transform(new StreamSource(new File(args[0])), 
        new SAXResult(fop.getDefaultHandler())); 
      } finally { 
       out.close(); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 
  1. pour le problème que j'avais pour le rendu paysage pdf: s, dans le modèle fop, il suffit d'ajouter un attribut pour indiquer que ce fichier est en format paysage. L'attribut est de définir reference-orientation = "90". Ensuite, vos autres définitions dans le modèle fop seront appliquées correctement.