Skip to content

PDF/A-2 support #2942

@reknih

Description

@reknih

Here is what's missing in Typst for each of the PDF/A-2 compliance levels.

PDF/A-2b (done in #5075)

  • 6.1.13 Implementation limits: Fail export for ... (PDF/A: 6.1.13 Implementation limits #2995)
    • Strings longer than 32767 bytes
    • Names longer than 127 bytes (e.g. when containing font name)
    • More than 8388607 indirect objects
    • More than 28 q/Q nesting level
  • 6.2.3 Output Intent: Write an appropriate output intent. Potentially user-configurable. (PDF/A: 6.2.3 Output Intent #3002)
  • 6.2.4.1 Device color spaces: Do not write DeviceCMYK without defining the DefaultCMYK color space or a CMYK rendering intent. Possibilities include failing export, a default ICC profile, and user-supplied ICC profiles. (PDF/A: 6.2.3 Output Intent #3002)
  • 6.2.4.4 Separations and DeviceN color spaces: Oklab, HSL, and HSV colors produce a DeviceN color space without constituent separations in a Colorant dict entry. They are not expressible as such and shall hence either fail export, be implemented as ICC profiles, or rendered to another space. (PDF/A: 6.2.4.4 Separations and DeviceN color spaces #3003)
  • 6.2.4.5 Indexed and Pattern color spaces: Due to violation of the color subclauses above (PDF/A: 6.2.3 Output Intent #3002, PDF/A: 6.2.4.4 Separations and DeviceN color spaces #3003)
  • 6.2.11.8 .notdef glyph: Fail export to PDF/A if the document contains a .notdef glyph. Typst will output these if the font does not contain the glyph and if either font fallback is disabled or no other fallback font has the glyph either. (PDF/A: 6.2.11.8 .notdef glyph #3004)
  • 6.3.2 Annotation dictionaries: Add annotation flags to the link annotations
  • 6.6.2.3.2 Metadata extension schemas: Describe the xmpMM, xmpTPg, pdf, and pdfaid schemas using the pdfaSchema extension schema description schema
  • 6.6.2.3.3 Extension Schema Container: See above
  • 6.6.4 Version and conformance levels: Write an PDF/A ID entry in the XMP metadata for conforming files
  • 6.6.6 File provenance information: Write an xmpMM:History bag in the metadata

Feature Requests in violation of PDF/A-2a: #1400, #955 (may be supported in some PDF/A-4 sub-standards)

The PDF/A spec imposes additional requirements touching the following issues: #895, #2499 (only other compliant PDFs may be embedded, also concerns #1465), #2421 / #1765,

PDF/A-2u

  • All of the above tasks
  • 6.2.11.7.2 Level U Conformance: Ensure that every glyph in the ToUnicode mapping maps to a codepoint that is neither 0, U+FEFF, or U+FFFE. All characters used in the document must appear in the mapping. This may currently not be the case in complex shaping scenarios.

PDF/A-2a

  • All of the above tasks
  • 6.2.11.7.3 Level A Conformance: Write a structure element with ActualText for any character sequence that maps to the Unicode private use area. Fail export if this information is not available.
  • 6.7 Logical Structure: Write a Tagged PDF file. This includes enforcing human-readable replacement text for images and equations and tagging the content stream with the appropriate roles and attributes. (PDF Accessibility (tags, alt text, ...) #133)

Compliance at this level should solve #671, #526

Sub-issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    pdfRelated to PDF export or PDF embedding.tracking-issueAn issue that tracks a larger piece of work.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions