mirror of
https://github.com/pdf2htmlEX/pdf2htmlEX.git
synced 2024-12-22 13:00:08 +00:00
background image css for print
This commit is contained in:
parent
c32cb95c45
commit
f982a6964c
@ -109,6 +109,8 @@
|
|||||||
-moz-transform-origin:0% 0%;
|
-moz-transform-origin:0% 0%;
|
||||||
-webkit-transform-origin:0% 0%;
|
-webkit-transform-origin:0% 0%;
|
||||||
-o-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 */
|
.@CSS_PAGE_CONTENT_BOX_CN@.opened { /* used by pdf2htmlEX.js, to show/hide pages */
|
||||||
display:block;
|
display:block;
|
||||||
|
@ -241,6 +241,9 @@ protected:
|
|||||||
double text_scale_factor1;
|
double text_scale_factor1;
|
||||||
double text_scale_factor2;
|
double text_scale_factor2;
|
||||||
|
|
||||||
|
// 1px on screen should be printed as print_scale()pt
|
||||||
|
double print_scale (void) const { return 96.0 / DEFAULT_DPI / text_zoom_factor(); }
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////
|
////////////////////////////////////////////////////
|
||||||
// states
|
// states
|
||||||
@ -294,6 +297,7 @@ protected:
|
|||||||
RiseManager rise_manager;
|
RiseManager rise_manager;
|
||||||
LeftManager left_manager;
|
LeftManager left_manager;
|
||||||
////////////////////////////////////////////////
|
////////////////////////////////////////////////
|
||||||
|
BGImageSizeManager bgimage_size_manager;
|
||||||
|
|
||||||
// optimize for web
|
// optimize for web
|
||||||
// we try to render the final font size directly
|
// we try to render the final font size directly
|
||||||
|
@ -172,12 +172,13 @@ void HTMLRenderer::startPage(int pageNum, GfxState *state, XRef * xref)
|
|||||||
<< "<div id=\"" << CSS::PAGE_FRAME_CN << pageNum
|
<< "<div id=\"" << CSS::PAGE_FRAME_CN << pageNum
|
||||||
<< "\" class=\"" << CSS::PAGE_FRAME_CN
|
<< "\" class=\"" << CSS::PAGE_FRAME_CN
|
||||||
<< "\" data-page-no=\"" << pageNum << "\">"
|
<< "\" data-page-no=\"" << pageNum << "\">"
|
||||||
<< "<div class=\"" << CSS::PAGE_CONTENT_BOX_CN << "\" style=\"";
|
<< "<div class=\"" << CSS::PAGE_CONTENT_BOX_CN
|
||||||
|
<< " " << CSS::PAGE_CONTENT_BOX_CN << pageNum
|
||||||
|
<< "\" style=\"";
|
||||||
|
|
||||||
if(param->process_nontext)
|
if(param->process_nontext)
|
||||||
{
|
{
|
||||||
f_pages.fs << "background-image:url(";
|
f_pages.fs << "background-image:url(";
|
||||||
|
|
||||||
{
|
{
|
||||||
if(param->single_html)
|
if(param->single_html)
|
||||||
{
|
{
|
||||||
@ -192,11 +193,8 @@ void HTMLRenderer::startPage(int pageNum, GfxState *state, XRef * xref)
|
|||||||
f_pages.fs << str_fmt("p%x.png", pageNum);
|
f_pages.fs << str_fmt("p%x.png", pageNum);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
f_pages.fs << ");";
|
||||||
// TODO print css
|
bgimage_size_manager.install(pageNum, state->getPageWidth(), state->getPageHeight());
|
||||||
f_pages.fs << ");background-position:0 0;background-size:"
|
|
||||||
<< state->getPageWidth() << "px "
|
|
||||||
<< state->getPageHeight() << "px;background-repeat:no-repeat;";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
f_pages.fs << "\">";
|
f_pages.fs << "\">";
|
||||||
@ -461,22 +459,24 @@ void HTMLRenderer::dump_css (void)
|
|||||||
width_manager .dump_css(f_css.fs);
|
width_manager .dump_css(f_css.fs);
|
||||||
rise_manager .dump_css(f_css.fs);
|
rise_manager .dump_css(f_css.fs);
|
||||||
left_manager .dump_css(f_css.fs);
|
left_manager .dump_css(f_css.fs);
|
||||||
|
bgimage_size_manager.dump_css(f_css.fs);
|
||||||
|
|
||||||
// print css
|
// print css
|
||||||
double print_scale = 96.0 / DEFAULT_DPI / text_zoom_factor();
|
double ps = print_scale();
|
||||||
f_css.fs << CSS::PRINT_ONLY << "{" << endl;
|
f_css.fs << CSS::PRINT_ONLY << "{" << endl;
|
||||||
transform_matrix_manager.dump_print_css(f_css.fs, print_scale);
|
transform_matrix_manager.dump_print_css(f_css.fs, ps);
|
||||||
letter_space_manager .dump_print_css(f_css.fs, print_scale);
|
letter_space_manager .dump_print_css(f_css.fs, ps);
|
||||||
stroke_color_manager .dump_print_css(f_css.fs, print_scale);
|
stroke_color_manager .dump_print_css(f_css.fs, ps);
|
||||||
word_space_manager .dump_print_css(f_css.fs, print_scale);
|
word_space_manager .dump_print_css(f_css.fs, ps);
|
||||||
whitespace_manager .dump_print_css(f_css.fs, print_scale);
|
whitespace_manager .dump_print_css(f_css.fs, ps);
|
||||||
fill_color_manager .dump_print_css(f_css.fs, print_scale);
|
fill_color_manager .dump_print_css(f_css.fs, ps);
|
||||||
font_size_manager .dump_print_css(f_css.fs, print_scale);
|
font_size_manager .dump_print_css(f_css.fs, ps);
|
||||||
bottom_manager .dump_print_css(f_css.fs, print_scale);
|
bottom_manager .dump_print_css(f_css.fs, ps);
|
||||||
height_manager .dump_print_css(f_css.fs, print_scale);
|
height_manager .dump_print_css(f_css.fs, ps);
|
||||||
width_manager .dump_print_css(f_css.fs, print_scale);
|
width_manager .dump_print_css(f_css.fs, ps);
|
||||||
rise_manager .dump_print_css(f_css.fs, print_scale);
|
rise_manager .dump_print_css(f_css.fs, ps);
|
||||||
left_manager .dump_print_css(f_css.fs, print_scale);
|
left_manager .dump_print_css(f_css.fs, ps);
|
||||||
|
bgimage_size_manager.dump_print_css(f_css.fs, ps);
|
||||||
f_css.fs << "}" << endl;
|
f_css.fs << "}" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -453,6 +453,43 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/////////////////////////////////////
|
||||||
|
/*
|
||||||
|
* Manage the background image sizes
|
||||||
|
* Kind of similar with StateManager, but not exactly the same
|
||||||
|
* anyway temporarly leave it here
|
||||||
|
*/
|
||||||
|
class BGImageSizeManager
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void install(int page_no, double width, double height){
|
||||||
|
value_map.insert(std::make_pair(page_no, std::make_pair(width, height)));
|
||||||
|
}
|
||||||
|
|
||||||
|
void dump_css(std::ostream & out) {
|
||||||
|
for(auto iter = value_map.begin(); iter != value_map.end(); ++iter)
|
||||||
|
{
|
||||||
|
const auto & s = iter->second;
|
||||||
|
out << "." << CSS::PAGE_CONTENT_BOX_CN << iter->first << "{";
|
||||||
|
out << "background-size:" << round(s.first) << "px " << round(s.second) << "px;";
|
||||||
|
out << "}" << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void dump_print_css(std::ostream & out, double scale) {
|
||||||
|
for(auto iter = value_map.begin(); iter != value_map.end(); ++iter)
|
||||||
|
{
|
||||||
|
const auto & s = iter->second;
|
||||||
|
out << "." << CSS::PAGE_CONTENT_BOX_CN << iter->first << "{";
|
||||||
|
out << "background-size:" << round(s.first * scale) << "pt " << round(s.second * scale) << "pt;";
|
||||||
|
out << "}" << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::unordered_map<int, std::pair<double,double>> value_map;
|
||||||
|
};
|
||||||
|
|
||||||
} // namespace pdf2htmlEX
|
} // namespace pdf2htmlEX
|
||||||
|
|
||||||
#endif //STATEMANAGER_H__
|
#endif //STATEMANAGER_H__
|
||||||
|
Loading…
Reference in New Issue
Block a user