| 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();
|
|
|