From 656d5141a17237bac0882ed847225558c3d75de4 Mon Sep 17 00:00:00 2001 From: tanmayanand44 Date: Thu, 13 Jun 2019 00:47:55 +0530 Subject: [PATCH] Added handling of zero page input and minor code quality improvement --- filter/pdftoraster.cxx | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/filter/pdftoraster.cxx b/filter/pdftoraster.cxx index e553e76b8..d19865d30 100644 --- a/filter/pdftoraster.cxx +++ b/filter/pdftoraster.cxx @@ -1547,7 +1547,7 @@ static unsigned char *removeAlpha(unsigned char *src, unsigned char *dst, unsign return temp; } -static void writePageImage(cups_raster_t *raster, poppler::document *doc1, +static void writePageImage(cups_raster_t *raster, poppler::document *doc, int pageNo) { ConvertLineFunc convertLine; @@ -1555,7 +1555,7 @@ static void writePageImage(cups_raster_t *raster, poppler::document *doc1, unsigned char *dp; unsigned int rowsize; - poppler::page *current_page =doc1->create_page(pageNo-1); + poppler::page *current_page =doc->create_page(pageNo-1); poppler::page_renderer pr; pr.set_render_hint(poppler::page_renderer::text_antialiasing); @@ -1646,11 +1646,9 @@ static void writePageImage(cups_raster_t *raster, poppler::document *doc1, if (allocLineBuf) delete[] lineBuf; } -static void outPage(poppler::document *doc1, int pageNo, +static void outPage(poppler::document *doc, int pageNo, cups_raster_t *raster) { - // Page *page = catalog->getPage(pageNo); - // PDFRectangle mediaBox = *page->getMediaBox(); int rotate = 0; double paperdimensions[2], /* Physical size of the paper */ margins[4]; /* Physical margins of print */ @@ -1658,7 +1656,7 @@ static void outPage(poppler::document *doc1, int pageNo, double l, swap; int i; - poppler::page *current_page =doc1->create_page(pageNo-1); + poppler::page *current_page =doc->create_page(pageNo-1); poppler::page_box_enum box = poppler::page_box_enum::media_box; poppler::rectf mediaBox = current_page->page_rect(box); poppler::page::orientation_enum orient = current_page->orientation(); @@ -1834,7 +1832,7 @@ static void outPage(poppler::document *doc1, int pageNo, } /* write page image */ - writePageImage(raster,doc1,pageNo); + writePageImage(raster,doc,pageNo); } static void setPopplerColorProfile() @@ -1923,9 +1921,9 @@ static void setPopplerColorProfile() } int main(int argc, char *argv[]) { - poppler::document *doc1; + poppler::document *doc; int i; - int npages; + int npages=0; cups_raster_t *raster; cmsSetLogErrorHandler(lcmsErrorHandler); @@ -1953,7 +1951,7 @@ int main(int argc, char *argv[]) { } } close(fd); - doc1=poppler::document::load_from_file(name,"",""); + doc=poppler::document::load_from_file(name,"",""); /* remove name */ unlink(name); } else { @@ -1966,15 +1964,11 @@ int main(int argc, char *argv[]) { } parsePDFTOPDFComment(fp); fclose(fp); - doc1=poppler::document::load_from_file(argv[6],"",""); + doc=poppler::document::load_from_file(argv[6],"",""); } - if (doc1==NULL) { - exitCode = 1; - goto err1; - } - - npages = doc1->pages(); + if(doc != NULL) + npages = doc->pages(); /* fix NumCopies, Collate ccording to PDFTOPDFComments */ header.NumCopies = deviceCopies; @@ -2073,13 +2067,20 @@ int main(int argc, char *argv[]) { exit(1); } selectConvertFunc(raster); - for (i = 1;i <= npages;i++) { - outPage(doc1,i,raster); + if(doc != NULL){ + for (i = 1;i <= npages;i++) { + outPage(doc,i,raster); + } } + else{ + exitCode = 1; + goto err1; + } + cupsRasterClose(raster); err1: - delete doc1; + delete doc; if (ppd != NULL) { ppdClose(ppd); } -- 2.47.2