+ gfxsource_internal_t*i = (gfxsource_internal_t*)pi->parent->internal;
+
+ if(!pi->config_print && pi->nocopy) {msg("<fatal> PDF disallows copying");exit(0);}
+ if(pi->config_print && pi->noprint) {msg("<fatal> PDF disallows printing");exit(0);}
+
+ CommonOutputDev*outputDev = 0;
+ if(pi->config_full_bitmap_optimizing) {
+ FullBitmapOutputDev*d = new FullBitmapOutputDev(pi->info, pi->doc);
+ outputDev = (CommonOutputDev*)d;
+ } else if(pi->config_bitmap_optimizing) {
+ BitmapOutputDev*d = new BitmapOutputDev(pi->info, pi->doc);
+ outputDev = (CommonOutputDev*)d;
+ } else {
+ GFXOutputDev*d = new GFXOutputDev(pi->info, pi->doc);
+ outputDev = (CommonOutputDev*)d;
+ }
+ /* pass global parameters to PDF driver*/
+ parameter_t*p = i->parameters.device_config;
+ while(p) {
+ 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);
+
+ gfxdevice_t* middev=0;
+ if(multiply>1) {
+ middev = (gfxdevice_t*)malloc(sizeof(gfxdevice_t));
+ gfxdevice_rescale_init(middev, 0x00000000, 0, 0, 1.0 / multiply);
+ gfxdevice_rescale_setdevice(middev, dev);
+ middev->setparameter(middev, "protect", "1");
+ dev = middev;