2017-01-15 4 views
-1

toute tentative d'utiliser le mode paginé des médias, avec par exemple une feuille de style contenant:Mode média paginé CSS3: Un moyen d'empêcher l'insertion du logo @top_right pdfreactor?

<html><header>...<style type="text/css"> ... 
body { counter-reset: chapter 1; 
    counter-reset: section 1; 
    counter-reset: page 1; 
    margin-left: +2%; 
    margin-right: -2%; 
    font-size: 10pt; 
} 
@page { size : a4 ; 
     margin: 8%; 
    @top-left { content: "abbrv"; ; font-size: 8pt;} 
    @top-center { content: "Chapter " counter(chapter) " : " counter(section); font-size: 8pt;} 
    @top-right { content: "$date : $initials"; ; font-size: 8pt; } 
    @bottom-center { content: "Page " counter(page) "/" counter(pages); font-size: 8pt; }  
    } 
    div.chapter { 
    break-before : always; 
    counter-increment: chapter; 
    counter-reset:  section; 
    } 
    section.section { 
    counter-increment: section; 
    } 
    </style></header><body> 
    <div id="chap1" class="chapter"><h1>Chapter 1</h1></div> 
    ...</body></html> 

Notez le ne contient pas au-dessus de toute référence à des images incorporées, mais lorsqu'il est exécuté par PDFreactor le PDF résultant contient une petite rond graphique radio-actif avec le mot "PDF" superposé sur le dessus, dans le contenu en haut à droite, après mon "$ date: $ initiales" contenu.
Je pense que c'est "pdfreactor.svg"?

Alors n'est-il pas possible d'enlever le logo?

Déplacer tous les fichiers nommés PDFreactor .svg dans le répertoire d'installation PDFreactor/ à d'autres endroits n'a pas aidé.

J'utilise la licence gratuite pour un usage personnel et non commercial que j'ai obtenue par courriel de Real Objects, et non la licence d'évaluation.

Est-ce que les utilisateurs personnels non-commerciaux ne sont pas autorisés à désactiver l'inclusion de ce logo dans le bloc d'en-tête de page? Est-ce que quelqu'un a réussi à désactiver l'inclusion de l'image du logo? Si oui, comment?

Aussi, est-ce que quelqu'un sait pourquoi les compteurs de section de chapitre & sont toujours affichés comme 0 dans l'en-tête de page du document ci-dessus?

Java J'utilise est:

import java.io.File; 
import java.io.FileOutputStream; 
import java.util.List; 
import java.util.logging.Level; 
import java.util.logging.Logger; 

import com.realobjects.pdfreactor.Configuration; 
import com.realobjects.pdfreactor.PDFreactor; 
import com.realobjects.pdfreactor.Result; 
import com.realobjects.pdfreactor.Log; 
import com.realobjects.pdfreactor.Record; 
import com.realobjects.pdfreactor.events.DefaultHandler; 

class PDFReactor 
{ 
    public static void main(String args[]) 
    { File html_in = null , pdf_outf=null; 
    String html_in_url = null; 
    FileOutputStream pdf_out=null; 
    boolean expect_in=false , expect_out=false; 
    Logger logger = null; 
    try { 
     logger = Logger.getAnonymousLogger(); 
     logger.setUseParentHandlers(false); 
     logger.setLevel(Level.INFO); 
     logger.addHandler(new DefaultHandler()); 
    }catch(Exception e) 
    { System.err.println("Failed to get logger: " + e.toString()); 
    } 
    for (String arg : args) 
    { switch(arg) 
     { case "-f" : 
      expect_in=true; 
      break; 
     case "-o" : 
      expect_out=true; 
      break; 
     default: 
     if(expect_in) 
     { expect_in = false; 
      try { 
       html_in = new File(arg); 
       html_in_url = html_in.toURI().toURL().toString(); 
      } catch (Exception e) 
      { System.err.println("new File (" + html_in + ") failed : "+e.toString()); 
      }    
     }else 
     if(expect_out) 
     { expect_out = false; 
      try { 
       pdf_outf = new File(arg); 
       pdf_out = new FileOutputStream(pdf_outf); 
      } catch (Exception e) 
      { System.err.println("new File (" + pdf_out + ") failed : "+e.toString()); 
      }    
     } 
     }  
    } 
    if((html_in != null) && (pdf_out != null) && (logger != null)) 
    { 
     try 
     { PDFreactor r = new PDFreactor(); 
     if(r != null) 
     { Configuration configuration = new Configuration(); 
      configuration.setLicenseKey(
      my_license_key_xml 
     ); 
      configuration.setDocument(html_in_url); 
      configuration.setLogger(logger); 
      List<Configuration.ViewerPreferences> prefls = configuration.getViewerPreferences(); 
      int n=prefls.size() + 1, i=0; 
      Configuration.ViewerPreferences[] prefs = new Configuration.ViewerPreferences[ n ]; 
      for(Configuration.ViewerPreferences p : prefls) 
      { prefs[i] = p; 
      i+=1; 
      } 
      prefs[i]= Configuration.ViewerPreferences.PAGE_MODE_USE_OUTLINES; 
      configuration.setViewerPreferences(prefs); 
      configuration.setAddLinks(true); 
      configuration.setAddBookmarks(true); 
      Result result = r.convert(configuration, pdf_out);   
      pdf_out.close(); 
      if(result != null) 
      { Log l = result.getLog(); 
      if(l != null) 
      { for(Record rec : l.getRecords()) 
       System.err.println(rec.getMessage()); 
      }else 
      { System.out.println("No log records produced."); 
      } 
      } 
     }else 
     { System.err.println("new PDFreactor failed."); 
     } 
     }catch(Exception e) 
     { System.err.println("PDFreactor conversion failed: "+e.toString()); 
     } 
    }else 
    { System.err.println("Expected -f <html input file name> -o <pdf output file name> arguments."); 
    } 
    } 
} 

Répondre

1

Tous les fichiers PDF créés avec PDFreactor en utilisant une "licence personnelle" contiennent ce logo PDFreactor. Ceci est prévu et appelé «notices identifiant PDFreactor» dans le contrat de licence du logiciel PDFreactor que vous avez accepté lors de la demande d'une clé «Free Personal License» et en utilisant le logiciel. Selon l'accord, ces avis (tels que le logo) ne doivent en aucun cas être retirés ou altérés. Si vous avez besoin de fichiers PDF sans préavis, vous devez acheter et utiliser une licence commerciale de PDFreactor. En ce qui concerne les problèmes de compteur: Vous définissez les compteurs dans la mauvaise portée. Pour les utiliser dans des boîtes de marge de page, vous devez initialiser les compteurs dans l'élément « @page » règle et non dans le « corps » comme ceci:

@page:first { 
    counter-reset: chapter 0 section 0; 
} 

En outre, plusieurs propriétés « contre-reset » passer outre précédent ceux-là, n'utilisez donc qu'une seule propriété "counter-reset" pour plusieurs compteurs comme indiqué ci-dessus.

+0

Merci! Cela confirme ce que je pensais. Bien sûr, on pourrait écrire un programme basé sur pdfedit pour enlever ces logos - mais je ne le ferai pas. – JVD

+0

il est dommage qu'il n'y ait pas d'équivalent open-source, pourtant, qui permet d'utiliser les médias paginés CSS3 et les fonctions CSS & HTML 5 modernes, même si j'espère pouvoir les assembler à partir des feuilles de style Apache FOP + XSL + TeX ou groff/troff + ghostscript, et j'utilise PDFreactor comme implémentation de référence et standard jusqu'à ce que cela fonctionne. Par ailleurs, il est facile de créer des documents avec HTML 5 + CSS3 grâce à PDFreactor - bien que les fonctionnalités de médias paginés spéciaux (par exemple footnotes & header + footer content) nécessitent une gestion JavaScript spéciale pour s'afficher correctement dans un navigateur. – JVD