Hello, I'm using the following code, mentioned here some time ago, to get some info about PDF: ---- \startluacode figures.getinfo = function(name, page) if type(name) == "string" then name = { name = name, page = page } end if name.name then local data = figures.push(name) --figures.identify() local ok, res = pcall(figures.identify) print(">>1", ok, res) --figures.check() local ok, res = pcall(figures.check) print(">>2", ok, res) figures.pop() return data end end local data = figures.getinfo("NonExisting.pdf") \stopluacode ---- The problem is that once the PDF file doesn't exist, the function causes ConTeXt to exit, even when I enclose 'figure.check()' into the 'pcall' (to be handled like try/catch mechanism). Is there a way so that the function 'figures.getinfo()' does't exit ConTeXt, it just returns 'nil', or even gives info which directories (or even which file types) were searched? TIA. Best regards, Lukas -- Ing. Lukáš Procházka | mailto:LPr@pontex.cz Pontex s. r. o. | mailto:pontex@pontex.cz | http://www.pontex.cz | IDDS: nrpt3sn | IČO: 40763439 Bezová 1658 147 14 Praha 4 Mob.: +420 702 033 396
On Thu, Dec 6, 2018 at 11:17 AM Procházka Lukáš Ing.
Hello,
I'm using the following code, mentioned here some time ago, to get some info about PDF:
---- \startluacode figures.getinfo = function(name, page) if type(name) == "string" then name = { name = name, page = page } end if name.name then local data = figures.push(name)
--figures.identify() local ok, res = pcall(figures.identify) print(">>1", ok, res)
--figures.check() local ok, res = pcall(figures.check) print(">>2", ok, res)
figures.pop() return data end end
local data = figures.getinfo("NonExisting.pdf")
\stopluacode ----
The problem is that once the PDF file doesn't exist, the function causes ConTeXt to exit, even when I enclose 'figure.check()' into the 'pcall' (to be handled like try/catch mechanism).
Is there a way so that the function 'figures.getinfo()' does't exit ConTeXt, it just returns 'nil', or even gives info which directories (or even which file types) were searched?
TIA.
something like that (untested), eventaully to be wrapped in a your function local fileone = "NonExisting.pdf" local data if not lfs.isfile(fileone) then report("unknown file %a",fileone) else data = figures.getinfo("NonExisting.pdf") end
-- luigi
Hello Luigi,
On Thu, 06 Dec 2018 11:23:25 +0100, luigi scarso
On Thu, Dec 6, 2018 at 11:17 AM Procházka Lukáš Ing.
wrote: Hello,
I'm using the following code, mentioned here some time ago, to get some info about PDF:
---- \startluacode figures.getinfo = function(name, page) if type(name) == "string" then name = { name = name, page = page } end if name.name then local data = figures.push(name)
--figures.identify() local ok, res = pcall(figures.identify) print(">>1", ok, res)
--figures.check() local ok, res = pcall(figures.check) print(">>2", ok, res)
figures.pop() return data end end
local data = figures.getinfo("NonExisting.pdf")
\stopluacode ----
The problem is that once the PDF file doesn't exist, the function causes ConTeXt to exit, even when I enclose 'figure.check()' into the 'pcall' (to be handled like try/catch mechanism).
Is there a way so that the function 'figures.getinfo()' does't exit ConTeXt, it just returns 'nil', or even gives info which directories (or even which file types) were searched?
TIA.
something like that (untested), eventaully to be wrapped in a your function local fileone = "NonExisting.pdf" local data if not lfs.isfile(fileone) then report("unknown file %a",fileone)
well, yes, this should work; but \externalfigure uses a mechanism to lookup for a file which combines paths specified by "location=", "directory=", "order=" and maybe some more. And whilst \externalfigure should find a file (whose location may not be known exactly, it just may use e.g. "directory=" spec), simple "lfs.isfile(fileone)" could not find the file since the exact path has not been specified. IOW, I need to combine searching-for-file mechanism which is used inside \externalfigure with 'figures.getinfo()' so the 'getinfo()' should return 'nil' when no file (being specified like in \externalfigure, i.e. with no exact path, even without extension) is found. BTW: Ctx tells me "attempt to call a nil value (global 'report')" on "report("unknown file %a",fileone)" - do I have to enable/load something? Lukas
else data = figures.getinfo("NonExisting.pdf") end
-- Ing. Lukáš Procházka | mailto:LPr@pontex.cz Pontex s. r. o. | mailto:pontex@pontex.cz | http://www.pontex.cz | IDDS: nrpt3sn | IČO: 40763439 Bezová 1658 147 14 Praha 4 Mob.: +420 702 033 396
On Thu, Dec 6, 2018 at 11:54 AM Procházka Lukáš Ing.
Hello Luigi,
BTW: Ctx tells me "attempt to call a nil value (global 'report')" on "report("unknown file %a",fileone)" - do I have to enable/load something?
should be something like local report = logs.reporter("my application")
-- luigi
Are you sure that data is not nil here? If so, this function returns nil. dr. Hans van der Meer
On 6 Dec 2018, at 11:20, Procházka Lukáš Ing.
wrote: Hello,
I'm using the following code, mentioned here some time ago, to get some info about PDF:
---- \startluacode figures.getinfo = function(name, page) if type(name) == "string" then name = { name = name, page = page } end if name.name then local data = figures.push(name)
--figures.identify() local ok, res = pcall(figures.identify) print(">>1", ok, res)
--figures.check() local ok, res = pcall(figures.check) print(">>2", ok, res)
figures.pop() return data end end
local data = figures.getinfo("NonExisting.pdf")
\stopluacode ----
The problem is that once the PDF file doesn't exist, the function causes ConTeXt to exit, even when I enclose 'figure.check()' into the 'pcall' (to be handled like try/catch mechanism).
Is there a way so that the function 'figures.getinfo()' does't exit ConTeXt, it just returns 'nil', or even gives info which directories (or even which file types) were searched?
TIA.
Best regards,
Lukas
-- Ing. Lukáš Procházka | mailto:LPr@pontex.cz Pontex s. r. o. | mailto:pontex@pontex.cz | http://www.pontex.cz | IDDS: nrpt3sn | IČO: 40763439 Bezová 1658 147 14 Praha 4
Mob.: +420 702 033 396
___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : http://contextgarden.net ___________________________________________________________________________________
Procházka Lukáš Ing. schrieb am 06.12.18 um 11:20:
Hello,
I'm using the following code, mentioned here some time ago, to get some info about PDF:
---- \startluacode figures.getinfo = function(name, page) if type(name) == "string" then name = { name = name, page = page } end if name.name then local data = figures.push(name)
--figures.identify() local ok, res = pcall(figures.identify) print(">>1", ok, res)
--figures.check() local ok, res = pcall(figures.check) print(">>2", ok, res)
figures.pop() return data end end
local data = figures.getinfo("NonExisting.pdf")
\stopluacode ----
The problem is that once the PDF file doesn't exist, the function causes ConTeXt to exit, even when I enclose 'figure.check()' into the 'pcall' (to be handled like try/catch mechanism).
Is there a way so that the function 'figures.getinfo()' does't exit ConTeXt, it just returns 'nil', or even gives info which directories (or even which file types) were searched?
You can use the \doifelsefigure command for a simple check \setupexternalfigure[location={local,global,default}] \starttext \doifelsefigure{cow}{YES}{NO} \doifelsefigure{mill}{YES}{NO} \doifelsefigure{bridge}{YES}{NO} \stoptext or the following stripped down version of the underlying Lua code of the \doifelsefigure command \setupexternalfigure[location={local,global,default}] \starttext \startluacode local cow = figures.getinfo("cow") if figures.get("status","status",0) == 0 then context("NO") context.par() else context("YES") context.par() end local mill = figures.getinfo("mill") if figures.get("status","status",0) == 0 then context("NO") context.par() else context("YES") context.par() end local bridge = figures.getinfo("bridge") if figures.get("status","status",0) == 0 then context("NO") context.par() else context("YES") context.par() end \stopluacode \stoptext Wolfgang
participants (4)
-
Hans van der Meer
-
luigi scarso
-
Procházka Lukáš Ing.
-
Wolfgang Schuster