OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/utility/printing_handler.h" | 5 #include "chrome/utility/printing_handler.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/files/file_util.h" | 10 #include "base/files/file_util.h" |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
63 bool PrintingHandler::OnMessageReceived(const IPC::Message& message) { | 63 bool PrintingHandler::OnMessageReceived(const IPC::Message& message) { |
64 bool handled = true; | 64 bool handled = true; |
65 IPC_BEGIN_MESSAGE_MAP(PrintingHandler, message) | 65 IPC_BEGIN_MESSAGE_MAP(PrintingHandler, message) |
66 #if defined(OS_WIN) | 66 #if defined(OS_WIN) |
67 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_RenderPDFPagesToMetafiles, | 67 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_RenderPDFPagesToMetafiles, |
68 OnRenderPDFPagesToMetafile) | 68 OnRenderPDFPagesToMetafile) |
69 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_RenderPDFPagesToMetafiles_GetPage, | 69 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_RenderPDFPagesToMetafiles_GetPage, |
70 OnRenderPDFPagesToMetafileGetPage) | 70 OnRenderPDFPagesToMetafileGetPage) |
71 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_RenderPDFPagesToMetafiles_Stop, | 71 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_RenderPDFPagesToMetafiles_Stop, |
72 OnRenderPDFPagesToMetafileStop) | 72 OnRenderPDFPagesToMetafileStop) |
73 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_RenderPDFPagesToPostScript_Start, | |
74 OnRenderPDFPagesToPostScriptStart) | |
75 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_RenderPDFPagesToPostScript_GetPage, | |
76 OnRenderPDFPagesToPostScriptGetPage) | |
77 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_RenderPDFPagesToPostScript_Stop, | |
78 OnRenderPDFPagesToPostScriptStop) | |
79 #endif // OS_WIN | 73 #endif // OS_WIN |
80 #if BUILDFLAG(ENABLE_PRINT_PREVIEW) | 74 #if BUILDFLAG(ENABLE_PRINT_PREVIEW) |
81 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_RenderPDFPagesToPWGRaster, | 75 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_RenderPDFPagesToPWGRaster, |
82 OnRenderPDFPagesToPWGRaster) | 76 OnRenderPDFPagesToPWGRaster) |
83 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_GetPrinterCapsAndDefaults, | 77 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_GetPrinterCapsAndDefaults, |
84 OnGetPrinterCapsAndDefaults) | 78 OnGetPrinterCapsAndDefaults) |
85 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_GetPrinterSemanticCapsAndDefaults, | 79 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_GetPrinterSemanticCapsAndDefaults, |
86 OnGetPrinterSemanticCapsAndDefaults) | 80 OnGetPrinterSemanticCapsAndDefaults) |
87 #endif // ENABLE_PRINT_PREVIEW | 81 #endif // ENABLE_PRINT_PREVIEW |
88 IPC_MESSAGE_UNHANDLED(handled = false) | 82 IPC_MESSAGE_UNHANDLED(handled = false) |
89 IPC_END_MESSAGE_MAP() | 83 IPC_END_MESSAGE_MAP() |
90 return handled; | 84 return handled; |
91 } | 85 } |
92 | 86 |
93 #if defined(OS_WIN) | 87 #if defined(OS_WIN) |
94 void PrintingHandler::OnRenderPDFPagesToMetafile( | 88 void PrintingHandler::OnRenderPDFPagesToMetafile( |
95 IPC::PlatformFileForTransit pdf_transit, | 89 IPC::PlatformFileForTransit pdf_transit, |
96 const PdfRenderSettings& settings) { | 90 const PdfRenderSettings& settings) { |
97 pdf_rendering_settings_ = settings; | 91 pdf_rendering_settings_ = settings; |
98 chrome_pdf::SetPDFPostscriptPrintingLevel(0); // Not using postscript. | 92 chrome_pdf::SetPDFPostscriptPrintingLevel(0); // Not using postscript. |
99 chrome_pdf::SetPDFUseGDIPrinting(pdf_rendering_settings_.mode == | 93 chrome_pdf::SetPDFUseGDIPrinting(pdf_rendering_settings_.mode == |
100 PdfRenderSettings::Mode::GDI_TEXT); | 94 PdfRenderSettings::Mode::GDI_TEXT); |
| 95 if (pdf_rendering_settings_.mode == |
| 96 PdfRenderSettings::Mode::POSTSCRIPT_LEVEL2) { |
| 97 chrome_pdf::SetPDFPostscriptPrintingLevel(2); |
| 98 } else if (pdf_rendering_settings_.mode == |
| 99 PdfRenderSettings::Mode::POSTSCRIPT_LEVEL3) { |
| 100 chrome_pdf::SetPDFPostscriptPrintingLevel(3); |
| 101 } |
101 base::File pdf_file = IPC::PlatformFileForTransitToFile(pdf_transit); | 102 base::File pdf_file = IPC::PlatformFileForTransitToFile(pdf_transit); |
102 int page_count = LoadPDF(std::move(pdf_file)); | 103 int page_count = LoadPDF(std::move(pdf_file)); |
103 Send( | 104 Send( |
104 new ChromeUtilityHostMsg_RenderPDFPagesToMetafiles_PageCount(page_count)); | 105 new ChromeUtilityHostMsg_RenderPDFPagesToMetafiles_PageCount(page_count)); |
105 } | 106 } |
106 | 107 |
107 void PrintingHandler::OnRenderPDFPagesToMetafileGetPage( | 108 void PrintingHandler::OnRenderPDFPagesToMetafileGetPage( |
108 int page_number, | 109 int page_number, |
109 IPC::PlatformFileForTransit output_file) { | 110 IPC::PlatformFileForTransit output_file) { |
110 base::File emf_file = IPC::PlatformFileForTransitToFile(output_file); | 111 base::File emf_file = IPC::PlatformFileForTransitToFile(output_file); |
111 float scale_factor = 1.0f; | 112 float scale_factor = 1.0f; |
112 bool success = | 113 bool success = false; |
113 RenderPdfPageToMetafile(page_number, std::move(emf_file), &scale_factor); | 114 if (pdf_rendering_settings_.mode == |
| 115 PdfRenderSettings::Mode::POSTSCRIPT_LEVEL2 || |
| 116 pdf_rendering_settings_.mode == |
| 117 PdfRenderSettings::Mode::POSTSCRIPT_LEVEL3) { |
| 118 success = RenderPdfPageToPostScript(page_number, std::move(emf_file)); |
| 119 } else { |
| 120 success = RenderPdfPageToMetafile(page_number, std::move(emf_file), |
| 121 &scale_factor); |
| 122 } |
| 123 |
114 Send(new ChromeUtilityHostMsg_RenderPDFPagesToMetafiles_PageDone( | 124 Send(new ChromeUtilityHostMsg_RenderPDFPagesToMetafiles_PageDone( |
115 success, scale_factor)); | 125 success, scale_factor)); |
116 } | 126 } |
117 | 127 |
118 void PrintingHandler::OnRenderPDFPagesToMetafileStop() { | 128 void PrintingHandler::OnRenderPDFPagesToMetafileStop() { |
119 ReleaseProcessIfNeeded(); | 129 ReleaseProcessIfNeeded(); |
120 } | 130 } |
121 | 131 |
122 void PrintingHandler::OnRenderPDFPagesToPostScriptStart( | |
123 IPC::PlatformFileForTransit pdf_transit, | |
124 const PdfRenderSettings& settings) { | |
125 pdf_rendering_settings_ = settings; | |
126 if (pdf_rendering_settings_.mode == | |
127 PdfRenderSettings::Mode::POSTSCRIPT_LEVEL2) { | |
128 chrome_pdf::SetPDFPostscriptPrintingLevel(2); | |
129 } else if (pdf_rendering_settings_.mode == | |
130 PdfRenderSettings::Mode::POSTSCRIPT_LEVEL3) { | |
131 chrome_pdf::SetPDFPostscriptPrintingLevel(3); | |
132 } | |
133 | |
134 base::File pdf_file = IPC::PlatformFileForTransitToFile(pdf_transit); | |
135 int page_count = LoadPDF(std::move(pdf_file)); | |
136 Send(new ChromeUtilityHostMsg_RenderPDFPagesToPostScript_PageCount( | |
137 page_count)); | |
138 } | |
139 | |
140 void PrintingHandler::OnRenderPDFPagesToPostScriptGetPage( | |
141 int page_number, | |
142 IPC::PlatformFileForTransit output_file) { | |
143 base::File ps_file = IPC::PlatformFileForTransitToFile(output_file); | |
144 bool success = RenderPdfPageToPostScript(page_number, std::move(ps_file)); | |
145 Send(new ChromeUtilityHostMsg_RenderPDFPagesToPostScript_PageDone(success)); | |
146 } | |
147 | |
148 void PrintingHandler::OnRenderPDFPagesToPostScriptStop() { | |
149 ReleaseProcessIfNeeded(); | |
150 } | |
151 #endif // defined(OS_WIN) | 132 #endif // defined(OS_WIN) |
152 | 133 |
153 #if BUILDFLAG(ENABLE_PRINT_PREVIEW) | 134 #if BUILDFLAG(ENABLE_PRINT_PREVIEW) |
154 void PrintingHandler::OnRenderPDFPagesToPWGRaster( | 135 void PrintingHandler::OnRenderPDFPagesToPWGRaster( |
155 IPC::PlatformFileForTransit pdf_transit, | 136 IPC::PlatformFileForTransit pdf_transit, |
156 const PdfRenderSettings& settings, | 137 const PdfRenderSettings& settings, |
157 const PwgRasterSettings& bitmap_settings, | 138 const PwgRasterSettings& bitmap_settings, |
158 IPC::PlatformFileForTransit bitmap_transit) { | 139 IPC::PlatformFileForTransit bitmap_transit) { |
159 base::File pdf = IPC::PlatformFileForTransitToFile(pdf_transit); | 140 base::File pdf = IPC::PlatformFileForTransitToFile(pdf_transit); |
160 base::File bitmap = IPC::PlatformFileForTransitToFile(bitmap_transit); | 141 base::File bitmap = IPC::PlatformFileForTransitToFile(bitmap_transit); |
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
365 printer_name, printer_info)); | 346 printer_name, printer_info)); |
366 } else { | 347 } else { |
367 Send(new ChromeUtilityHostMsg_GetPrinterSemanticCapsAndDefaults_Failed( | 348 Send(new ChromeUtilityHostMsg_GetPrinterSemanticCapsAndDefaults_Failed( |
368 printer_name)); | 349 printer_name)); |
369 } | 350 } |
370 ReleaseProcessIfNeeded(); | 351 ReleaseProcessIfNeeded(); |
371 } | 352 } |
372 #endif // BUILDFLAG(ENABLE_PRINT_PREVIEW) | 353 #endif // BUILDFLAG(ENABLE_PRINT_PREVIEW) |
373 | 354 |
374 } // namespace printing | 355 } // namespace printing |
OLD | NEW |