summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/lpdf-pdx.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/context/base/lpdf-pdx.lua')
-rw-r--r--Master/texmf-dist/tex/context/base/lpdf-pdx.lua139
1 files changed, 0 insertions, 139 deletions
diff --git a/Master/texmf-dist/tex/context/base/lpdf-pdx.lua b/Master/texmf-dist/tex/context/base/lpdf-pdx.lua
deleted file mode 100644
index 0a440c1e665..00000000000
--- a/Master/texmf-dist/tex/context/base/lpdf-pdx.lua
+++ /dev/null
@@ -1,139 +0,0 @@
-if not modules then modules = { } end modules ['lpdf-pdx'] = {
- version = 1.001,
- comment = "companion to lpdf-ini.mkiv",
- author = "Peter Rold and Hans Hagen",
- copyright = "PRAGMA ADE / ConTeXt Development Team",
- license = "see context related readme files",
-}
-
-local codeinjections = backends.codeinjections -- normally it is registered
-local variables = interfaces.variables
-
-local pdfdictionary = lpdf.dictionary
-local pdfarray = lpdf.array
-local pdfconstant = lpdf.constant
-local pdfreference = lpdf.reference
-local pdfflushobject = lpdf.flushobject
-local pdfstring = lpdf.string
-local pdfverbose = lpdf.verbose
-
-local lower, gmatch = string.lower, string.gmatch
-
-local channels = {
- gray = 1,
- grey = 1,
- rgb = 3,
- cmyk = 4,
-}
-
-local prefixes = {
- gray = "DefaultGray",
- grey = "DefaultGray",
- rgb = "DefaultRGB",
- cmyk = "DefaultCMYK",
-}
-
-local profiles = { }
-local defaults = { }
-local intents = pdfarray()
-local lastprofile = nil
-
-function codeinjections.useinternalICCprofile(colorspace,filename)
- local name = lower(file.basename(filename))
- local profile = profiles[name]
- if not profile then
- local colorspace = lower(colorspace)
- local filename = resolvers.findctxfile(filename) or ""
- local channel = channels[colorspace]
- if channel and filename ~= "" then
- local a = pdfdictionary { N = channel }
- profile = pdf.obj {
- compresslevel = 0,
- immediate = true,
- type = "stream",
- file = filename,
- attr = a(),
- }
- profiles[name] = profile
- end
- end
- lastprofile = profile
- return profile
-end
-
-function codeinjections.useexternalICCprofile(colorspace,name,urls,checksum,version)
- local profile = profiles[name]
- if not profile then
- local u = pdfarray()
- for url in gmatch(urls,"([^, ]+)") do
- u[#u+1] = pdfdictionary {
- FS = pdfconstant("URL"),
- F = pdfstring(url),
- }
- end
- local d = pdfdictionary {
- ProfileName = name, -- not file name!
- ProfileCS = colorspace,
- URLs = u, -- array containing at least one URL
- CheckSum = pdfverbose { "<", checksum, ">" }, -- 16byte MD5 hash
- ICCVersion = pdfverbose { "<", version, ">" }, -- bytes 8..11 from the header of the ICC profile, as a hex string
- }
- local n = pdfflushobject(d)
- profiles[name] = n
- lastprofile = n
- return n
- end
-end
-
-local function embedprofile(colorspace,filename)
- local colorspace = lower(colorspace)
- local n = codeinjections.useinternaliccprofile(colorspace,filename)
- if n then
- local a = pdfarray {
- pdfconstant("ICCBased"),
- pdfreference(n),
- }
- lpdf.adddocumentcolorspace(prefixes[colorspace],pdfreference(pdfflushobject(a))) -- part of page /Resources
- defaults[lower(colorspace)] = filename
- end
-end
-
-
-function codeinjections.useICCdefaultprofile(colorspace,filename)
- defaults[lower(colorspace)] = filename
-end
-
-local function flushembeddedprofiles()
- for colorspace, filename in next, defaults do
- embedprofile(colorspace,filename)
- end
-end
-
-function codeinjections.usePDFXoutputintent(id,name,reference,outputcondition,info)
- local d = {
- Type = pdfconstant("OutputIntent"),
- S = pdfconstant("GTS_PDFX"),
- OutputConditionIdentifier = id,
- RegistryName = name,
- OutputCondition = outputcondition,
- Info = info,
- }
- local icc = lastprofile
- if reference == variables.yes then
- d["DestOutputProfileRef"] = pdfreference(icc)
- else
- d["DestOutputProfile"] = pdfreference(icc)
- end
- -- intents[#intents+1] = pdfdictionary(d)
- intents[#intents+1] = pdfreference(pdfflushobject(pdfdictionary(d))) -- nicer as separate object
-end
-
-local function flushoutputintents()
- if #intents > 0 then
- lpdf.addtocatalog("OutputIntents",pdfreference(pdfflushobject(intents)))
- end
-end
-
-
-lpdf.registerdocumentfinalizer(flushoutputintents,1)
-lpdf.registerdocumentfinalizer(flushembeddedprofiles,1)