Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
d9d033b
Updated action dependencies
ProxyNexus Feb 15, 2024
30d7b72
Merge pull request #318 from veraPDF/workflow-update
MaximPlusov Feb 15, 2024
9858db7
Updated arlington workflow
ProxyNexus Feb 16, 2024
b50dcc6
PDF/UA-2. Add property ghostRefs to SEFENote
MaximPlusov Feb 22, 2024
5d6fd46
PDF/UA-2. Add property isRealContent to Glyph
MaximPlusov Mar 23, 2024
801750c
Add link Kids to PDFormField
MaximPlusov Apr 8, 2024
7d98c82
Add WTPDF declarations properties
MaximPlusov Apr 19, 2024
8fab0b4
Replace link Lang to property in SEMarkedContent
MaximPlusov Dec 4, 2023
392c7ef
Update test-pr workflow
MaximPlusov May 14, 2024
cc41c26
Change property types to List/Set of String
MaximPlusov May 14, 2024
c27887d
DEV: v1.27
MaximPlusov May 20, 2024
65c52b6
Fix github actions for updating arlington branch
MaximPlusov May 20, 2024
482cee1
Update github actions for updating arlington branch
MaximPlusov May 21, 2024
84b110f
Update github actions for updating arlington branch
MaximPlusov May 22, 2024
f9022ed
Add property namespaceAndTag to PDStructElem
MaximPlusov Jun 2, 2024
a8338d8
Update PDExtGState properties
MaximPlusov Jun 26, 2024
8518730
Add property containsBM to PDExtGState
MaximPlusov Jul 9, 2024
03ab0a0
Update license headers
MaximPlusov Aug 9, 2024
93b7726
Add isCatalogMetadata property to PDMetadata
MaximPlusov Aug 10, 2024
a9d9b26
Add new properties
MaximPlusov Oct 8, 2024
8250500
Add type PDMaskImage
MaximPlusov Oct 10, 2024
bef34bc
Update current year from 2024 to 2025
MaximPlusov Jan 4, 2025
ee4e4d7
RC - v1.28
MaximPlusov Feb 5, 2025
cd79f47
Add type SEGraphicContentItem
MaximPlusov Apr 21, 2025
fb5b48b
REL - v1.28
MaximPlusov Apr 25, 2025
de78eab
Merge branch 'master' into rel/1.28
MaximPlusov Apr 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 24 additions & 3 deletions .github/workflows/test-pr.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,24 @@
#
# This file is part of veraPDF Validation Model API, a module of the veraPDF project.
# Copyright (c) 2015-2025, veraPDF Consortium <info@verapdf.org>
# All rights reserved.
#
# veraPDF Validation Model API is free software: you can redistribute it and/or modify
# it under the terms of either:
#
# The GNU General public license GPLv3+.
# You should have received a copy of the GNU General Public License
# along with veraPDF Validation Model API as the LICENSE.GPL file in the root of the source
# tree. If not, see http://www.gnu.org/licenses/ or
# https://www.gnu.org/licenses/gpl-3.0.en.html.
#
# The Mozilla Public License MPLv2+.
# You should have received a copy of the Mozilla Public License along with
# veraPDF Validation Model API as the LICENSE.MPL file in the root of the source tree.
# If a copy of the MPL was not distributed with this file, you can obtain one at
# http://mozilla.org/MPL/2.0/.
#

name: PR QA

on:
Expand All @@ -9,17 +30,17 @@ jobs:
name: Checkout and Build
runs-on: ubuntu-latest

continue-on-error: true

strategy:
fail-fast: false
matrix:
java-version: [ 11, 16, 17, 21 ]
java-version: [ 11, 17, 21 ]

steps:
- uses: actions/checkout@v4
- name: JDK setup
uses: actions/setup-java@v4
continue-on-error: true

with:
java-version: ${{ matrix.java-version }}
distribution: 'temurin'
Expand Down
33 changes: 29 additions & 4 deletions .github/workflows/update-arlington-workflow.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,24 @@
#
# This file is part of veraPDF Validation Model API, a module of the veraPDF project.
# Copyright (c) 2015-2025, veraPDF Consortium <info@verapdf.org>
# All rights reserved.
#
# veraPDF Validation Model API is free software: you can redistribute it and/or modify
# it under the terms of either:
#
# The GNU General public license GPLv3+.
# You should have received a copy of the GNU General Public License
# along with veraPDF Validation Model API as the LICENSE.GPL file in the root of the source
# tree. If not, see http://www.gnu.org/licenses/ or
# https://www.gnu.org/licenses/gpl-3.0.en.html.
#
# The Mozilla Public License MPLv2+.
# You should have received a copy of the Mozilla Public License along with
# veraPDF Validation Model API as the LICENSE.MPL file in the root of the source tree.
# If a copy of the MPL was not distributed with this file, you can obtain one at
# http://mozilla.org/MPL/2.0/.
#

name: Update arlington branch

on:
Expand All @@ -7,14 +28,15 @@ on:

jobs:
checkout-and-build:
if: github.repository == 'veraPDF/veraPDF-model'
runs-on: ubuntu-latest

continue-on-error: true

strategy:
fail-fast: false
matrix:
java-version: [11, 16, 17, 21]
java-version: [11, 17, 21]

steps:
- name: Checkout code
Expand All @@ -24,6 +46,8 @@ jobs:
ref: integration
- name: JDK setup
uses: actions/setup-java@v4
continue-on-error: true

with:
java-version: ${{ matrix.java-version }}
distribution: 'temurin'
Expand All @@ -32,12 +56,12 @@ jobs:
run: |
git fetch origin arlington:arlington
git checkout -b test-branch arlington
- name: Configure user nameF
- name: Configure user name
run: |
git config user.name "Git User"
git config user.email "user@test.com"
- name: Add commit to the test branch
run: git cherry-pick -m 1 ${{ github.sha }}
run: git cherry-pick -m 1 ${{ github.event.before }}..${{ github.event.after }} --empty=drop
- name: Build project with Maven
if: success()
run: mvn --batch-mode --update-snapshots verify
Expand All @@ -63,7 +87,7 @@ jobs:
git config user.name "Git User"
git config user.email "user@temp.com"
- name: Add commit to new branch
run: git cherry-pick -m 1 ${{ github.sha }}
run: git cherry-pick -m 1 ${{ github.event.before }}..${{ github.event.after }} --empty=drop
- name: Merge branch into arlington
if: success()
run: |
Expand All @@ -79,6 +103,7 @@ jobs:
needs: [checkout-and-build, merge]
if: |
always() &&
github.repository == 'veraPDF/veraPDF-model' &&
(contains(needs.*.result, 'failure') ||
contains(needs.*.result, 'skipped') ||
contains(needs.*.result, 'cancelled'))
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ veraPDF-model
=============
The veraPDF Validation model described using a Domain Specific Language developed in [XText](https://eclipse.org/Xtext/).

[![Build Status](https://jenkins.openpreservation.org/job/veraPDF/job/1.26/job/model/badge/icon)](https://jenkins.openpreservation.org/job/veraPDF/job/1.26/job/model/ "OPF Jenkins")
[![Build Status](https://jenkins.openpreservation.org/job/veraPDF/job/1.28/job/model/badge/icon)](https://jenkins.openpreservation.org/job/veraPDF/job/1.28/job/model/ "OPF Jenkins")
[![Maven Central](https://img.shields.io/maven-central/v/org.verapdf/pdf-model.svg)](https://repo1.maven.org/maven2/org/verapdf/pdf-model/ "Maven central")
[![Codacy Badge](https://app.codacy.com/project/badge/Grade/0b6a3e7f350c47d4a1ea1c5b500bbf68)](https://app.codacy.com/gh/veraPDF/veraPDF-model/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade "Codacy grade")

Expand All @@ -22,7 +22,7 @@ Pre-requisites
--------------
In order to generate the model classes you'll need:

* Java 9 - 21, which can be downloaded [from Oracle](https://www.oracle.com/technetwork/java/javase/downloads/index.html), or for Linux users [OpenJDK](https://openjdk.java.net/install/index.html).
* Java 11, 17 or 21, which can be downloaded [from Oracle](https://www.oracle.com/technetwork/java/javase/downloads/index.html), or for Linux users [OpenJDK](https://openjdk.java.net/install/index.html).
* [Maven v3+](https://maven.apache.org/)

If you want to edit and regenerate the model you'll need:
Expand Down
2 changes: 1 addition & 1 deletion license/template/license.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
This file is part of ${project.name}, a module of the veraPDF project.
Copyright (c) ${project.inceptionYear}, ${owner} <${email}>
Copyright (c) ${project.inceptionYear}-${current.year}, ${owner} <${email}>
All rights reserved.

${project.name} is free software: you can redistribute it and/or modify
Expand Down
8 changes: 4 additions & 4 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<!--

This file is part of veraPDF Validation Model API, a module of the veraPDF project.
Copyright (c) 2015, veraPDF Consortium <info@verapdf.org>
Copyright (c) 2015-2025, veraPDF Consortium <info@verapdf.org>
All rights reserved.

veraPDF Validation Model API is free software: you can redistribute it and/or modify
Expand All @@ -27,13 +27,13 @@
<parent>
<groupId>org.verapdf</groupId>
<artifactId>verapdf-parent</artifactId>
<version>1.26.2</version>
<version>1.28.1</version>
<relativePath />
</parent>

<groupId>org.verapdf</groupId>
<artifactId>pdf-model</artifactId>
<version>1.26.0</version>
<version>1.28.0</version>

<name>veraPDF Validation Model API</name>
<description>Java interfaces for the veraPDF Validation model, generated from the Xtext DSL.</description>
Expand Down Expand Up @@ -69,7 +69,7 @@
</pluginRepositories>

<properties>
<verapdf.model.syntax.version>[1.26.0,1.27.0)</verapdf.model.syntax.version>
<verapdf.model.syntax.version>[1.28.0,1.29.0)</verapdf.model.syntax.version>
<xtext.version>2.26.0</xtext.version>
</properties>

Expand Down
52 changes: 46 additions & 6 deletions src/main/java/PDLayer.mdl
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ type PDDocument extends PDObject {
link pages: PDPage+;
% document level metadata
link metadata: PDMetadata?;
% true if the catalog dictionary contains the metadata
property containsMetadata: Boolean;
% Interactive Form Dictionary (AcroForm entry in the Catalog)
link AcroForm: PDAcroForm?;
% additional actions dictionary defined for the document (AA entry in the Catalog)
Expand All @@ -61,10 +63,14 @@ type PDDocument extends PDObject {
link OCProperties: PDOCProperties?;
% the link to the document structure tree root dictionary
link StructTreeRoot: PDStructTreeRoot?;
% true if the catalog dictionary contains the struct tree root
property containsStructTreeRoot: Boolean;
% true if the document contains alternate presentations (/AlternatePresentations entry in the document names dictionary)
property containsAlternatePresentations: Boolean;
% value of the Lang entry from the document catalog
link Lang: CosLang?;
% true if the catalog dictionary contains the lang
property containsLang: Boolean;
% link to the permissions object
link Perms: PDPerms?;
% true if the catalog dictionary contains the AA entry
Expand Down Expand Up @@ -92,6 +98,8 @@ type PDPage extends PDObject {
link contentStream: PDContentStream;
% all page annotations
link annots: PDAnnot*;
% true if the page dictionary contains annotations
property containsAnnotations: Boolean;
% link to the parent transparency blending space
link parentTransparencyColorSpace: TransparencyColorSpace?;
% group attributes dictionary
Expand Down Expand Up @@ -309,6 +317,8 @@ type PDFont extends PDResource {
property renderingMode: Integer;
% embedded font program for Type 1, TrueType or CID Font
link fontFile: FontProgram?;
% true if the font dictionary contains the font program
property containsFontFile: Boolean;
% value of the entry /Subtype in the embedded font file stream, or null, if the this entry is not present (or the font is not embedded)
property fontFileSubtype: String;
% value of Italic flag in Flags entry in the font descriptor
Expand Down Expand Up @@ -395,6 +405,8 @@ type PDCMap extends PDObject {
link UseCMap: PDReferencedCMap?;
% link to the embedded CMap file for a non-standard CMap
link embeddedFile: CMapFile?;
% true if the cmap dictionary contains the embedded CMap file
property containsEmbeddedFile: Boolean;
}

% CMap that is referenced with UseCMap in other CMap
Expand Down Expand Up @@ -428,10 +440,14 @@ type PDXImage extends PDXObject {
link jpxStream: JPEG2000?;
% link to the soft mask image (SMask key)
link SMask: PDSMaskImage?;
% link to the mask image (Mask key)
link Mask: PDMaskImage?;
% true if the image dictionary contains Alternates key
property containsAlternates: Boolean;
% value of the BitsPerComponent key
property BitsPerComponent: Integer;
% true, if this Image XObject is mask
property isMask: Boolean;
}

% SMask image
Expand All @@ -441,6 +457,11 @@ type PDSMaskImage extends PDXImage {

}

% Mask image
type PDMaskImage extends PDXImage {

}

% Inline image object
type PDInlineImage extends PDXImage {
% link to the inline image filters
Expand Down Expand Up @@ -483,20 +504,26 @@ type PDGroup extends PDObject {

% ExtGState dictionary
type PDExtGState extends PDResource {
% TR function
property TR: String;
% TR2 function
property TR2: String;
property TR2NameValue: String;
% true if the ExtGState dictionary contains TR key
property containsTR: Boolean;
% true if the ExtGState dictionary contains TR2 key
property containsTR2: Boolean;
% Halftone dictionary
link HT: PDHalftone;
% true if the ExtGState dictionary contains HTP key
property containsHTP: Boolean;
% true if the ExtGState dictionary contains HTO key
property containsHTO: Boolean;
% String representation of the SMask key ("None" or "Custom")
property SMask: String;
property SMaskNameValue: String;
% true if the ExtGState dictionary contains SMask key
property containsSMask: Boolean;
% true if the ExtGState dictionary contains BM key
property containsBM: Boolean;
% blend mode
property BM: String;
property BMNameValue: String;
% link to blend mode
link bm: CosBM?;
% fill alpha
Expand Down Expand Up @@ -540,6 +567,8 @@ type PDAnnot extends PDObject {
property F: Integer;
% ampersand-separated list of all keys in the annotation's appearance dictionary (AP key)
property AP: String;
% true if the annotation dictionary contains the appearances
property containsAppearances: Boolean;
% the value of the /FT entry (Field type), in case this is the widget annotation representing the form field, or null, if this entry is not present
property FT: String;
% the type of the normal appearance entry (/N key) in the annotation appearance dictionary (/AP key) or null, if the normal appearance is not present
Expand Down Expand Up @@ -570,6 +599,8 @@ type PDAnnot extends PDObject {
property structParentObjectKey: String;
% value of the Lang entry
link Lang: CosLang?;
% true if the annotation dictionary contains the lang
property containsLang: Boolean;
% the value of the /Contents entry
property Contents: String;
% the Alt entry of parent structure element
Expand Down Expand Up @@ -688,7 +719,7 @@ type PDAcroForm extends PDObject {
property NeedAppearances: Boolean;
% true if the form dictionary contains XFA key
property containsXFA: Boolean;
% all interactive form fields in the document
% root interactive form fields in the document
link formFields: PDFormField*;
% value of dynamicRender property in XFA
property dynamicRender: String;
Expand All @@ -704,6 +735,8 @@ type PDFormField extends PDObject {
property containsAA: Boolean;
% value of the Lang entry
link Lang: CosLang?;
% true if the form field dictionary contains the lang
property containsLang: Boolean;
% value of the TU entry
property TU: String;
% value of the Ff entry
Expand Down Expand Up @@ -793,6 +826,8 @@ type PDMetadata extends PDObject {
link stream: CosStream;
% value of the Filter key in the metadata stream dictionary
property Filter: String;
% true if this is catalog metadata
property isCatalogMetadata: Boolean;
}

% the output intent dictionary
Expand Down Expand Up @@ -869,12 +904,17 @@ type PDStructElem extends PDStructTreeNode {
property parentStandardType: String;
% structure type
link S: CosUnicodeName;
% the namespace specified in the element dictionary (or the default namespace, if not explicitly specified) and
% the element tag separated by the colon
property namespaceAndTag: String;
% structure type
property valueS: String;
% standard structure type defined via role map
property standardType: String;
% value of the Lang entry
link Lang: CosLang?;
% true if the structure element dictionary contains the lang
property containsLang: Boolean;
% value of parent Lang entry
property parentLang: String;
% remapped standard type value
Expand Down
10 changes: 6 additions & 4 deletions src/main/java/SALayer.mdl
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@ package org.verapdf.model.salayer;

import org.verapdf.model.baselayer.Object;

import java.util.List;

type SAObject extends Object {
% id of group in format id:<number>
property structureID: String;
% comma separated list of error codes
property errorCodes: String;
% semicolon separated list of error arguments
property errorArguments: String;
% list of error codes
property errorCodes: List<String>;
% list of error arguments
property errorArguments: List<List<String>>;
}

% the class corresponding to the high level PDF document structure
Expand Down
Loading