From 34a53f9d14a6291c5905db331c9fdee1f1186221 Mon Sep 17 00:00:00 2001 From: Lu Wang Date: Fri, 1 Mar 2013 13:24:29 +0800 Subject: [PATCH] use img instead of background-image for better printing --- share/base.css.in | 9 ++++++-- src/HTMLRenderer/general.cc | 34 +++++++++++++----------------- src/css_class_names.cmakelists.txt | 2 ++ src/util/css_const.h.in | 2 ++ 4 files changed, 26 insertions(+), 21 deletions(-) diff --git a/share/base.css.in b/share/base.css.in index 432c878..ff64b02 100644 --- a/share/base.css.in +++ b/share/base.css.in @@ -112,12 +112,17 @@ -moz-transform-origin:0% 0%; -webkit-transform-origin:0% 0%; -o-transform-origin:0% 0%; - background-position:0 0; - background-repeat:no-repeat; } .@CSS_PAGE_CONTENT_BOX_CN@.opened { /* used by pdf2htmlEX.js, to show/hide pages */ display:block; } +.@CSS_BACKGROUND_IMAGE_CN@ { + position:absolute; + left:0; + top:0; + width:100%; + height:100%; +} @media print { .@CSS_PAGE_DECORATION_CN@ { margin:0; diff --git a/src/HTMLRenderer/general.cc b/src/HTMLRenderer/general.cc index 23cbc92..ae3a056 100644 --- a/src/HTMLRenderer/general.cc +++ b/src/HTMLRenderer/general.cc @@ -110,7 +110,7 @@ void HTMLRenderer::process(PDFDoc *doc) if(param->process_nontext) { - auto fn = str_fmt("%s/p%x.png", (param->single_html ? param->tmp_dir : param->dest_dir).c_str(), i); + auto fn = str_fmt("%s/bg%x.png", (param->single_html ? param->tmp_dir : param->dest_dir).c_str(), i); if(param->single_html) tmp_files.add((char*)fn); @@ -174,31 +174,27 @@ void HTMLRenderer::startPage(int pageNum, GfxState *state, XRef * xref) << "\" data-page-no=\"" << pageNum << "\">" << "
"; if(param->process_nontext) { - f_pages.fs << "background-image:url("; + f_pages.fs << "\"\"single_html) { - if(param->single_html) - { - auto path = str_fmt("%s/p%x.png", param->tmp_dir.c_str(), pageNum); - ifstream fin((char*)path, ifstream::binary); - if(!fin) - throw string("Cannot read background image ") + (char*)path; - f_pages.fs << "'data:image/png;base64," << base64stream(fin) << "'"; - } - else - { - f_pages.fs << str_fmt("p%x.png", pageNum); - } + auto path = str_fmt("%s/bg%x.png", param->tmp_dir.c_str(), pageNum); + ifstream fin((char*)path, ifstream::binary); + if(!fin) + throw string("Cannot read background image ") + (char*)path; + f_pages.fs << "data:image/png;base64," << base64stream(fin); } - f_pages.fs << ");"; - bgimage_size_manager.install(pageNum, state->getPageWidth(), state->getPageHeight()); + else + { + f_pages.fs << str_fmt("bg%x.png", pageNum); + } + f_pages.fs << "\"/>"; } - f_pages.fs << "\">"; - reset_state(); } diff --git a/src/css_class_names.cmakelists.txt b/src/css_class_names.cmakelists.txt index 8fdaf09..0eb0ec7 100644 --- a/src/css_class_names.cmakelists.txt +++ b/src/css_class_names.cmakelists.txt @@ -14,6 +14,8 @@ set(CSS_PAGE_FRAME_CN "pf") # page frame set(CSS_PAGE_CONTENT_BOX_CN "pc") # page content set(CSS_PAGE_DATA_CN "pi") # page info +set(CSS_BACKGROUND_IMAGE_CN "bi") # background image + set(CSS_FONT_FAMILY_CN "ff") # font family set(CSS_FONT_SIZE_CN "fs") # font size diff --git a/src/util/css_const.h.in b/src/util/css_const.h.in index be9c4d5..ed3221d 100644 --- a/src/util/css_const.h.in +++ b/src/util/css_const.h.in @@ -35,6 +35,8 @@ const char * const PAGE_FRAME_CN = "@CSS_PAGE_FRAME_CN@"; const char * const PAGE_CONTENT_BOX_CN = "@CSS_PAGE_CONTENT_BOX_CN@"; const char * const PAGE_DATA_CN = "@CSS_PAGE_DATA_CN@"; +const char * const BACKGROUND_IMAGE_CN = "@CSS_BACKGROUND_IMAGE_CN@"; + const char * const FONT_FAMILY_CN = "@CSS_FONT_FAMILY_CN@"; const char * const FONT_SIZE_CN = "@CSS_FONT_SIZE_CN@"; const char * const FILL_COLOR_CN = "@CSS_FILL_COLOR_CN@";