Какие части печатных СМИ css выполняет фильтр cups xhtmltopdf?
Я пытаюсь использовать 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 (идентично предварительному просмотру, по крайней мере, моему глазному яблоку).
Если я пропущу это через фильтр 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.
1 ответ
Я не знаю, что такое "CUPS' xhtmltopdf" (быстрый поиск не нашел полезной информации), но я почти уверен, что вам было бы лучше использовать постраничный носитель для создания PDF.
Недостатком является то, что современные браузеры не позволяют вам просматривать там правила CSS, вам понадобятся такие решения, как PrinceXML, PDFReactor или wkhtmltopdf. Таким образом, вы можете использовать определенные правила CSS, чтобы выполнить то, что вы хотите.
пример:
@page {
@top-left {
content: Name __________________;
font-size: 9pt;
color: #333;
}
@top-right {
content: Date __________________;
font-size: 9pt;
color: #333;
}
}