Index: chrome/browser/printing/print_job.cc |
diff --git a/chrome/browser/printing/print_job.cc b/chrome/browser/printing/print_job.cc |
index 294fcb19718fc58e4529478a7b94bd0eca9f45e0..5f616b42d859b960ddc771631383528806905cb1 100644 |
--- a/chrome/browser/printing/print_job.cc |
+++ b/chrome/browser/printing/print_job.cc |
@@ -224,20 +224,18 @@ PrintedDocument* PrintJob::document() const { |
#if defined(OS_WIN) |
class PrintJob::PdfConversionState { |
public: |
- PdfConversionState(gfx::Size page_size, |
- gfx::Rect content_area, |
- std::unique_ptr<PdfConverter> converter) |
+ PdfConversionState(gfx::Size page_size, gfx::Rect content_area) |
: page_count_(0), |
current_page_(0), |
pages_in_progress_(0), |
page_size_(page_size), |
- content_area_(content_area), |
- converter_(std::move(converter)) {} |
+ content_area_(content_area) {} |
void Start(const scoped_refptr<base::RefCountedMemory>& data, |
const PdfRenderSettings& conversion_settings, |
const PdfConverter::StartCallback& start_callback) { |
- converter_->Start(data, conversion_settings, start_callback); |
+ converter_ = PdfConverter::StartPdfConverter( |
+ data, conversion_settings, start_callback); |
} |
void GetMorePages(const PdfConverter::GetPageCallback& get_page_callback) { |
@@ -281,16 +279,14 @@ void PrintJob::StartPdfToEmfConversion( |
bool print_text_with_gdi) { |
DCHECK(!pdf_conversion_state_); |
pdf_conversion_state_ = |
- base::MakeUnique<PdfConversionState>(page_size, content_area, |
- PdfConverter::CreatePdfToEmfConverter()); |
+ base::MakeUnique<PdfConversionState>(page_size, content_area); |
const int kPrinterDpi = settings().dpi(); |
PdfRenderSettings settings( |
- content_area, kPrinterDpi, /*autorotate=*/true, |
+ content_area, gfx::Point(0,0), kPrinterDpi, /*autorotate=*/true, |
print_text_with_gdi ? PdfRenderSettings::Mode::GDI_TEXT |
: PdfRenderSettings::Mode::NORMAL); |
pdf_conversion_state_->Start( |
- bytes, settings, |
- base::Bind(&PrintJob::OnPdfConversionStarted, this)); |
+ bytes, settings, base::Bind(&PrintJob::OnPdfConversionStarted, this)); |
} |
void PrintJob::OnPdfConversionStarted(int page_count) { |
@@ -323,6 +319,23 @@ void PrintJob::OnPdfPageConverted(int page_number, |
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()); |
+ 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) { |