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

Unified Diff: pdf/pdfium/pdfium_engine.cc

Issue 2541843005: Revert "Printing: Load the source PDF only once." (Closed)
Patch Set: Created 4 years 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
« no previous file with comments | « pdf/pdfium/pdfium_engine.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pdf/pdfium/pdfium_engine.cc
diff --git a/pdf/pdfium/pdfium_engine.cc b/pdf/pdfium/pdfium_engine.cc
index 0853d79beb294ae9a103eb0e065615401ec53148..80f1fd6d9d709c33a890fb8064226b5e6979e3f1 100644
--- a/pdf/pdfium/pdfium_engine.cc
+++ b/pdf/pdfium/pdfium_engine.cc
@@ -4007,17 +4007,19 @@ PDFEngineExports* PDFEngineExports::Get() {
}
#if defined(OS_WIN)
-bool PDFiumEngineExports::RenderPDFPageToDC(void* pdf_handle,
+bool PDFiumEngineExports::RenderPDFPageToDC(const void* pdf_buffer,
+ int buffer_size,
int page_number,
const RenderingSettings& settings,
HDC dc) {
- FPDF_DOCUMENT doc = pdf_handle;
+ FPDF_DOCUMENT doc = FPDF_LoadMemDocument(pdf_buffer, buffer_size, nullptr);
if (!doc)
return false;
FPDF_PAGE page = FPDF_LoadPage(doc, page_number);
- if (!page)
+ if (!page) {
+ FPDF_CloseDocument(doc);
return false;
-
+ }
RenderingSettings new_settings = settings;
// calculate the page size
if (new_settings.dpi_x == -1)
@@ -4071,6 +4073,7 @@ bool PDFiumEngineExports::RenderPDFPageToDC(void* pdf_handle,
}
RestoreDC(dc, save_state);
FPDF_ClosePage(page);
+ FPDF_CloseDocument(doc);
return true;
}
@@ -4086,16 +4089,20 @@ void PDFiumEngineExports::SetPDFUseGDIPrinting(bool enable) {
#endif // defined(OS_WIN)
bool PDFiumEngineExports::RenderPDFPageToBitmap(
- void* pdf_handle,
+ const void* pdf_buffer,
+ int pdf_buffer_size,
int page_number,
const RenderingSettings& settings,
void* bitmap_buffer) {
- FPDF_DOCUMENT doc = pdf_handle;
+ FPDF_DOCUMENT doc =
+ FPDF_LoadMemDocument(pdf_buffer, pdf_buffer_size, nullptr);
if (!doc)
return false;
FPDF_PAGE page = FPDF_LoadPage(doc, page_number);
- if (!page)
+ if (!page) {
+ FPDF_CloseDocument(doc);
return false;
+ }
pp::Rect dest;
int rotate = CalculatePosition(page, settings, &dest);
@@ -4114,49 +4121,48 @@ bool PDFiumEngineExports::RenderPDFPageToBitmap(
FPDF_ANNOT | FPDF_PRINTING | FPDF_NO_CATCH);
FPDFBitmap_Destroy(bitmap);
FPDF_ClosePage(page);
+ FPDF_CloseDocument(doc);
return true;
}
bool PDFiumEngineExports::GetPDFDocInfo(const void* pdf_buffer,
int buffer_size,
int* page_count,
- double* max_page_width,
- void** pdf_handle) {
+ double* max_page_width) {
FPDF_DOCUMENT doc = FPDF_LoadMemDocument(pdf_buffer, buffer_size, nullptr);
if (!doc)
return false;
-
int page_count_local = FPDF_GetPageCount(doc);
- if (page_count)
+ if (page_count) {
*page_count = page_count_local;
-
+ }
if (max_page_width) {
*max_page_width = 0;
for (int page_number = 0; page_number < page_count_local; page_number++) {
double page_width = 0;
double page_height = 0;
FPDF_GetPageSizeByIndex(doc, page_number, &page_width, &page_height);
- *max_page_width = std::max(*max_page_width, page_width);
+ if (page_width > *max_page_width) {
+ *max_page_width = page_width;
+ }
}
}
-
- if (pdf_handle)
- *pdf_handle = doc; // Caller takes ownership.
- else
- FPDF_CloseDocument(pdf_handle);
+ FPDF_CloseDocument(doc);
return true;
}
-void PDFiumEngineExports::ReleasePDFHandle(void* pdf_handle) {
- FPDF_CloseDocument(pdf_handle);
-}
-
-bool PDFiumEngineExports::GetPDFPageSizeByIndex(void* pdf_handle,
+bool PDFiumEngineExports::GetPDFPageSizeByIndex(const void* pdf_buffer,
+ int pdf_buffer_size,
int page_number,
double* width,
double* height) {
- FPDF_DOCUMENT doc = pdf_handle;
- return doc && FPDF_GetPageSizeByIndex(doc, page_number, width, height) != 0;
+ FPDF_DOCUMENT doc =
+ FPDF_LoadMemDocument(pdf_buffer, pdf_buffer_size, nullptr);
+ if (!doc)
+ return false;
+ bool success = FPDF_GetPageSizeByIndex(doc, page_number, width, height) != 0;
+ FPDF_CloseDocument(doc);
+ return success;
}
} // namespace chrome_pdf
« no previous file with comments | « pdf/pdfium/pdfium_engine.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698