On Tue Oct 19, 2021 at 8:51 PM CEST, Pablo Rodriguez via ntg-context wrote:
> On 10/19/21 6:23 PM, Michal Vlasák via ntg-context wrote:
> > On Tue Oct 19, 2021 at 5:47 PM CEST, Pablo Rodriguez via ntg-context wrote:
> > [...]
> > So this works:
> >
> >
> >     \setupinteraction[state=start,
> >       date={2022-02-02T12:00:21+02:00}]
> >     \starttext
> >     This document is from 02.02.2020 at 12:00:21.
> >     \stoptext
> >
> > This parameter sets the "ModDate" is that what you are after?
>
> Hi Michal,
>
> many thanks for your fast reply.
>
> I would like to import both metadata values (CreationDate and ModDate)
> from another file (such as https://pdf.ousia.tk/metadata.pdf).
>
> Besides from the fact that LMTX doesn’t work with this (only MkIV does
> [already reported]), isn’t no simpler way to get ISO 8601 formatting
> from doc.Info.ModDate than the following one?
>
> \starttext
> \startluacode
> function document.transfer_metadata(name)
> local main_doc = lpdf.epdf.load(name)
> context.setupinteraction{ title = main_doc.Info.Title }
> context.setupinteraction{ date = main_doc.Info.ModDate:sub(3,6) ..
> "-" .. main_doc.Info.ModDate:sub(7,8) .. "-" ..
> main_doc.Info.ModDate:sub(9,10) .. "T" ..
> main_doc.Info.ModDate:sub(11,12) .. ":" ..
> main_doc.Info.ModDate:sub(13,14) .. ":" ..
> main_doc.Info.ModDate:sub(15,22):gsub("'", ":") }
> context(main_doc.Info.Title .. "\\par")
> lpdf.epdf.unload(name)
> end
> \stopluacode
> \unexpanded\def\TransferMetadata#1%
> {\ctxlua{document.transfer_metadata("#1")}}
> \startTEXpage[offset=1em, align=center]
> \TransferMetadata{metadata.pdf}
> \stopTEXpage
> \stoptext
>
> > Seems that "CreationDate" could be set by the SOURCE_DATE_EPOCH
> > environment variable, but I am not succesfull with it right now.
>
> It would be fine to ble able to set CreationDate. Otherwise, having a
> ModDate prior to CreationDate gives a weird impression.

I don't know how official these interfaces are. But you can try adapting
the following to your use case.

    \setupinteraction[state=start]
    
    %\luacode{lpdf.settime("2020-02-02 12:00")}
    %\luacode{lpdf.settime(1580641221)}
    
    \startluacode
    
    local Y, M, D, h, m, s, Zs, Zh, Zm = 
string.match("D:20200202120021+02'00'", 
"^D:(%d%d%d%d)(%d%d)(%d%d)(%d%d)(%d%d)(%d%d)([%+%-])(%d%d)%'(%d%d)%'$")
    
    local time = os.time{year=Y,month=M,day=D,hour=h,min=m,sec=s}
    lpdf.settime(time)
    \stopluacode
    
    \starttext
    This document is from 02.02.2020 at 12:00:21.
    \stoptext

The pattern doesn't catch all the PDF spec cases, but should match what
ConTeXt emits. The timezone info gets overwritten by current timezone
though.

Requires the below patch.

Michal

--- a/tex/context/base/mkiv/core-con.lua
+++ b/tex/context/base/mkiv/core-con.lua
@@ -1991,7 +1991,7 @@ function converters.totime(s)
     end
     local n = tonumber(s)
     if n and n >= 0 then
-        return date("*t",n)
+        return osdate("*t",n)
     end
 end
 
diff --git a/tex/context/base/mkxl/lpdf-ini.lmt 
b/tex/context/base/mkxl/lpdf-ini.lmt
index 7979b80..9703ac0 100644
--- a/tex/context/base/mkxl/lpdf-ini.lmt
+++ b/tex/context/base/mkxl/lpdf-ini.lmt
@@ -1123,7 +1123,7 @@ do
             n = converters.totime(n)
             if n then
                 converters.settime(n)
-                timestamp = osdate("%Y-%m-%dT%X") .. ostimezone(true) -- 
probably not ok
+                timestamp = osdate("%Y-%m-%dT%X", ostime(n)) .. 
ostimezone(true) -- probably not ok
             end
         end
         if metadata then
___________________________________________________________________________________
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
___________________________________________________________________________________

Reply via email to