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

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

Issue 2633573002: Add Postscript Printing (Closed)
Patch Set: Merge 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 964aef9de7bf6761930349de67aebf08bab186ba..df471305c8f649bf4f16837138007be6aedf2d9e 100644
--- a/chrome/browser/printing/print_view_manager_base.cc
+++ b/chrome/browser/printing/print_view_manager_base.cc
@@ -182,24 +182,39 @@ 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() &&
- base::FeatureList::IsEnabled(features::kGdiTextPrinting);
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() &&
+ base::FeatureList::IsEnabled(
+ features::kGdiTextPrinting);
+ 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),
+#if defined(OS_WIN)
+ 0.0f /* dummy shrink_factor */,
+#endif
+ params.page_size,
params.content_area);
ShouldQuitFromInnerMessageLoop();
« no previous file with comments | « chrome/browser/printing/print_preview_pdf_generated_browsertest.cc ('k') | chrome/browser/printing/pwg_raster_converter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698