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

Unified Diff: chrome/browser/printing/print_view_manager_base.cc

Issue 2633573002: Add Postscript Printing (Closed)
Patch Set: Fix Linux compile error Created 3 years, 11 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/browser/printing/print_view_manager_base.cc
diff --git a/chrome/browser/printing/print_view_manager_base.cc b/chrome/browser/printing/print_view_manager_base.cc
index 33ada8ce7b315e2bd327883bc682e5527ff0696e..201ebd487e0415cf3ba6b2dcf5c5506c7b31db81 100644
--- a/chrome/browser/printing/print_view_manager_base.cc
+++ b/chrome/browser/printing/print_view_manager_base.cc
@@ -46,6 +46,7 @@
#if defined(OS_WIN)
#include "base/command_line.h"
+#include "chrome/common/chrome_features.h"
#include "chrome/common/chrome_switches.h"
#endif
@@ -182,24 +183,34 @@ void PrintViewManagerBase::OnDidPrintPage(
#if defined(OS_WIN)
print_job_->AppendPrintedPage(params.page_number);
if (metafile_must_be_valid) {
- // TODO(thestig): Figure out why rendering text with GDI results in random
- // missing characters for some users. https://crbug.com/658606
- bool print_text_with_gdi =
- document->settings().print_text_with_gdi() &&
- !document->settings().printer_is_xps() &&
- switches::GDITextPrintingEnabled();
scoped_refptr<base::RefCountedBytes> bytes = new base::RefCountedBytes(
reinterpret_cast<const unsigned char*>(shared_buf->memory()),
params.data_size);
-
document->DebugDumpData(bytes.get(), FILE_PATH_LITERAL(".pdf"));
- print_job_->StartPdfToEmfConversion(
- bytes, params.page_size, params.content_area,
- print_text_with_gdi);
+
+ const auto& settings = document->settings();
+ if ((settings.printer_is_ps2() || settings.printer_is_ps3()) &&
+ base::FeatureList::IsEnabled(features::kPostScriptPrinting)) {
+ print_job_->StartPdfToPostScriptConversion(bytes, params.content_area,
+ params.physical_offsets,
+ settings.printer_is_ps2());
+ } else {
+ // TODO(thestig): Figure out why rendering text with GDI results in random
+ // missing characters for some users. https://crbug.com/658606
+ // Update : The missing letters seem to have been caused by the same
+ // problem as https://crbug.com/659604 which was resolved. GDI printing
+ // seems to work with the fix for this bug applied.
+ bool print_text_with_gdi = settings.print_text_with_gdi() &&
+ !settings.printer_is_xps() &&
+ switches::GDITextPrintingEnabled();
+ print_job_->StartPdfToEmfConversion(
+ bytes, params.page_size, params.content_area, print_text_with_gdi);
+ }
}
#else
// Update the rendered document. It will send notifications to the listener.
- document->SetPage(params.page_number, std::move(metafile), params.page_size,
+ document->SetPage(params.page_number, std::move(metafile),
+ 0 /* dummy shrink_factor */, params.page_size,
params.content_area);
ShouldQuitFromInnerMessageLoop();

Powered by Google App Engine
This is Rietveld 408576698