Index: chrome/browser/printing/print_job.cc |
diff --git a/chrome/browser/printing/print_job.cc b/chrome/browser/printing/print_job.cc |
index b00ee4829a53a375dc744e2d803b015a4c737f67..5b33aa4048eaefcd8943369cd4e1591568b51e8e 100644 |
--- a/chrome/browser/printing/print_job.cc |
+++ b/chrome/browser/printing/print_job.cc |
@@ -236,10 +236,8 @@ class PrintJob::PdfConversionState { |
void Start(const scoped_refptr<base::RefCountedMemory>& data, |
const PdfRenderSettings& conversion_settings, |
- bool print_text_with_gdi, |
const PdfConverter::StartCallback& start_callback) { |
- converter_->Start(data, conversion_settings, print_text_with_gdi, |
- start_callback); |
+ converter_->Start(data, conversion_settings, start_callback); |
} |
void GetMorePages(const PdfConverter::GetPageCallback& get_page_callback) { |
@@ -282,14 +280,18 @@ void PrintJob::StartPdfToEmfConversion( |
const gfx::Rect& content_area, |
bool print_text_with_gdi) { |
DCHECK(!pdf_conversion_state_); |
+ |
pdf_conversion_state_ = |
base::MakeUnique<PdfConversionState>(page_size, content_area, |
PdfConverter::CreatePdfToEmfConverter()); |
+ is_postscript_ = false; |
const int kPrinterDpi = settings().dpi(); |
- PdfRenderSettings settings(content_area, kPrinterDpi, true /* autorotate? */); |
+ PdfRenderSettings settings( |
+ content_area, gfx::Point(0, 0), kPrinterDpi, true /* autorotate? */, |
+ print_text_with_gdi ? PdfRenderSettings::Mode::GDI_TEXT |
+ : PdfRenderSettings::Mode::NORMAL); |
pdf_conversion_state_->Start( |
- bytes, settings, print_text_with_gdi, |
- base::Bind(&PrintJob::OnPdfConversionStarted, this)); |
+ bytes, settings, base::Bind(&PrintJob::OnPdfConversionStarted, this)); |
} |
void PrintJob::OnPdfConversionStarted(int page_count) { |
@@ -315,13 +317,33 @@ void PrintJob::OnPdfPageConverted(int page_number, |
} |
// Update the rendered document. It will send notifications to the listener. |
- document_->SetPage(pdf_page_mapping_[page_number], std::move(metafile), |
- scale_factor, pdf_conversion_state_->page_size(), |
- pdf_conversion_state_->content_area()); |
+ document_->SetPage( |
+ pdf_page_mapping_[page_number], std::move(metafile), |
+ is_postscript_ ? 0.0f : scale_factor, |
Vitaly Buka (NO REVIEWS)
2017/01/27 00:38:49
I guess better to remove conditiond and just use
s
rbpotter
2017/01/27 16:37:21
Done.
|
+ is_postscript_ ? gfx::Size() : pdf_conversion_state_->page_size(), |
+ is_postscript_ ? gfx::Rect() : pdf_conversion_state_->content_area()); |
Vitaly Buka (NO REVIEWS)
2017/01/27 00:38:49
why do you need condition here?
PdfConversionState
rbpotter
2017/01/27 16:37:21
Done.
|
pdf_conversion_state_->GetMorePages( |
base::Bind(&PrintJob::OnPdfPageConverted, this)); |
} |
+ |
+void PrintJob::StartPdfToPostScriptConversion( |
+ const scoped_refptr<base::RefCountedMemory>& bytes, |
+ const gfx::Rect& content_area, |
+ const gfx::Point& physical_offsets, |
+ bool ps_level2) { |
+ DCHECK(!pdf_conversion_state_); |
+ pdf_conversion_state_ = base::MakeUnique<PdfConversionState>( |
+ gfx::Size(), gfx::Rect(), PdfConverter::CreatePdfToPostScriptConverter()); |
+ is_postscript_ = true; |
Vitaly Buka (NO REVIEWS)
2017/01/27 00:38:49
looks like is_postscript_ can be removed
rbpotter
2017/01/27 16:37:21
Done.
|
+ const int kPrinterDpi = settings().dpi(); |
+ PdfRenderSettings settings( |
+ content_area, physical_offsets, kPrinterDpi, true /* autorotate? */, |
+ ps_level2 ? PdfRenderSettings::Mode::POSTSCRIPT_LEVEL2 |
+ : PdfRenderSettings::Mode::POSTSCRIPT_LEVEL3); |
+ pdf_conversion_state_->Start( |
+ bytes, settings, base::Bind(&PrintJob::OnPdfConversionStarted, this)); |
+} |
#endif // defined(OS_WIN) |
void PrintJob::UpdatePrintedDocument(PrintedDocument* new_document) { |