On 1/21/2016 10:10 PM, Patrick Gundlach wrote:

Is there a way to prevent LuaTeX from stopping the whole process? Is there a 
function like

can_you_handle_this_imagetype(filename="foo.tiff")

?

local imgscan   = img.scan
local supported = { pdf = true, jpg = true, png = true }

function img.scan(t)
    if t and t.filename then
        local e = string.match(t.filename,".-%.(.-)$")
        if supported[e] then
            return imgscan(t)
        end
    end
end

local foo = img.scan({filename = "foo.tiff"})
local foo = img.scan({filename = "foo.pdf"})


in my (real) case I don't have a file extension. I need to ask LuaTeX: do you 
understand that file format? I guess there is no way except for a fatal error, 
right?

just open the file look at the magic bytes

local imgscan = img.scan

local valid = {
    ["png"] = string.char(0x89,0x50,0x4E,0x47,0x0D,0x0A,0x1A,0x0A),
    ["jpg"] = string.char(0xFF,0xD8,0xFF),
["jp2"] = string.char(0x00,0x00,0x00,0x0C,0x6A,0x50,0x20,0x20,0x0D,0x0A),
    ["gif"] = "GIF",
    ["pdf"] = ".-%%PDF",
}

function img.scan(t)
    if t and t.filename then
        local f = io.open(t.filename,"rb")
        if f then
            local d = f:read(5000)
            for k, v in pairs(valid) do
                if string.find(d,"^"..v) then
                    return imgscan(t)
                end
            end
        end
    end
end

print(img.scan({filename = "hacker1b.tif"}))
print(img.scan({filename = "cow.pdf"}))
print(img.scan({filename = "mill.png"}))



-----------------------------------------------------------------
                                          Hans Hagen | PRAGMA ADE
              Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
      tel: 038 477 53 69 | www.pragma-ade.com | www.pragma-pod.nl
-----------------------------------------------------------------

Reply via email to