X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fpdf%2Fpdf.cc;h=b51cc9a0c271c579bb3cc05b269a5331f447931c;hb=5263abf6d9f2e1917833cc1b136cfb4f8c94a28c;hp=c828f02dbdfc217a1b9ea90e86ca67f95a4a3c19;hpb=6224775ba4774f77854d1ac0f7e74b4a22eba13f;p=swftools.git diff --git a/lib/pdf/pdf.cc b/lib/pdf/pdf.cc index c828f02..b51cc9a 100644 --- a/lib/pdf/pdf.cc +++ b/lib/pdf/pdf.cc @@ -22,6 +22,8 @@ static char* global_page_range = 0; static parameter_t* device_config = 0; static parameter_t* device_config_next = 0; +static int globalparams_count=0; + typedef struct _pdf_page_info { int xMin, yMin, xMax, yMax; @@ -106,6 +108,8 @@ void render2(gfxpage_t*page, gfxdevice_t*dev) } pi->doc->displayPage((OutputDev*)pi->outputDev, page->nr, zoom*multiply, zoom*multiply, /*rotate*/0, true, true, /*doLinks*/(int)1); pi->doc->processLinks((OutputDev*)pi->outputDev, page->nr); + pi->outputDev->finishPage(); + pi->outputDev->setDevice(0); if(pi->middev) { gfxdevice_rescale_setdevice(pi->middev, 0x00000000); @@ -133,8 +137,6 @@ void pdfpage_rendersection(gfxpage_t*page, gfxdevice_t*output, gfxcoord_t x, gfx render2(page, output); } -static int globalparams_count=0; - void pdf_doc_destroy(gfxdocument_t*gfx) { pdf_doc_internal_t*i= (pdf_doc_internal_t*)gfx->internal; @@ -194,10 +196,6 @@ gfxpage_t* pdf_doc_getpage(gfxdocument_t*doc, int page) if(page < 1 || page > doc->num_pages) return 0; - if(di->nocopy) { - msg(" PDF disallows copying."); - return 0; - } gfxpage_t* pdf_page = (gfxpage_t*)malloc(sizeof(gfxpage_t)); pdf_page_internal_t*pi= (pdf_page_internal_t*)malloc(sizeof(pdf_page_internal_t)); @@ -332,7 +330,7 @@ static void pdf_set_parameter(gfxsource_t*src, const char*name, const char*value addGlobalFontDir(value); } else if(!strcmp(name, "pages")) { global_page_range = strdup(value); - } else if(!strncmp(name, "font", strlen("font"))) { + } else if(!strncmp(name, "font", strlen("font")) && name[4]!='q') { addGlobalFont(value); } else if(!strncmp(name, "languagedir", strlen("languagedir"))) { addGlobalLanguageDir(value); @@ -361,10 +359,14 @@ static void pdf_set_parameter(gfxsource_t*src, const char*name, const char*value multiply = atoi(value); } else if(!strcmp(name, "help")) { printf("\nPDF device global parameters:\n"); - printf("fontdir= a directory with additional fonts\n"); - printf("font= an dditional font filename\n"); - printf("pages= the range of pages to convert (example: pages=1-100,210-)\n"); - printf("zoom= the resultion (default: 72)\n"); + printf("fontdir= a directory with additional fonts\n"); + printf("font= an additional font filename\n"); + printf("pages= the range of pages to convert (example: pages=1-100,210-)\n"); + printf("zoom= the resultion (default: 72)\n"); + printf("languagedir= Add an xpdf language directory\n"); + printf("multiply= Render everything at the resolution\n"); + printf("poly2bitmap Convert graphics to bitmaps\n"); + printf("bitmap Convert everything to bitmaps\n"); } storeDeviceParameter(name,value); } @@ -480,6 +482,17 @@ void pdf_destroy(gfxsource_t*src) return; gfxsource_internal_t*i = (gfxsource_internal_t*)src->internal; free(src->internal);src->internal=0; + + parameter_t*p = device_config; + while(p) { + parameter_t*next = p->next; + if(p->name) free(p->name);p->name = 0; + if(p->value) free(p->value);p->value =0; + p->next = 0;delete p; + p = next; + } + delete globalParams;globalParams = 0; + free(src); } gfxsource_t*gfxsource_pdf_create()