2017-01-15 2 views
-1

Mit jedem Versuch, ausgelagerten Medien-Modus zu verwenden, ein Stylesheet mit zum Beispiel enthalten:CSS3 ausgelagerter Medien-Modus: Kann verhindert werden, dass das @top_right PDFreactor-Logo eingefügt wird?

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

Beachten Sie die oben nicht auf eingebettete Bilder ANY Verweis enthält, aber wenn die resultierende PDF durch PDFreactor laufen enthält eine kleine Runde radioaktive Grafik mit dem Wort "PDF" überlagert, im @ top-rechts Inhalt, nach meinem "$ date: $ initialen" Inhalt.
Ich denke, das ist "pdfreactor.svg"?

So ist es nicht möglich, das Logo zu entfernen?

Verschieben aller Dateien mit dem Namen PDFreactor .svg unter dem PDFreactor/ Installationsverzeichnis zu anderen Standorten nicht helfen.

Ich verwende die frei-für-persönliche-nicht-kommerzielle Lizenz, die ich per E-Mail von Real Objects erhalten, NICHT die Evaluierungslizenz.

Sind persönliche nichtkommerzielle Benutzer nicht berechtigt, die Aufnahme dieses Logos in den Seitenkopfblock zu deaktivieren?

Ist es jemandem gelungen, die Aufnahme des Logo-Bildes zu deaktivieren - wenn ja, wie?

Weiß jemand auch, warum die Abschnittszähler des Abschnitts & immer als 0 in der Seitenkopfzeile des obigen Dokuments angezeigt werden?

Die Java Ich verwende ist:

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."); 
    } 
    } 
} 

Antwort

1

Alle mit PDFreactor erstellten PDF-Dateien ein "Free Personal License" dieses PDFreactor Logo enthalten werden. Dies wird als "Hinweise, die PDFreactor identifizieren" in der PDFreactor Software-Lizenzvereinbarung, die Sie bei der Anforderung eines "Free Personal License" -Schlüssels und unter Verwendung der Software akzeptiert haben, bezeichnet und bezeichnet. Gemäß der Vereinbarung dürfen diese Hinweise (wie das Logo) in keiner Weise entfernt oder manipuliert werden. Sollten Sie PDFs ohne Hinweise benötigen, müssen Sie eine kommerzielle Lizenz von PDFreactor kaufen und verwenden.

Zu den Zählerproblemen: Sie definieren die Zähler im falschen Bereich. Um sich in Seitenrand-Boxen zu verwenden, haben Sie die Zähler in der „@ page-Regel“ zu initialisieren, und nicht in dem „Körper“ Element wie folgt:

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

Auch mehrere „counter-reset“ Eigenschaften außer Kraft setzen vorherige Einsen, verwenden Sie daher nur eine "counter-reset" -Eigenschaft für mehrere Zähler, wie oben gezeigt.

+0

Danke! Das bestätigt, was ich dachte. Natürlich könnte man ein pdfedit-basiertes Programm schreiben, um diese Logos zu entfernen - aber ich werde es nicht tun. – JVD

+0

ist es eine Schande, es gibt keine Open-Source-Entsprechung, aber , die CSS3 paged Medien und moderne CSS & HTML 5 Funktionen ermöglicht, obwohl ich hoffe, irgendwann aus Apache FOP + XSL Stylesheets + TeX oder zusammen groff/troff + ghostscript und verwende PDFreactor als Referenzimplementierung und Standard, bis dies funktioniert. Inzwischen ist es einfach, Dokumente zu erstellen, die sowohl mit HTML 5 + CSS3 dank PDFreactor gut durchblättern und drucken - obwohl die speziellen Seitenmedien (zB Fußnoten & Kopf- und Fußzeileninhalte) spezielle JavaScript-Funktionen benötigen, um in einem Browser gut angezeigt zu werden. – JVD

Verwandte Themen