Index: webkit/plugins/ppapi/ppapi_plugin_instance.cc |
=================================================================== |
--- webkit/plugins/ppapi/ppapi_plugin_instance.cc (revision 134542) |
+++ webkit/plugins/ppapi/ppapi_plugin_instance.cc (working copy) |
@@ -38,6 +38,7 @@ |
#include "ppapi/shared_impl/var.h" |
#include "ppapi/thunk/enter.h" |
#include "ppapi/thunk/ppb_buffer_api.h" |
+#include "printing/custom_scaling.h" |
#include "printing/units.h" |
#include "third_party/skia/include/core/SkCanvas.h" |
#include "third_party/skia/include/core/SkRect.h" |
@@ -1468,15 +1469,27 @@ |
static_cast<int>(printing::kPointsPerInch), |
current_print_settings_.dpi)); |
// We need to scale down DC to fit an entire page into DC available area. |
+ // First, we'll try to use default scaling based on the 72dpi that is |
+ // used in webkit for printing. |
+ // If default scaling is not enough to fit the entire PDF without |
// Current metafile is based on screen DC and have current screen size. |
// Writing outside of those boundaries will result in the cut-off output. |
// On metafiles (this is the case here), scaling down will still record |
// original coordinates and we'll be able to print in full resolution. |
// Before playback we'll need to counter the scaling up that will happen |
// in the browser (printed_document_win.cc). |
- gfx::ScaleDC(dc, gfx::CalculatePageScale(dc, size_in_pixels.width(), |
- size_in_pixels.height())); |
+ double dynamic_scale = gfx::CalculatePageScale(dc, size_in_pixels.width(), |
+ size_in_pixels.height()); |
+ double page_scale = static_cast<double>(printing::kPointsPerInch) / |
+ static_cast<double>(current_print_settings_.dpi); |
+ if (dynamic_scale < page_scale) { |
+ page_scale = dynamic_scale; |
+ printing::SetCustomPrintingPageScale(page_scale); |
+ } |
+ |
+ gfx::ScaleDC(dc, page_scale); |
+ |
ret = render_proc(static_cast<unsigned char*>(mapper.data()), mapper.size(), |
0, dc, current_print_settings_.dpi, |
current_print_settings_.dpi, 0, 0, size_in_pixels.width(), |