我正在尝试将 html 用于打印文档。我有希望出现在每个打印页面上的标题,并且我正在使用以下代码:
<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>
如果我从 Chrome 自己的打印对话框中预览它,它看起来就像我想要的那样。如果从 Chrome 的打印对话框打印出来,它看起来也是正确的(与预览相同,至少对我的眼球而言)。
如果我通过 CUPS 的 xhtmltopdf 过滤器(模拟打印)运行它,就会出现几个缺陷。
标题在第一页上看起来是正确的,但不会像在 Chrome 自己的打印对话框中那样出现在任何后续页面上。这证明它正在从媒体打印选择器中设置一些样式,否则我只会看到普通的输入。这甚至是媒体打印选择器的问题,还是与位置固定有关?
第二个问题是其他元素(“问题”类)在 xhtmltopdf 中的渲染比从 Chrome 的打印对话框中渲染的要大得多。
这也是 CSS 问题,还是 CUPS 特有的问题?我对此一无所知,但我似乎记得几年前,一些浏览器至少在怪癖模式下具有元素的默认样式。Chrome 是否有一种风格适用于 xhtmltopdf 错过的风格?有其他事情发生吗?
不确定这是否有帮助,但我包括了 cups 过滤器的输出:
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.