Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4070)

Unified Diff: chrome/renderer/print_web_view_helper.cc

Issue 10083060: [Print Preview]: Added code to support pdf fit to page functionality. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed review comments Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/renderer/print_web_view_helper.cc
diff --git a/chrome/renderer/print_web_view_helper.cc b/chrome/renderer/print_web_view_helper.cc
index b31cd851cfe5213c2219515b3dde4681cd01e5f7..275e3a6b58d264caa25d616f59d168acbb848b5d 100644
--- a/chrome/renderer/print_web_view_helper.cc
+++ b/chrome/renderer/print_web_view_helper.cc
@@ -867,6 +867,16 @@ void PrintWebViewHelper::OnPrintPreview(const DictionaryValue& settings) {
preview_params));
return;
}
+
+ // If we are previewing a pdf and the print scaling is disabled, send a
+ // message to browser.
+ if (!print_preview_context_.IsModifiable() &&
+ print_pages_params_->params.is_first_request &&
+ print_preview_context_.frame()->isPrintScalingDisabledForPlugin(
+ print_preview_context_.node())) {
+ Send(new PrintHostMsg_PrintPreviewScalingDisabled(routing_id()));
+ }
+
// Always clear |old_print_pages_params_| before rendering the pages.
old_print_pages_params_.reset();
is_print_ready_metafile_sent_ = false;
@@ -1310,23 +1320,7 @@ bool PrintWebViewHelper::UpdatePrintSettings(
modified_job_settings.SetBoolean(printing::kSettingHeaderFooterEnabled,
false);
- // - On Windows, we don't add a margin until we turn it into an EMF when
- // printing for print preview (We could add it in the plugin).
- // - On Mac with Skia, we don't add a margin until we send it to the printer
- // using the CG PDF class (We could add it in the plugin).
- // - On Mac with CG, we can add a margin when generating the preview.
- // - On Linux, we never add a margin (We Could add it in the plugin).
-#if defined(OS_MACOSX) && !defined(USE_SKIA)
- bool get_margins_from_pdf = !source_is_html && !print_for_preview_;
-#elif defined(OS_WIN) || defined(OS_MACOSX)
- bool get_margins_from_pdf = !source_is_html && print_for_preview_;
-#else
- bool get_margins_from_pdf = false;
-#endif
-
printing::MarginType margin_type = printing::NO_MARGINS;
- if (get_margins_from_pdf)
- margin_type = GetMarginsForPdf(frame, node);
modified_job_settings.SetInteger(printing::kSettingMarginsType,
margin_type);
job_settings = &modified_job_settings;
@@ -1381,9 +1375,25 @@ bool PrintWebViewHelper::UpdatePrintSettings(
settings.params.print_to_pdf = IsPrintToPdfRequested(*job_settings);
UpdateFrameMarginsCssInfo(*job_settings);
- // Fit to paper size.
- settings.params.fit_to_paper_size = source_is_html &&
- !IsPrintToPdfRequested(*job_settings);
+ // Source is PDF (Fit to page)
+ bool fit_to_paper_size = false;
+ bool reset_fit_to_page_option = true;
+ if (!print_for_preview_ && !settings.params.print_to_pdf) {
+ if (settings.params.is_first_request && !source_is_html) {
+ // If print scaling is disabled, do not fit to paper size.
+ fit_to_paper_size = !print_preview_context_.frame()->
+ isPrintScalingDisabledForPlugin(print_preview_context_.node());
+ } else {
+ reset_fit_to_page_option = false;
+ }
+ }
+
+ if (reset_fit_to_page_option) {
+ settings.params.fit_to_paper_size = fit_to_paper_size;
+ } else if (!job_settings->GetBoolean(printing::kSettingFitToPageEnabled,
+ &(settings.params.fit_to_paper_size))) {
+ NOTREACHED();
+ }
// Header/Footer: Set |header_footer_info_|.
if (settings.params.display_header_footer) {

Powered by Google App Engine
This is Rietveld 408576698