1 // Copyright 2017 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_SERVICES_PRINTING_PDF_TO_EMF_CONVERTER_H_ 6 #define CHROME_SERVICES_PRINTING_PDF_TO_EMF_CONVERTER_H_ 7 8 #include <vector> 9 10 #include "base/macros.h" 11 #include "base/memory/read_only_shared_memory_region.h" 12 #include "chrome/services/printing/public/mojom/pdf_to_emf_converter.mojom.h" 13 #include "mojo/public/cpp/bindings/pending_remote.h" 14 #include "printing/pdf_render_settings.h" 15 16 namespace printing { 17 18 class PdfToEmfConverter : public mojom::PdfToEmfConverter { 19 public: 20 PdfToEmfConverter(base::ReadOnlySharedMemoryRegion pdf_region, 21 const PdfRenderSettings& render_settings, 22 mojo::PendingRemote<mojom::PdfToEmfConverterClient> client); 23 ~PdfToEmfConverter() override; 24 total_page_count()25 int total_page_count() const { return total_page_count_; } 26 27 private: 28 // mojom::PdfToEmfConverter implementation. 29 void ConvertPage(uint32_t page_number, ConvertPageCallback callback) override; 30 31 void SetPrintMode(); 32 void LoadPdf(base::ReadOnlySharedMemoryRegion pdf_region); 33 base::ReadOnlySharedMemoryRegion RenderPdfPageToMetafile(int page_number, 34 bool postscript, 35 float* scale_factor); 36 37 uint32_t total_page_count_ = 0; 38 PdfRenderSettings pdf_render_settings_; 39 base::ReadOnlySharedMemoryMapping pdf_mapping_; 40 41 DISALLOW_COPY_AND_ASSIGN(PdfToEmfConverter); 42 }; 43 44 } // namespace printing 45 46 #endif // CHROME_SERVICES_PRINTING_PDF_TO_EMF_CONVERTER_H_ 47