1 // Copyright 2014 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_BROWSER_PRINTING_PDF_TO_EMF_CONVERTER_H_ 6 #define CHROME_BROWSER_PRINTING_PDF_TO_EMF_CONVERTER_H_ 7 8 #include "base/callback.h" 9 #include "base/memory/ref_counted_memory.h" 10 #include "base/memory/scoped_ptr.h" 11 12 namespace base { 13 class FilePath; 14 } 15 16 namespace printing { 17 18 class MetafilePlayer; 19 class PdfRenderSettings; 20 21 class PdfToEmfConverter { 22 public: 23 typedef base::Callback<void(int page_count)> StartCallback; 24 typedef base::Callback<void(int page_number, 25 double scale_factor, 26 scoped_ptr<MetafilePlayer> emf)> GetPageCallback; 27 28 virtual ~PdfToEmfConverter(); 29 30 static scoped_ptr<PdfToEmfConverter> CreateDefault(); 31 32 // Starts conversion of PDF provided as |data|. Calls |start_callback| 33 // with positive |page_count|. |page_count| is 0 if initialization failed. 34 virtual void Start(const scoped_refptr<base::RefCountedMemory>& data, 35 const PdfRenderSettings& conversion_settings, 36 const StartCallback& start_callback) = 0; 37 38 // Requests conversion of the page. |page_number| is 0-base page number in 39 // PDF provided in Start() call. 40 // Calls |get_page_callback| after conversion. |emf| of callback in not NULL 41 // if conversion succeeded. 42 virtual void GetPage(int page_number, 43 const GetPageCallback& get_page_callback) = 0; 44 }; 45 46 } // namespace printing 47 48 #endif // CHROME_BROWSER_PRINTING_PDF_TO_EMF_CONVERTER_H_ 49