Skip to content

Commit b767444

Browse files
committed
BK-1614 Footer and header not showed correctly in PDF output
1 parent bb0daab commit b767444

9 files changed

Lines changed: 104 additions & 66 deletions

File tree

lib/booktype/apps/convert/templates/convert/body_mpdf.html

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,28 @@
1+
{% if show_header %}
2+
<htmlpageheader name="header-left" style="display:none">
3+
<div style="text-align: left;">{{ title }}</div>
4+
</htmlpageheader>
5+
6+
<htmlpageheader name="header-right" style="display:none">
7+
<div style="text-align: right;">{{ title }}</div>
8+
</htmlpageheader>
9+
10+
<sethtmlpageheader page="odd" name="header-right" value="on" />
11+
<sethtmlpageheader page="even" name="header-left" value="on" />
12+
{% endif %}
13+
14+
{% if show_footer %}
15+
<htmlpagefooter name="footer-left" style="display:none">
16+
<div style="text-align: left;">{PAGENO}</div>
17+
</htmlpagefooter>
18+
19+
<htmlpagefooter name="footer-right" style="display:none">
20+
<div style="text-align: right;">{PAGENO}</div>
21+
</htmlpagefooter>
22+
23+
<sethtmlpagefooter page="odd" name="footer-right" value="on" />
24+
<sethtmlpagefooter page="even" name="footer-left" value="on" />
25+
{% endif %}
126

227
{% for item in book_items %}
328

@@ -15,4 +40,5 @@
1540
<h1>{{ item.title }}</h1>
1641
{% endif %}
1742

18-
{% endfor %}
43+
{% endfor %}
44+

lib/booktype/apps/convert/templates/convert/body_screenpdf.html

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,28 @@
1+
{% if show_header %}
2+
<htmlpageheader name="header-left" style="display:none">
3+
<div style="text-align: left;">{{ title }}</div>
4+
</htmlpageheader>
5+
6+
<htmlpageheader name="header-right" style="display:none">
7+
<div style="text-align: right;">{{ title }}</div>
8+
</htmlpageheader>
9+
10+
<sethtmlpageheader page="odd" name="header-right" value="on" />
11+
<sethtmlpageheader page="even" name="header-left" value="on" />
12+
{% endif %}
13+
14+
{% if show_footer %}
15+
<htmlpagefooter name="footer-left" style="display:none">
16+
<div style="text-align: left;">{PAGENO}</div>
17+
</htmlpagefooter>
18+
19+
<htmlpagefooter name="footer-right" style="display:none">
20+
<div style="text-align: right;">{PAGENO}</div>
21+
</htmlpagefooter>
22+
23+
<sethtmlpagefooter page="odd" name="footer-right" value="on" />
24+
<sethtmlpagefooter page="even" name="footer-left" value="on" />
25+
{% endif %}
126

227
{% for item in book_items %}
328

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,5 @@
11
{% load convert_tags %}
22

3-
<htmlpageheader name="header-left" style="display:none">
4-
<div style="text-align: center;">{{ title }}</div>
5-
</htmlpageheader>
6-
7-
<htmlpageheader name="header-right" style="display:none">
8-
<div style="text-align: center;">{{ title }}</div>
9-
</htmlpageheader>
10-
11-
<htmlpagefooter name="footer-left" style="display:none">
12-
<div style="text-align: left;">{PAGENO}</div>
13-
</htmlpagefooter>
14-
15-
<htmlpagefooter name="footer-right" style="display:none">
16-
<div style="text-align: right;">{PAGENO}</div>
17-
</htmlpagefooter>
18-
193
<h1>Antiporta</h1>
204

215
<pagebreak />
@@ -28,4 +12,4 @@ <h1 class="book-title">{{ title }}</h1>
2812
<h1>Impressum</h1>
2913
<p>Created with Booktype.</p>
3014

31-
<tocpagebreak paging="on" links="on" toc-bookmarkText="Content list" resetpagenum="0" outdent="2em" pagenumstyle="1" toc-pagenumstyle="i" toc-suppress="1" suppress="0" toc-resetpagenum="0" />
15+
<tocpagebreak paging="on" links="on" toc-bookmarkText="Content list" resetpagenum="0" pagenumstyle="1" toc-pagenumstyle="i" toc-suppress="1" suppress="0" toc-resetpagenum="1" />

lib/booktype/apps/convert/templates/convert/frontmatter_screenpdf.html

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,3 @@
1-
<htmlpageheader name="header-left" style="display:none">
2-
<div style="text-align: center;">{{ title }}</div>
3-
</htmlpageheader>
4-
5-
<htmlpageheader name="header-right" style="display:none">
6-
<div style="text-align: center;">{{ title }}</div>
7-
</htmlpageheader>
8-
9-
<htmlpagefooter name="footer-left" style="display:none">
10-
<div style="text-align: left;">{PAGENO}</div>
11-
</htmlpagefooter>
12-
13-
<htmlpagefooter name="footer-right" style="display:none">
14-
<div style="text-align: right;">{PAGENO}</div>
15-
</htmlpagefooter>
16-
171
{% if cover_image != '' %}
182
<pagebreak />
193
{% endif %}

lib/booktype/apps/convert/templates/convert/style_mpdf.css

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,25 @@
88
margin-top: {{ top_margin }}mm;
99
margin-bottom: {{ bottom_margin }}mm;
1010

11-
margin-header: {{ header_margin }}mm;
11+
{% if show_footer %}
1212
margin-footer: {{ footer_margin }}mm;
13+
14+
odd-footer-name: html_footer-right;
15+
even-footer-name: html_footer-left;
16+
{% endif %}
17+
18+
{% if show_header %}
19+
margin-header: {{ header_margin }}mm;
20+
21+
odd-header-name: html_header-right;
22+
even-header-name: html_header-left;
23+
{% endif %}
24+
1325

1426
{% if crop_marks %}
1527
marks: crop cross;
1628
{% endif %}
29+
}
1730
}
1831

1932
h1.book-title {

lib/booktype/apps/convert/templates/convert/style_screenpdf.css

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,19 @@
99

1010
margin-header: {{ header_margin }}mm;
1111
margin-footer: {{ footer_margin }}mm;
12-
13-
{% if crop_marks %}
14-
marks: crop cross;
12+
13+
{% if show_footer %}
14+
margin-footer: {{ footer_margin }}mm;
15+
16+
odd-footer-name: html_footer-right;
17+
even-footer-name: html_footer-left;
18+
{% endif %}
19+
20+
{% if show_header %}
21+
margin-header: {{ header_margin }}mm;
22+
23+
odd-header-name: html_header-right;
24+
even-header-name: html_header-left;
1525
{% endif %}
1626
}
1727

lib/booktype/convert/mpdf/converter.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -308,8 +308,11 @@ def _toc(depth, toc_items):
308308

309309
book_toc = _toc(0, parse_toc_nav(book))
310310

311-
data = {'book_items': book_toc}
312-
data.update(self.get_extra_body_data(book))
311+
data = self._get_data(book)
312+
data.update(self.get_extra_data(book))
313+
data.update({
314+
'book_items': book_toc
315+
})
313316

314317
if self.theme_name != '':
315318
body_name = get_body(self.theme_name, self.name)
@@ -487,6 +490,11 @@ def _get_data(self, book):
487490
- Dictionary with default data for the templates
488491
"""
489492

493+
show_header, show_footer = True, True
494+
if 'settings' in self.config:
495+
show_header = self.config['settings'].get('show_header', '') == 'on'
496+
show_footer = self.config['settings'].get('show_footer', '') == 'on'
497+
490498
return {
491499
"title": get_refines(book.metadata, 'title-type', 'main'),
492500
"subtitle": get_refines(book.metadata, 'title-type', 'subtitle'),
@@ -497,7 +505,10 @@ def _get_data(self, book):
497505
"isbn": get_metadata(book.metadata, 'identifier'),
498506
"language": get_metadata(book.metadata, 'language'),
499507

500-
"metadata": book.metadata
508+
"metadata": book.metadata,
509+
510+
"show_header": show_header,
511+
"show_footer": show_footer
501512
}
502513

503514
def _create_frontmatter(self, book):

lib/booktype/convert/mpdf/styles.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,9 @@ def create_default_style(config, name, extra = {}):
9393
'side_margin': get_value(config['settings'], 'side_margin'),
9494
'gutter': get_value(config['settings'], 'gutter'),
9595
'header_margin': get_value(config['settings'], 'header_margin'),
96-
'footer_margin': get_value(config['settings'], 'footer_margin')
96+
'footer_margin': get_value(config['settings'], 'footer_margin'),
97+
'show_header': get_value(config['settings'], 'show_header') == 'on',
98+
'show_footer': get_value(config['settings'], 'show_footer') == 'on',
9799
}
98100
data.update(extra)
99101

scripts/booktype2mpdf.php

Lines changed: 7 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
error_reporting(0);
23

34
/* Parse the arguments */
45

@@ -19,15 +20,13 @@
1920
/* Include mPDF library */
2021
include($options["mpdf"]."/mpdf.php");
2122

22-
2323
if(file_exists($options["dir"]."/config.json")) {
2424
$data = file_get_contents($options["dir"]."/config.json");
2525
$config = json_decode($data, true);
2626
}
2727

2828
/* Read content */
29-
$html_data = file_get_contents($file_input);
30-
$html = substr($html_data, 12, strlen($html_data)-27);
29+
$html = file_get_contents($file_input);
3130

3231
/* Create PDF */
3332

@@ -40,6 +39,11 @@
4039

4140
$mpdf = new mPDF();
4241

42+
// Specify whether to substitute missing characters in UTF-8 (multibyte) documents
43+
$mpdf->useSubstitutions=false;
44+
45+
//Disables complex table borders etc. to improve performance
46+
$mpdf->simpleTables = true;
4347

4448
if(array_key_exists('mirror_margins', $config)) {
4549
if($config['mirror_margins']) {
@@ -58,27 +62,6 @@
5862
$mpdf->WriteHTML($css_data, 1);
5963
}
6064

61-
//$mpdf->AddPageByArray(array('suppress' => 'off'));
62-
63-
if(array_key_exists('show_footer', $config['config']['settings'])) {
64-
if(isset($config['config']['settings']['show_footer'])) {
65-
$html = "<sethtmlpagefooter name=\"footer-left\" page=\"E\" value=\"".
66-
$config['config']['settings']['show_footer']."\" />
67-
<sethtmlpagefooter name=\"footer-right\" page=\"O\" value=\"".
68-
$config['config']['settings']['show_footer']."\" /> ".$html;
69-
}
70-
}
71-
72-
if(array_key_exists('show_header', $config['config']['settings'])) {
73-
if(isset($config['config']['settings']['show_header'])) {
74-
$html = "<sethtmlpageheader name=\"header-left\" page=\"E\" value=\"".
75-
$config['config']['settings']['show_header']."\" show-this-page=\"0\" />
76-
<sethtmlpageheader name=\"header-right\" page=\"O\" value=\"".
77-
$config['config']['settings']['show_header']."\" show-this-page=\"0\" /> ".$html;
78-
}
79-
}
80-
81-
8265
/* Add Frontmatter */
8366
if(file_exists($options["dir"]."/frontmatter.html")) {
8467
$frontmatter_data = file_get_contents($options["dir"]."/frontmatter.html");

0 commit comments

Comments
 (0)