2016-07-10 25 views
0

Ich versuche HTML für gedruckte Dokumente zu verwenden. Ich habe Header, die ich auf jeder gedruckten Seite angezeigt werden soll, und ich bin mit dem folgenden Code:Welche Teile von Druckmedien CSS werden die Cups xhtmltopdf Filter Ehre?

<style type="text/css"> 
    @media print { 
    div.header { 
     position: fixed; 
     width: 100%; 
     top: 0; 
    } 
    #student_name, #date_submitted { 
     background: transparent; 
     border: none; 
     border-bottom: 1px solid #000000; 
     width: 55%; 
    } 
    } 
    div.twocol { 
    width: 50%; 
    float: left; 
    } 
    div.problem { 
    display: inline-block; 
    width: 5.5em; 
    font: 300% monospace; 
    text-align: right; 
    margin: 2.5em 0 2.5em 0; 
    } 
    div.operand2, div.operation { 
    float: right; 
    border-bottom: 0.1em black solid; 
    } 
    } 
</style> 
</head> 
<body> 
<div class="header"> 
    <div class="twocol"> 
    <label class="student_name" for="student_name">Name</label> 
    <input class="student_name" type="text" id="student_name"></input> 
    </div> 
    <div class="twocol"> 
    <label class="date_submitted" for="date_submitted">Date</label> 
    <input class="date_submitted" type="text" id="date_submitted"></input> 
    </div> 
</div> 
<div class="problem"> 
    <div class="operand1"></div> 
    <div class="operand2"></div> 
    <div class="operation">+</div> 
</div> 

Wenn ich diese Vorschau aus Chrome eigenen Druckdialog, sieht es ziemlich so, wie ich beabsichtige. Es sieht auch korrekt aus, wenn es über den Druckdialog von Chrome gedruckt wird (identisch mit der Vorschau, zumindest für meinen Augapfel).

Wenn ich dies durch CUPS xhtmltopdf Filter (um Druck zu simulieren) laufen, dann erscheinen mehrere Fehler.

Die Kopfzeile sieht auf der ersten Seite korrekt aus, wird jedoch nicht auf den nachfolgenden Seiten angezeigt, wie dies beim eigenen Druckdialog von Chrome der Fall ist. Dies beweist, dass es einige Dinge von der Media Print Selector Styling ist, sonst würde ich nur einfache Eingaben sehen. Ist das überhaupt ein Problem mit dem Media-Print-Selector oder hat das etwas mit Positions-Fixed zu tun?

Das zweite Problem ist, dass die anderen Elemente (Klasse "Problem") von xhtmltopdf viel größer wiedergeben als aus dem Druckdialog von Chrome.

From ChromeFrom xhtmltopdf

Ist das auch ein CSS-Problem oder etwas eigentümlich von CUPS? Ich bin irgendwie ratlos, aber ich erinnere mich seit Jahren, dass einige Browser Standardstile für Elemente hatten, zumindest im Quirkmodus. Gibt es einen Stil, den Chrome anwendet, den xhtmltopdf vermisst? Ist etwas anderes los?

Nicht sicher, ob dies helfen wird, aber ich bin auch Ausgabe aus dem Becher Filter:

john$ cupsfilter /mnt/Linkstation/Documents/Education/\!Curricula/Arithmetic/Arithmetic\ -\ g1\ -\ Addition\,\ no\ carrying.html > test2.pdf 
DEBUG: argv[0]="cupsfilter" 
DEBUG: argv[1]="1" 
DEBUG: argv[2]="john" 
DEBUG: argv[3]="Arithmetic - g1 - Addition, no carrying.html" 
DEBUG: argv[4]="1" 
DEBUG: argv[5]="" 
DEBUG: argv[6]="/mnt/Linkstation/Documents/Education/!Curricula/Arithmetic/Arithmetic - g1 - Addition, no carrying.html" 
DEBUG: envp[0]="<CFProcessPath>" 
DEBUG: envp[1]="CONTENT_TYPE=text/html" 
DEBUG: envp[2]="CUPS_DATADIR=/usr/share/cups" 
DEBUG: envp[3]="CUPS_FONTPATH=/usr/share/cups/fonts" 
DEBUG: envp[4]="CUPS_SERVERBIN=/usr/libexec/cups" 
DEBUG: envp[5]="CUPS_SERVERROOT=/private/etc/cups" 
DEBUG: envp[6]="LANG=en_US.UTF8" 
DEBUG: envp[7]="PATH=/usr/libexec/cups/filter:/usr/bin:/usr/sbin:/bin:/usr/bin" 
DEBUG: envp[8]="PPD=/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/Resources/Generic.ppd" 
DEBUG: envp[9]="PRINTER_INFO=cupsfilter" 
DEBUG: envp[10]="PRINTER_LOCATION=Unknown" 
DEBUG: envp[11]="PRINTER=cupsfilter" 
DEBUG: envp[12]="RIP_MAX_CACHE=128m" 
DEBUG: envp[13]="USER=john" 
DEBUG: envp[14]="CHARSET=utf-8" 
DEBUG: envp[15]="FINAL_CONTENT_TYPE=application/pdf" 
INFO: xhtmltopdf (PID 29607) started. 
DEBUG: Page = 612x792; 17,19 to 595,773 
Jul 10 16:42:57 cupsfilter[29607] <Warning>: CGSConnectionByID: 0 is not a valid connection ID. 
Jul 10 16:42:57 cupsfilter[29607] <Warning>: Invalid Connection ID 0 
DEBUG: Loading "file:///mnt/Linkstation/Documents/Education/!Curricula/Arithmetic/Arithmetic%20-%20g1%20-%20Addition,%20no%20carrying.html" 
DEBUG: Waiting for HTML file to load, 10% 
Jul 10 16:42:57 cupsfilter[29607] <Warning>: CGSConnectionByID: 0 is not a valid connection ID. 
Jul 10 16:42:57 cupsfilter[29607] <Warning>: CGSConnectionByID: 0 is not a valid connection ID. 
Jul 10 16:42:57 cupsfilter[29607] <Warning>: CGSConnectionByID: 0 is not a valid connection ID. 
DEBUG: Waiting for HTML file to load, 50% 
DEBUG: Waiting for HTML file to load, 50% 
DEBUG: Page title="Basic Addition, No Carrying" 
DEBUG: Bounds of document are [0.0 0.0 579.0 2608.0] 
DEBUG: Starting page 1: [0.0 0.0 578.8 681.0] 
DEBUG: Starting page 2: [0.0 681.0 578.8 754.8] 
DEBUG: Starting page 3: [0.0 1435.8 578.8 685.2] 
DEBUG: Starting page 4: [0.0 2121.0 578.8 754.8] 
INFO: xhtmltopdf (PID 29607) exited with no errors. 

Antwort

0

Ich weiß nicht, was „CUP‘ xhtmltopdf“ist (Schnellsuche nicht nützliche Informationen gefunden) aber ich bin mir ziemlich sicher, dass Sie besser paged media für Ihre PDF-Erstellung verwenden würden.

Der Nachteil ist, dass moderne Browser Ihre Vorschau dort nicht Regeln erlauben, benötigen Sie Lösungen wie PrinceXML, PDFReactor oder wkhtmltopdf. Auf diese Weise können Sie bestimmte CSS-Regeln verwenden, um zu erreichen, was Sie wollen.

Beispiel:

@page { 

    @top-left { 
     content: Name __________________; 
     font-size: 9pt; 
     color: #333; 
    } 

    @top-right { 
     content: Date __________________; 
     font-size: 9pt; 
     color: #333; 
    } 
} 
+0

Dies ist meine Frage nicht beantwortet. CUPS ist das Druckersystem unter Mac OSX und den meisten Linux-Systemen. –