X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fpdf%2Fpdf.cc;h=ef5f4f03773678301c730140fc3e22161fa034b8;hb=d46619a310dd04066cc117e904b84785d1a0cd51;hp=ed10e20d9a6847da4dfaff4e4c51c9261e4eda4b;hpb=6a65926cf1dcf7c0d4963985887f71327d9ce2f2;p=swftools.git diff --git a/lib/pdf/pdf.cc b/lib/pdf/pdf.cc index ed10e20..ef5f4f0 100644 --- a/lib/pdf/pdf.cc +++ b/lib/pdf/pdf.cc @@ -57,7 +57,6 @@ typedef struct _pdf_doc_internal InfoOutputDev*info; pdf_page_info_t*pages; - gfxdevice_t* middev; char*filename; /* page map */ @@ -133,6 +132,11 @@ static void render2(gfxpage_t*page, gfxdevice_t*dev, int x,int y, int x1,int y1, pdf_doc_internal_t*pi = (pdf_doc_internal_t*)page->parent->internal; gfxsource_internal_t*i = (gfxsource_internal_t*)pi->parent->internal; + if(pi->nocopy) { + msg(" PDF disallows copying"); + exit(0); + } + CommonOutputDev*outputDev = 0; if(pi->config_full_bitmap_optimizing) { FullBitmapOutputDev*d = new FullBitmapOutputDev(pi->info, pi->doc); @@ -150,6 +154,12 @@ static void render2(gfxpage_t*page, gfxdevice_t*dev, int x,int y, int x1,int y1, outputDev->setParameter(p->name, p->value); p = p->next; } + p = pi->parameters.device_config; + while(p) { + outputDev->setParameter(p->name, p->value); + p = p->next; + } + outputDev->setPageMap(pi->pagemap, pi->pagemap_pos); outputDev->setMove(x,y); outputDev->setClip(x1,y1,x2,y2); @@ -160,7 +170,7 @@ static void render2(gfxpage_t*page, gfxdevice_t*dev, int x,int y, int x1,int y1, gfxdevice_rescale_init(middev, 0x00000000, 0, 0, 1.0 / multiply); gfxdevice_rescale_setdevice(middev, dev); middev->setparameter(middev, "protect", "1"); - dev = pi->middev; + dev = middev; } if(!pi) { @@ -426,6 +436,12 @@ static void pdf_set_parameter(gfxsource_t*src, const char*name, const char*value } } +void pdf_doc_prepare(gfxdocument_t*doc, gfxdevice_t*dev) +{ + pdf_doc_internal_t*i= (pdf_doc_internal_t*)doc->internal; + i->info->dumpfonts(dev); +} + static gfxdocument_t*pdf_open(gfxsource_t*src, const char*filename) { gfxsource_internal_t*isrc = (gfxsource_internal_t*)src->internal; @@ -502,8 +518,8 @@ static gfxdocument_t*pdf_open(gfxsource_t*src, const char*filename) pdf_doc->set_parameter = pdf_doc_set_parameter; pdf_doc->getinfo = pdf_doc_getinfo; pdf_doc->getpage = pdf_doc_getpage; - - + pdf_doc->prepare = pdf_doc_prepare; + return pdf_doc; }