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

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

Issue 2633573002: Add Postscript Printing (Closed)
Patch Set: Rebase 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_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) {

Powered by Google App Engine
This is Rietveld 408576698