[latex3-commits] [git/LaTeX3-latex3-pdfresources] testlinkstuff: standard info, more driver corrections (b2dd6f5)

Ulrike Fischer fischer at troubleshooting-tex.de
Mon Apr 15 00:28:00 CEST 2019


Repository : https://github.com/latex3/pdfresources
On branch  : testlinkstuff
Link       : https://github.com/latex3/pdfresources/commit/b2dd6f557cb2dcc302089caf14a00dcef8e67c58

>---------------------------------------------------------------

commit b2dd6f557cb2dcc302089caf14a00dcef8e67c58
Author: Ulrike Fischer <fischer at troubleshooting-tex.de>
Date:   Mon Apr 15 00:28:00 2019 +0200

    standard info, more driver corrections


>---------------------------------------------------------------

b2dd6f557cb2dcc302089caf14a00dcef8e67c58
 hluatex-experimental.def |   22 +--
 pdfstandard.tex          |  409 ++++++++++++++++++++++++++++++++++++++++++++++
 test-pdfresources.tex    |    4 +-
 3 files changed, 421 insertions(+), 14 deletions(-)

diff --git a/hluatex-experimental.def b/hluatex-experimental.def
index 9376e5c..38ef141 100644
--- a/hluatex-experimental.def
+++ b/hluatex-experimental.def
@@ -28,7 +28,7 @@
    {\msg_error:nn {hyp}{missing-bookmark-package}}
  }}
 
-%this need sorting out later.
+%this need sorting out later. pdf standards should outside the driver.
 \AtBeginDocument
 {
    \ifHy at pdfa
@@ -260,20 +260,19 @@
 \ExplSyntaxOff
 % should this go into the drivers?
 % or in the pdf level?
+% set pdfversion / needs adaption to major version!!!
+\ExplSyntaxOn
   \ifHy at setpdfversion
     \ifnum\Hy at pdfversion<5 %
-      \ltx at IfUndefined{pdfobjcompresslevel}{%
-      }{%
         \ifHy at verbose
           \Hy at InfoNoLine{%
-            PDF object streams are disabled, because they are%
+            PDF~object~streams~are~disabled,~because~they~are%
             \MessageBreak
-            not supported in requested PDF version %
+            not~supported~in~requested~PDF~version %
             1.\Hy at pdfversion
           }%
-        \fi
-        \pdfobjcompresslevel=\ltx at zero
-      }%
+        \driver_pdf_objects_disable:
+      %
     \fi
     \ifnum\Hy at pdfminorversion=\Hy at pdfversion\relax
     \else
@@ -293,10 +292,7 @@
       \Hy at temp@A\lastsavedboxresourceindex{form XObject}%
       \Hy at temp@A\lastsavedimageresourceindex{image XObject}%
       \Hy at temp@A\pdflastannot{annotation}%
-      \ltx at IfUndefined{pdflastlink}{%
-      }{%
-         \Hy at temp@A\pdflastlink{link}%
-      }%
+      \Hy at temp@A\pdflastlink{link}%
       \ifx\Hy at temp\ltx at empty
         \Hy at pdfminorversion=\Hy at pdfversion\relax
       \else
@@ -339,7 +335,7 @@
     }%
   \fi
   \edef\Hy at pdfversion{\number\Hy at pdfminorversion}%
-
+\ExplSyntaxOff
 \Hy at DisableOption{pdfversion}%
 
 \ExplSyntaxOn
diff --git a/pdfstandard.tex b/pdfstandard.tex
new file mode 100644
index 0000000..2d06bdc
--- /dev/null
+++ b/pdfstandard.tex
@@ -0,0 +1,409 @@
+% source: lpdf-fmt.lua from context
+% extended with info from pdfx, hyperref
+% current format is a lua tables. Need to think about how to store in properties
+% 
+
+% 
+% pdf/X: pdfx hyperref options: 
+%         draft (=>no links, no link colors),
+%         pdfpagemode=UseNone, % needed?
+%         bookmarks=false % needed? Already in draft?
+% pdf/A: pdfx hyperref options: pdfa, minorversion>=4
+%        hyperref: no ocgcolorlinks, minorversion>=4,
+%                  no launch (run) action, links with /F 4 flag
+%                annotation Flags: invisible=false 
+%                                   hidden=false
+%                                   nozoom=true
+%                                   norotate=true
+%                                   noview=false
+%                form field actions forbidden:
+%                                  keystroke}
+%                                  format}
+%                                  validate}
+%                                  calculate}
+%                                  onfocus}
+%                                  onblur}
+%                                  onenter}
+%                                  onexit
+%                                  onclick
+%                            no /NeedAppearances true 
+% pdf/E: hyperref options: pdfa + minorversion>=6
+
+% ??
+local channels = {
+    gray = 1,
+    grey = 1,
+    rgb  = 3,
+    cmyk = 4,
+}
+
+local prefixes = {
+    gray = "DefaultGray",
+    grey = "DefaultGray",
+    rgb  = "DefaultRGB",
+    cmyk = "DefaultCMYK",
+}
+
+% minimum versions for some features:
+version = {
+        external_icc_profiles   = 1.4, -- 'p' in name; URL reference of output intent
+        jbig2_compression       = 1.4,
+        jpeg2000_compression    = 1.5, -- not supported yet
+        nchannel_colorspace     = 1.6, -- 'n' in name; n-channel colorspace support
+        open_prepress_interface = 1.3, -- 'g' in name; reference to external graphics
+        optional_content        = 1.5,
+        transparency            = 1.4,
+        object_compression      = 1.5,
+    },
+
+%
+default = {
+        pdf_version             = 1.7,  -- todo: block tex primitive
+        format_name             = "default",
+        xmp_file                = "lpdf-pdx.xml",
+        gray_scale              = true,
+        cmyk_colors             = true,
+        rgb_colors              = true,
+        spot_colors             = true,
+        calibrated_rgb_colors   = true, -- unknown
+        cielab_colors           = true, -- unknown
+        nchannel_colorspace     = true, -- unknown
+        internal_icc_profiles   = true, -- controls profile inclusion
+        external_icc_profiles   = true, -- controls profile inclusion
+        include_intents         = true,
+        open_prepress_interface = true, -- unknown
+        optional_content        = true, -- todo: block at lua level
+        transparency            = true, -- todo: block at lua level
+        jbig2_compression       = true, -- todo: block at lua level
+        jpeg2000_compression    = true, -- todo: block at lua level
+        include_cidsets         = true,
+        include_charsets        = true,
+        inject_metadata         = function()
+            -- nothing
+        end
+    },
+
+%pdf standards
+data = {
+        ["pdf/x-1a:2001"] = {
+            pdf_version             = 1.3,
+            format_name             = "PDF/X-1a:2001",
+            xmp_file                = "lpdf-pdx.xml",
+            gts_flag                = "GTS_PDFX",
+            gray_scale              = true,
+            cmyk_colors             = true,
+            spot_colors             = true,
+            internal_icc_profiles   = true,
+            include_cidsets         = true,
+            include_charsets        = true,
+            inject_metadata         = function()
+                addtoinfo("GTS_PDFXVersion","PDF/X-1a:2001")
+                injectxmpinfo("xml://rdf:RDF","<rdf:Description rdf:about='' xmlns:pdfxid='http://www.npes.org/pdfx/ns/id/'><pdfxid:GTS_PDFXVersion>PDF/X-1a:2001</pdfxid:GTS_PDFXVersion></rdf:Description>",false)
+            end
+        },
+        ["pdf/x-1a:2003"] = {
+            pdf_version             = 1.4,
+            format_name             = "PDF/X-1a:2003",
+            xmp_file                = "lpdf-pdx.xml",
+            gts_flag                = "GTS_PDFX",
+            gray_scale              = true,
+            cmyk_colors             = true,
+            spot_colors             = true,
+            internal_icc_profiles   = true,
+            include_cidsets         = true,
+            include_charsets        = true,
+            inject_metadata         = function()
+                addtoinfo("GTS_PDFXVersion","PDF/X-1a:2003")
+                injectxmpinfo("xml://rdf:RDF","<rdf:Description rdf:about='' xmlns:pdfxid='http://www.npes.org/pdfx/ns/id/'><pdfxid:GTS_PDFXVersion>PDF/X-1a:2003</pdfxid:GTS_PDFXVersion></rdf:Description>",false)
+            end
+        },
+        ["pdf/x-3:2002"] = {
+            pdf_version             = 1.3,
+            format_name             = "PDF/X-3:2002",
+            xmp_file                = "lpdf-pdx.xml",
+            gts_flag                = "GTS_PDFX",
+            gray_scale              = true,
+            cmyk_colors             = true,
+            rgb_colors              = true,
+            calibrated_rgb_colors   = true,
+            spot_colors             = true,
+            cielab_colors           = true,
+            internal_icc_profiles   = true,
+            include_intents         = true,
+            include_cidsets         = true,
+            include_charsets        = true,
+            inject_metadata         = function()
+                addtoinfo("GTS_PDFXVersion","PDF/X-3:2002")
+            end
+        },
+        ["pdf/x-3:2003"] = {
+            pdf_version             = 1.4,
+            format_name             = "PDF/X-3:2003",
+            xmp_file                = "lpdf-pdx.xml",
+            gts_flag                = "GTS_PDFX",
+            gray_scale              = true,
+            cmyk_colors             = true,
+            rgb_colors              = true,
+            calibrated_rgb_colors   = true,
+            spot_colors             = true,
+            cielab_colors           = true,
+            internal_icc_profiles   = true,
+            include_intents         = true,
+            jbig2_compression       = true,
+            include_cidsets         = true,
+            include_charsets        = true,
+            inject_metadata         = function()
+                addtoinfo("GTS_PDFXVersion","PDF/X-3:2003")
+            end
+        },
+        ["pdf/x-4"] = {
+            pdf_version             = 1.6,
+            format_name             = "PDF/X-4",
+            xmp_file                = "lpdf-pdx.xml",
+            gts_flag                = "GTS_PDFX",
+            gray_scale              = true,
+            cmyk_colors             = true,
+            rgb_colors              = true,
+            calibrated_rgb_colors   = true,
+            spot_colors             = true,
+            cielab_colors           = true,
+            internal_icc_profiles   = true,
+            include_intents         = true,
+            optional_content        = true,
+            transparency            = true,
+            jbig2_compression       = true,
+            jpeg2000_compression    = true,
+            object_compression      = true,
+            include_cidsets         = true,
+            include_charsets        = true,
+            inject_metadata         = function()
+                injectxmpinfo("xml://rdf:RDF","<rdf:Description rdf:about='' xmlns:pdfxid='http://www.npes.org/pdfx/ns/id/'><pdfxid:GTS_PDFXVersion>PDF/X-4</pdfxid:GTS_PDFXVersion></rdf:Description>",false)
+                insertxmpinfo("xml://rdf:Description/xmpMM:InstanceID","<xmpMM:VersionID>1</xmpMM:VersionID>",false)
+                insertxmpinfo("xml://rdf:Description/xmpMM:InstanceID","<xmpMM:RenditionClass>default</xmpMM:RenditionClass>",false)
+            end
+        },
+        ["pdf/x-4p"] = {
+            pdf_version             = 1.6,
+            format_name             = "PDF/X-4p",
+            xmp_file                = "lpdf-pdx.xml",
+            gts_flag                = "GTS_PDFX",
+            gray_scale              = true,
+            cmyk_colors             = true,
+            rgb_colors              = true,
+            calibrated_rgb_colors   = true,
+            spot_colors             = true,
+            cielab_colors           = true,
+            internal_icc_profiles   = true,
+            external_icc_profiles   = true,
+            include_intents         = true,
+            optional_content        = true,
+            transparency            = true,
+            jbig2_compression       = true,
+            jpeg2000_compression    = true,
+            object_compression      = true,
+            include_cidsets         = true,
+            include_charsets        = true,
+            inject_metadata         = function()
+                injectxmpinfo("xml://rdf:RDF","<rdf:Description rdf:about='' xmlns:pdfxid='http://www.npes.org/pdfx/ns/id/'><pdfxid:GTS_PDFXVersion>PDF/X-4p</pdfxid:GTS_PDFXVersion></rdf:Description>",false)
+                insertxmpinfo("xml://rdf:Description/xmpMM:InstanceID","<xmpMM:VersionID>1</xmpMM:VersionID>",false)
+                insertxmpinfo("xml://rdf:Description/xmpMM:InstanceID","<xmpMM:RenditionClass>default</xmpMM:RenditionClass>",false)
+            end
+        },
+        ["pdf/x-5g"] = {
+            pdf_version             = 1.6,
+            format_name             = "PDF/X-5g",
+            xmp_file                = "lpdf-pdx.xml",
+            gts_flag                = "GTS_PDFX",
+            gray_scale              = true,
+            cmyk_colors             = true,
+            rgb_colors              = true,
+            calibrated_rgb_colors   = true,
+            spot_colors             = true,
+            cielab_colors           = true,
+            internal_icc_profiles   = true,
+            include_intents         = true,
+            open_prepress_interface = true,
+            optional_content        = true,
+            transparency            = true,
+            jbig2_compression       = true,
+            jpeg2000_compression    = true,
+            object_compression      = true,
+            include_cidsets         = true,
+            include_charsets        = true,
+            inject_metadata         = function()
+                -- todo
+            end
+        },
+        ["pdf/x-5pg"] = {
+            pdf_version             = 1.6,
+            format_name             = "PDF/X-5pg",
+            xmp_file                = "lpdf-pdx.xml",
+            gts_flag                = "GTS_PDFX",
+            gray_scale              = true,
+            cmyk_colors             = true,
+            rgb_colors              = true,
+            calibrated_rgb_colors   = true,
+            spot_colors             = true,
+            cielab_colors           = true,
+            internal_icc_profiles   = true,
+            external_icc_profiles   = true,
+            include_intents         = true,
+            open_prepress_interface = true,
+            optional_content        = true,
+            transparency            = true,
+            jbig2_compression       = true,
+            jpeg2000_compression    = true,
+            object_compression      = true,
+            include_cidsets         = true,
+            include_charsets        = true,
+            inject_metadata         = function()
+                -- todo
+            end
+        },
+        ["pdf/x-5n"] = {
+            pdf_version             = 1.6,
+            format_name             = "PDF/X-5n",
+            xmp_file                = "lpdf-pdx.xml",
+            gts_flag                = "GTS_PDFX",
+            gray_scale              = true,
+            cmyk_colors             = true,
+            rgb_colors              = true,
+            calibrated_rgb_colors   = true,
+            spot_colors             = true,
+            cielab_colors           = true,
+            internal_icc_profiles   = true,
+            include_intents         = true,
+            optional_content        = true,
+            transparency            = true,
+            jbig2_compression       = true,
+            jpeg2000_compression    = true,
+            nchannel_colorspace     = true,
+            object_compression      = true,
+            include_cidsets         = true,
+            include_charsets        = true,
+            inject_metadata         = function()
+                -- todo
+            end
+        },
+        ["pdf/a-1a:2005"] = {
+            pdf_version             = 1.4,
+            object_compression      = false, -- %% ?? from pdfx.sty, 
+                                             -- %% or is it forced by pdf_version?
+            format_name             = "pdf/a-1a:2005",
+            xmp_file                = "lpdf-pda.xml",
+            gts_flag                = "GTS_PDFA1",
+            gray_scale              = true,
+            cmyk_colors             = true,
+            rgb_colors              = true,
+            spot_colors             = true,
+            calibrated_rgb_colors   = true, -- unknown
+            cielab_colors           = true, -- unknown
+            include_intents         = true,
+            forms                   = true, -- %% NEW; forms are allowed (with limitations); no JS,  other restrictions are unknown (TODO)
+            tagging                 = true, -- %% NEW; the only difference to PDF/A-1b
+            internal_icc_profiles   = true,
+            include_cidsets         = true,
+            include_charsets        = true,
+            inject_metadata         = function()
+                injectxmpinfo("xml://rdf:RDF","<rdf:Description rdf:about='' xmlns:pdfaid='http://www.aiim.org/pdfa/ns/id/'><pdfaid:part>1</pdfaid:part><pdfaid:conformance>A</pdfaid:conformance></rdf:Description>",false)
+            end
+        },
+        ["pdf/a-1b:2005"] = {
+            pdf_version             = 1.4,
+            format_name             = "pdf/a-1b:2005",
+            xmp_file                = "lpdf-pda.xml",
+            gts_flag                = "GTS_PDFA1",
+            gray_scale              = true,
+            cmyk_colors             = true,
+            rgb_colors              = true,
+            spot_colors             = true,
+            calibrated_rgb_colors   = true, -- unknown
+            cielab_colors           = true, -- unknown
+            include_intents         = true,
+            forms                   = true,
+            internal_icc_profiles   = true,
+            include_cidsets         = true,
+            include_charsets        = true,
+            inject_metadata         = function()
+                injectxmpinfo("xml://rdf:RDF","<rdf:Description rdf:about='' xmlns:pdfaid='http://www.aiim.org/pdfa/ns/id/'><pdfaid:part>1</pdfaid:part><pdfaid:conformance>B</pdfaid:conformance></rdf:Description>",false)
+            end
+        },
+        ["pdf/a-2a"] = { -- untested; only PDF/A Attachments are allowed
+            pdf_version             = 1.7,
+            format_name             = "pdf/a-2a",
+            xmp_file                = "lpdf-pda.xml",
+            gts_flag                = "GTS_PDFA1",
+            gray_scale              = true,
+            cmyk_colors             = true,
+            rgb_colors              = true,
+            spot_colors             = true,
+            calibrated_rgb_colors   = true, -- unknown
+            cielab_colors           = true, -- unknown
+            include_intents         = true,
+            forms                   = true,
+            tagging                 = true,
+            internal_icc_profiles   = true,
+            transparency            = true, -- NEW
+            jbig2_compression       = true,
+            jpeg2000_compression    = true, -- NEW
+            object_compression      = true,
+            include_cidsets         = false,
+            include_charsets        = false,
+            inject_metadata         = function()
+                injectxmpinfo("xml://rdf:RDF","<rdf:Description rdf:about='' xmlns:pdfaid='http://www.aiim.org/pdfa/ns/id/'><pdfaid:part>2</pdfaid:part><pdfaid:conformance>A</pdfaid:conformance></rdf:Description>",false)
+            end
+        },
+        ["pdf/a-3a"] = { -- untested; NEW: any type of attachment is allowed
+            pdf_version             = 1.7,
+            format_name             = "pdf/a-3a",
+            xmp_file                = "lpdf-pda.xml",
+            gts_flag                = "GTS_PDFA1",
+            gray_scale              = true,
+            cmyk_colors             = true,
+            rgb_colors              = true,
+            spot_colors             = true,
+            calibrated_rgb_colors   = true, -- unknown
+            cielab_colors           = true, -- unknown
+            include_intents         = true,
+            forms                   = true,
+            tagging                 = true,
+            internal_icc_profiles   = true,
+            transparency            = true,
+            jbig2_compression       = true,
+            jpeg2000_compression    = true,
+            object_compression      = true,
+            include_cidsets         = false,
+            include_charsets        = false,
+            inject_metadata         = function()
+                injectxmpinfo("xml://rdf:RDF","<rdf:Description rdf:about='' xmlns:pdfaid='http://www.aiim.org/pdfa/ns/id/'><pdfaid:part>3</pdfaid:part><pdfaid:conformance>A</pdfaid:conformance></rdf:Description>",false)
+            end
+        },
+        ["pdf/ua-1"] = { -- based on PDF/A-3a, but no 'gts_flag'
+            pdf_version             = 1.7,
+            format_name             = "pdf/ua-1",
+            xmp_file                = "lpdf-pua.xml",
+            gray_scale              = true,
+            cmyk_colors             = true,
+            rgb_colors              = true,
+            spot_colors             = true,
+            calibrated_rgb_colors   = true, -- unknown
+            cielab_colors           = true, -- unknown
+            include_intents         = true,
+            forms                   = true,
+            tagging                 = true,
+            internal_icc_profiles   = true,
+            transparency            = true,
+            jbig2_compression       = true,
+            jpeg2000_compression    = true,
+            object_compression      = true,
+            include_cidsets         = true,
+            include_charsets        = true, --- really ?
+            inject_metadata         = function()
+                injectxmpinfo("xml://rdf:RDF","<rdf:Description rdf:about='' xmlns:pdfaid='http://www.aiim.org/pdfa/ns/id/'><pdfaid:part>3</pdfaid:part><pdfaid:conformance>A</pdfaid:conformance></rdf:Description>",false)
+                injectxmpinfo("xml://rdf:RDF","<rdf:Description rdf:about='' xmlns:pdfuaid='http://www.aiim.org/pdfua/ns/id/'><pdfuaid:part>1</pdfuaid:part></rdf:Description>",false)
+            end
+        },
+    }
+}
+
+
diff --git a/test-pdfresources.tex b/test-pdfresources.tex
index e969bfc..e719c0e 100644
--- a/test-pdfresources.tex
+++ b/test-pdfresources.tex
@@ -13,7 +13,9 @@
 \driver_pdf_objects_disable:
 \ExplSyntaxOff
 \usepackage{xcolor}
-\usepackage[customdriver=hluatex-experimental,ocgcolorlinks,pdfa]{hyperref}
+
+
+\usepackage[customdriver=hluatex-experimental,ocgcolorlinks,pdfa,pdfversion=1.4]{hyperref}
 
 %%\tracingmacros=1
 \hypersetup{urlcolor=blue,linkbordercolor=blue,pdfborder={1 1 1},pdfprintpagerange=0}





More information about the latex3-commits mailing list