Skip to content

Commit

Permalink
Patching cover page for 0mm margins
Browse files Browse the repository at this point in the history
Patching cover page for 0mm margins.

Original modification from andkorsh@c09862d

altered following this comment :
wkhtmltopdf#3692 (comment)
  • Loading branch information
stncrn committed Feb 2, 2018
1 parent cf10883 commit 55230ca
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 0 deletions.
2 changes: 2 additions & 0 deletions include/wkhtmltox/pdfsettings.hh
Expand Up @@ -202,6 +202,8 @@ struct DLL_PUBLIC PdfObject {

bool isTableOfContent;

bool isCover;

QString tocXsl;

QString get(const char * name);
Expand Down
14 changes: 14 additions & 0 deletions src/lib/pdfconverter.cc
Expand Up @@ -991,10 +991,24 @@ void PdfConverterPrivate::printDocument() {
progressString = "Preparing";
emit out.progressChanged(0);

qreal leftMargin, topMargin, rightMargin, bottomMargin;
printer->getPageMargins(&leftMargin, &topMargin, &rightMargin, &bottomMargin, settings.margin.left.second);

for (int cc_=0; cc_ < cc; ++cc_) {
pageNumber=1;
for (int d=0; d < objects.size(); ++d) {
if (objects[d].settings.isCover) {
painter->save();
painter->translate(-leftMargin * printer->width() / printer->widthMM(), -topMargin * printer->height() / printer->heightMM());
printer->setPageMargins(0, 0, 0, 0, settings.margin.left.second);
}
beginPrintObject(objects[d]);

if (objects[d].settings.isCover) {
printer->setPageMargins(leftMargin, topMargin, rightMargin, bottomMargin, settings.margin.left.second);
painter->restore();
}

// XXX: In some cases nothing gets loaded at all,
// so we would get no webPrinter instance.
int pageCount = webPrinter != 0 ? webPrinter->pageCount() : 0;
Expand Down
2 changes: 2 additions & 0 deletions src/lib/pdfsettings.cc
Expand Up @@ -162,6 +162,7 @@ struct DLL_LOCAL ReflectImpl<PdfObject>: public ReflectClass {
WKHTMLTOPDF_REFLECT(includeInOutline);
WKHTMLTOPDF_REFLECT(pagesCount);
WKHTMLTOPDF_REFLECT(isTableOfContent);
WKHTMLTOPDF_REFLECT(isCover);
WKHTMLTOPDF_REFLECT(tocXsl);
}
};
Expand Down Expand Up @@ -405,6 +406,7 @@ PdfObject::PdfObject():
includeInOutline(true),
pagesCount(true),
isTableOfContent(false),
isCover(false),
tocXsl("") {};

QString PdfGlobal::get(const char * name) {
Expand Down
2 changes: 2 additions & 0 deletions src/lib/pdfsettings.hh
Expand Up @@ -202,6 +202,8 @@ struct DLL_PUBLIC PdfObject {

bool isTableOfContent;

bool isCover;

QString tocXsl;

QString get(const char * name);
Expand Down
1 change: 1 addition & 0 deletions src/pdf/pdfcommandlineparser.cc
Expand Up @@ -178,6 +178,7 @@ void PdfCommandLineParser::parseArguments(int argc, const char ** argv, bool fro
ps.header.line = ps.footer.line = false;
ps.header.htmlUrl = ps.footer.htmlUrl = "";
ps.includeInOutline = false;
ps.isCover = true;

continue;
} else if (!strcmp(argv[arg],"toc")) {
Expand Down

0 comments on commit 55230ca

Please sign in to comment.