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

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

Issue 255543006: Printing on Windows via PDF (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: start looking at service process Created 6 years, 8 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_view_manager_base.cc
diff --git a/chrome/browser/printing/print_view_manager_base.cc b/chrome/browser/printing/print_view_manager_base.cc
index cfadc098230320b8857352a963b73c052c0ce38e..756a071aa932c6825ed1720fb089692d100818f8 100644
--- a/chrome/browser/printing/print_view_manager_base.cc
+++ b/chrome/browser/printing/print_view_manager_base.cc
@@ -44,7 +44,7 @@
using base::TimeDelta;
using content::BrowserThread;
-#if defined(OS_WIN)
+#if defined(OS_WIN) && PRINTING_USE_EMF_METAFILE
// Limits memory usage by raster to 64 MiB.
const int kMaxRasterSizeInPixels = 16*1024*1024;
#endif
@@ -59,7 +59,8 @@ PrintViewManagerBase::PrintViewManagerBase(content::WebContents* web_contents)
cookie_(0),
queue_(g_browser_process->print_job_manager()->queue()) {
DCHECK(queue_);
-#if defined(OS_POSIX) && !defined(OS_MACOSX)
+#if (defined(OS_POSIX) && !defined(OS_MACOSX)) || \
+ (defined(OS_WIN) && !PRINTING_USE_EMF_METAFILE)
expecting_first_page_ = true;
#endif
Profile* profile =
@@ -113,6 +114,15 @@ base::string16 PrintViewManagerBase::RenderSourceName() {
return name;
}
+#if 0 && defined(OS_WIN) && !PRINTING_USE_EMF_METAFILE
+void PrintViewManagerBase::OnRenderPDFPagesToMetafileSucceeded(
+ const printing::Emf& metafile,
+ int highest_rendered_page_number,
+ double scale_factor) {
+ CHECK(false);
+}
+#endif // OS_WIN && !PRINTING_USE_EMF_METAFILE
+
void PrintViewManagerBase::OnDidGetPrintedPagesCount(int cookie,
int number_pages) {
DCHECK_GT(cookie, 0);
@@ -137,9 +147,9 @@ void PrintViewManagerBase::OnDidPrintPage(
return;
}
-#if defined(OS_WIN) || defined(OS_MACOSX)
+#if (defined(OS_WIN) && PRINTING_USE_EMF_METAFILE) || defined(OS_MACOSX)
const bool metafile_must_be_valid = true;
-#elif defined(OS_POSIX)
+#elif defined(OS_POSIX) || (defined(OS_WIN) && !PRINTING_USE_EMF_METAFILE)
const bool metafile_must_be_valid = expecting_first_page_;
expecting_first_page_ = false;
#endif
@@ -162,7 +172,7 @@ void PrintViewManagerBase::OnDidPrintPage(
}
}
-#if defined(OS_WIN)
+#if defined(OS_WIN) && PRINTING_USE_EMF_METAFILE
bool big_emf = (params.data_size && params.data_size >= kMetafileMaxSize);
int raster_size = std::min(params.page_size.GetArea(),
kMaxRasterSizeInPixels);
@@ -179,6 +189,8 @@ void PrintViewManagerBase::OnDidPrintPage(
return;
}
}
+#elif 0 && defined(OS_WIN) && !PRINTING_USE_EMF_METAFILE
+ ConvertPDFToEMF(metafile.Pass());
#endif
// Update the rendered document. It will send notifications to the listener.
@@ -395,7 +407,8 @@ void PrintViewManagerBase::DisconnectFromCurrentPrintJob() {
// DO NOT wait for the job to finish.
ReleasePrintJob();
}
-#if defined(OS_POSIX) && !defined(OS_MACOSX)
+#if (defined(OS_POSIX) && !defined(OS_MACOSX)) || \
+ (defined(OS_WIN) && !PRINTING_USE_EMF_METAFILE)
expecting_first_page_ = true;
#endif
}
@@ -538,4 +551,19 @@ void PrintViewManagerBase::ReleasePrinterQuery() {
base::Bind(&PrinterQuery::StopWorker, printer_query.get()));
}
+#if 0 && defined(OS_WIN) && !PRINTING_USE_EMF_METAFILE
+void PrintViewManagerBase::ConvertPDFToEMF(
+ scoped_ptr<NativeMetafile> metafile) {
+ scoped_ptr<ServiceUtilityProcessHost> utility_host(
Vitaly Buka (NO REVIEWS) 2014/04/24 22:47:58 ServiceUtilityProcessHost is for use in Service pr
scottmg 2014/04/25 20:47:18 Thanks for the pointer, that seems to be mostly wo
+ new ServiceUtilityProcessHost(this, client_message_loop_proxy));
+ if (utility_host->StartRenderPDFPagesToMetafile(
+ pdf_path,
+ printing::PdfRenderSettings(render_area, render_dpi, false),
+ page_ranges)) {
Vitaly Buka (NO REVIEWS) 2014/04/24 22:47:58 Message ChromeUtilityMsg_RenderPDFPagesToMetafile
Vitaly Buka (NO REVIEWS) 2014/04/25 05:25:48 It's going to be harder then I thought, Win32 meta
scottmg 2014/04/25 20:47:18 I gave it a shot, basically using GetEnhMetaFileBi
+ // The object will self-destruct when the child process dies.
+ utility_host.release();
+ }
+}
+#endif // OS_WIN && !PRINTING_USE_EMF_METAFILE
+
} // namespace printing

Powered by Google App Engine
This is Rietveld 408576698