diff --git a/include/internal/cef_types.h b/include/internal/cef_types.h index 369aec913..63b89b9c5 100644 --- a/include/internal/cef_types.h +++ b/include/internal/cef_types.h @@ -2395,6 +2395,13 @@ typedef struct _cef_pdf_print_settings_t { int page_width; int page_height; + /// + // The percentage to scale the PDF by before printing (e.g. 50 is 50%). + // If this value is less than or equal to zero the default value of 100 + // will be used. + /// + int scale_factor; + /// // Margins in millimeters. Only used if |margin_type| is set to // PDF_PRINT_MARGIN_CUSTOM. diff --git a/include/internal/cef_types_wrappers.h b/include/internal/cef_types_wrappers.h index e86a02fef..4108a933e 100644 --- a/include/internal/cef_types_wrappers.h +++ b/include/internal/cef_types_wrappers.h @@ -937,6 +937,8 @@ struct CefPdfPrintSettingsTraits { target->page_width = src->page_width; target->page_height = src->page_height; + target->scale_factor = src->scale_factor; + target->margin_top = src->margin_top; target->margin_right = src->margin_right; target->margin_bottom = src->margin_bottom; diff --git a/libcef/browser/printing/print_view_manager.cc b/libcef/browser/printing/print_view_manager.cc index 06994563f..d35665527 100644 --- a/libcef/browser/printing/print_view_manager.cc +++ b/libcef/browser/printing/print_view_manager.cc @@ -47,7 +47,8 @@ void FillInDictionaryFromPdfPrintSettings( print_settings.SetInteger(kSettingCopies, 1); print_settings.SetBoolean(kSettingCollate, false); print_settings.SetString(kSettingDeviceName, ""); - print_settings.SetInteger(kSettingScaleFactor, 100); + print_settings.SetInteger(kSettingScaleFactor, + pdf_settings.scale_factor > 0 ? pdf_settings.scale_factor : 100); print_settings.SetBoolean(kSettingGenerateDraftData, false); print_settings.SetBoolean(kSettingPreviewModifiable, false);