Comment 11 for bug 267006

Revision history for this message
Kuzemko Aleksandr (kuzemkoa-rambler) wrote :

Function with better support of vector format image. It read first page of pdf, svg, djvu files with image resolution 300dpi.

I have problem with getting number of pages of multipage images. Anybody can help me with this?
...
#define MIN_DPI_FOR_VECTOR_FORMAT 300
...

static char* read_file(const char *fname) {
    Blob blob;
    size_t data_size;
    char *dib;
    try {
        Image image;
        image.density("10");
        image.ping(fname);
        if (image.magick()=="PDF" or image.magick()=="SVG" or image.magick()=="DJVU")
        {
        image.density(Geometry(MIN_DPI_FOR_VECTOR_FORMAT,MIN_DPI_FOR_VECTOR_FORMAT));//change from default 72 dpi
        }
        int i=0;//read first page
        char temp[1024] = {0};
        while(1)
        {
        sprintf(temp, "%s[%d]",fname, i );
        i++;
        cout << "We read " << temp << " file" << endl;
        image.read(temp);
        }
        image.depth(24);
        // Write to BLOB in BMP format
        image.write(&blob, "DIB");
    } catch(Exception &error_) {
        cerr << error_.what() << "\n";
        return NULL;
    }
    data_size = blob.length();
    dib = new char[data_size];
    memcpy(dib, blob.data(), data_size);
    return dib;
}