Hi, triggered by a question on the user list I created a lua script which creates a contact sheet (Kontaktabzug) for a set of JPGs. The output is a PDF document. The script uses lualatex to do the job. How do I incorporate that script into darktable?
The script works pretty well on the commandline. You can try it out. It is attached below. Just say do_contactsheet.lua /path/to/pictures/*.jpg /path/to/otherpictures/*.png This will create a contactsheet.pdf in the current directory. With optional commandline parameters --title and --count you can set a different document title and a different number of pictures per line (default is 4) What I would like to do is: - include it into darktable to excecute it for the current film roll - set the title to the name of the film roll - retrieve all JPGs/PNGs from the current export directory and create the contactsheet.pdf in that directory - call the pdf viewer when the script is finished (how to determine the default pdf viewer?) - eventually allow the user to set the "count" parameter to a different value - eventually allow the user to set the "title" parameter to a different value I need some help to get there. I dont know how to retrieve the internal darktable parameters, like the current filmroll, nor do I now how to interact with the user in darktable. Your advice is appreciated Matthias Here is the script: ------------------- #!/usr/bin/lua -- do_contactsheet.lua creates a contact sheet (Kontakabzug) for a set of pictures -- it uses LaTeX to create a PDF document -- it supports JPG and PNG files -- (c) Matthias Bodenbinder, May 2015 -- default values title = "Kontaktabzüge" thumbs_per_line = 4 -- LaTeX preamble tex_start="\\documentclass[a4paper,10pt]{article}\ \\usepackage{graphicx}\ \\usepackage{fontspec}\ \\pagestyle{empty}\ \\parindent0pt\ \\parskip1em\ \\usepackage{geometry}\ \\geometry{a4paper,left=5mm,right=5mm, top=5mm, bottom=5mm}\ \\begin{document}" -- place a thumbnail function thumbnail(i,f) -- i = number of this picture -- f = fullpath to picture -- remove leading path to retrieve filename label = string.gsub(f, ".*/", "") -- print thumbnail in minipage return "\\begin{minipage}[b]{" .. w .. "\\textwidth}\n" .. " \\includegraphics[width=\\textwidth]{" .. f .. "}\\newline\n" .. " \\centering{\\verb|" .. i .. ": " .. label .. "|}\n" .. "\\end{minipage}\n" end -- print usage message function usage() print("Usage: " .. arg[0] .. " --title <title> --count <thumbs per line> <pictures jpg/png>") end -- main loop -- check for lualatex and exit if it does not exist if( not os.execute("which lualatex >/dev/null") )then print("lualatex not found. Aborting!") os.exit() end pictures = "" pcount = 0 i = 1 -- width of a single picture w = 1/thumbs_per_line - 0.01; while i<=#arg do if (arg[i] == "--title" or arg[i] == "-t") then -- next arg is the title title = arg[i+1] -- go to next picture i=i+2 elseif (arg[i] == "--count" or arg[i] == "-c") then -- next arg is thumbs per line thumbs_per_line = arg[i+1] -- calculate new picture width w = 1/thumbs_per_line - 0.01; -- go to next picture i=i+2 elseif (arg[i] == "--help" or arg[i] == "-h") then usage() os.exit() else pcount=pcount+1; pictures = pictures .. thumbnail(pcount, arg[i]) i=i+1 if( pcount % thumbs_per_line == 0 ) then -- enough pictures in one line => pictures = pictures .. "\\par\n" else pictures = pictures .. "\\hspace{1mm}\n" end end end -- write tex file to /tmp basefile = "/tmp/contactsheet" texfile = basefile .. ".tex" pdffile = basefile .. ".pdf" f = io.output(texfile, "w") io.write(tex_start) io.write("{\\Large\\bfseries " .. title .. "}\\par\n") io.write(pictures) io.write("\\end{document}") io.close() -- execute lualatex to create pdf file os.execute("cd /tmp; lualatex " .. texfile) -- move pdf to current folder if( not os.execute("mv " .. pdffile .. " .") ) then print("file does not exist: " .. pdffile) end ------------------------------------------------------------------------------ One dashboard for servers and applications across Physical-Virtual-Cloud Widest out-of-the-box monitoring support with 50+ applications Performance metrics, stats and reports that give you Actionable Insights Deep dive visibility with transaction tracing using APM Insight. http://ad.doubleclick.net/ddm/clk/290420510;117567292;y _______________________________________________ darktable-devel mailing list darktable-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/darktable-devel