Example #1
0
static PyObject* f_createImageList(PyObject* parent, PyObject* args, PyObject* kwargs)
{
    static char *kwlist[] = {NULL};
    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "", kwlist))
	return NULL;
    OutputObject*self = PyObject_New(OutputObject, &OutputClass);
    
    self->output_device = (gfxdevice_t*)malloc(sizeof(gfxdevice_t));
    gfxdevice_render_init(self->output_device);
    return (PyObject*)self;
}
Example #2
0
int main(int argn, char *argv[])
{
    processargs(argn, argv);
    initLog(0,-1,0,0,-1,loglevel);
    
    if(!filename) {
	fprintf(stderr, "Please specify an input file\n");
	exit(1);
    }
    
    if(!outputname)
    {
	if(filename) {
	    outputname = stripFilename(filename, ".out");
	    msg("<notice> Output filename not given. Writing to %s", outputname);
	} 
    }
    if(!outputname)
    {
	fprintf(stderr, "Please use -o to specify an output file\n");
	exit(1);
    }
    is_in_range(0x7fffffff, pagerange);
    if(pagerange)
	driver->setparameter(driver, "pages", pagerange);

    if(!filename) {
	args_callback_usage(argv[0]);
	exit(0);
    }

    gfxdocument_t* doc = driver->open(driver, filename);
    if(!doc) {
        msg("<error> Couldn't open %s", filename);
        exit(1);
    }

    if(!format) {
	char*x = strrchr(outputname, '.');
	if(x) 
	    format = x+1;
    }


    gfxresult_t*result = 0;
#ifdef HAVE_LRF
    if(!strcasecmp(format, "lrf")) {
        gfxdevice_t lrf;
        gfxdevice_lrf_init(&lrf);

        gfxdevice_t rescale;
        gfxdevice_rescale_init(&rescale, &lrf, 592, 732, 0);

        gfxdevice_t*out = &rescale;
        out->setparameter(out, "keepratio", "1");
        out->setparameter(out, "pagepattern", outputname);

        gfxdevice_t bbox2,*bbox=&bbox2;
        gfxdevice_bbox_init(bbox);
        bbox->setparameter(bbox, "graphics", "0");

        int pagenr;

        for(pagenr = 1; pagenr <= doc->num_pages; pagenr++) 
        {
            if(is_in_range(pagenr, pagerange)) {
                gfxpage_t* page = doc->getpage(doc, pagenr);
                bbox->startpage(bbox,-1,-1);
                page->render(page, bbox);
                gfxbbox_t b = gfxdevice_bbox_getbbox(bbox);

                out->startpage(out, b.xmax-b.xmin, b.ymax-b.ymin);
                page->rendersection(page, out, -b.xmin, -b.ymin, 0,0,b.xmax-b.xmin,b.ymax-b.ymin);
                out->endpage(out);

                page->destroy(page);
            }
        }
        result = out->finish(out);
    } else 
#endif
    {
        gfxdevice_t _out,*out=&_out;
        if(!strcasecmp(format, "ocr")) {
            gfxdevice_ocr_init(out);
        } else if(!strcasecmp(format, "swf")) {
            gfxdevice_swf_init(out);
        } else if(!strcasecmp(format, "img") || !strcasecmp(format, "png")) {
            gfxdevice_render_init(out);
	    out->setparameter(out, "antialize", "4");
        } else if(!strcasecmp(format, "txt")) {
            gfxdevice_text_init(out);
        } else if(!strcasecmp(format, "log")) {
            gfxdevice_file_init(out, "/tmp/device.log");
        } else if(!strcasecmp(format, "pdf")) {
            gfxdevice_pdf_init(out);
        } else {
	    msg("<error> Invalid output format: %s", format);
	    exit(1);
	}

        int pagenr;
        for(pagenr = 1; pagenr <= doc->num_pages; pagenr++) 
        {
            if(is_in_range(pagenr, pagerange)) {
                gfxpage_t* page = doc->getpage(doc, pagenr);
                out->startpage(out, page->width, page->height);
                page->render(page, out);
                out->endpage(out);
                page->destroy(page);
            }
        }
        result = out->finish(out);
    }

    if(result) {
	if(result->save(result, outputname) < 0) {
	    exit(1);
	}
	result->destroy(result);
    }

    doc->destroy(doc);

    driver->destroy(driver);
    return 0;
}