Skip to content

Commit ff9a37e

Browse files
authored
Merge pull request #340 from veraPDF/rel/1.28
REL 1.28 - Merge release to master branch
2 parents 49de924 + de78eab commit ff9a37e

9 files changed

Lines changed: 135 additions & 32 deletions

File tree

.github/workflows/test-pr.yml

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,24 @@
1+
#
2+
# This file is part of veraPDF Validation Model API, a module of the veraPDF project.
3+
# Copyright (c) 2015-2025, veraPDF Consortium <info@verapdf.org>
4+
# All rights reserved.
5+
#
6+
# veraPDF Validation Model API is free software: you can redistribute it and/or modify
7+
# it under the terms of either:
8+
#
9+
# The GNU General public license GPLv3+.
10+
# You should have received a copy of the GNU General Public License
11+
# along with veraPDF Validation Model API as the LICENSE.GPL file in the root of the source
12+
# tree. If not, see http://www.gnu.org/licenses/ or
13+
# https://www.gnu.org/licenses/gpl-3.0.en.html.
14+
#
15+
# The Mozilla Public License MPLv2+.
16+
# You should have received a copy of the Mozilla Public License along with
17+
# veraPDF Validation Model API as the LICENSE.MPL file in the root of the source tree.
18+
# If a copy of the MPL was not distributed with this file, you can obtain one at
19+
# http://mozilla.org/MPL/2.0/.
20+
#
21+
122
name: PR QA
223

324
on:
@@ -9,17 +30,17 @@ jobs:
930
name: Checkout and Build
1031
runs-on: ubuntu-latest
1132

12-
continue-on-error: true
13-
1433
strategy:
1534
fail-fast: false
1635
matrix:
17-
java-version: [ 11, 16, 17, 21 ]
36+
java-version: [ 11, 17, 21 ]
1837

1938
steps:
2039
- uses: actions/checkout@v4
2140
- name: JDK setup
2241
uses: actions/setup-java@v4
42+
continue-on-error: true
43+
2344
with:
2445
java-version: ${{ matrix.java-version }}
2546
distribution: 'temurin'

.github/workflows/update-arlington-workflow.yml

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,24 @@
1+
#
2+
# This file is part of veraPDF Validation Model API, a module of the veraPDF project.
3+
# Copyright (c) 2015-2025, veraPDF Consortium <info@verapdf.org>
4+
# All rights reserved.
5+
#
6+
# veraPDF Validation Model API is free software: you can redistribute it and/or modify
7+
# it under the terms of either:
8+
#
9+
# The GNU General public license GPLv3+.
10+
# You should have received a copy of the GNU General Public License
11+
# along with veraPDF Validation Model API as the LICENSE.GPL file in the root of the source
12+
# tree. If not, see http://www.gnu.org/licenses/ or
13+
# https://www.gnu.org/licenses/gpl-3.0.en.html.
14+
#
15+
# The Mozilla Public License MPLv2+.
16+
# You should have received a copy of the Mozilla Public License along with
17+
# veraPDF Validation Model API as the LICENSE.MPL file in the root of the source tree.
18+
# If a copy of the MPL was not distributed with this file, you can obtain one at
19+
# http://mozilla.org/MPL/2.0/.
20+
#
21+
122
name: Update arlington branch
223

324
on:
@@ -7,14 +28,15 @@ on:
728

829
jobs:
930
checkout-and-build:
31+
if: github.repository == 'veraPDF/veraPDF-model'
1032
runs-on: ubuntu-latest
1133

1234
continue-on-error: true
1335

1436
strategy:
1537
fail-fast: false
1638
matrix:
17-
java-version: [11, 16, 17, 21]
39+
java-version: [11, 17, 21]
1840

1941
steps:
2042
- name: Checkout code
@@ -24,6 +46,8 @@ jobs:
2446
ref: integration
2547
- name: JDK setup
2648
uses: actions/setup-java@v4
49+
continue-on-error: true
50+
2751
with:
2852
java-version: ${{ matrix.java-version }}
2953
distribution: 'temurin'
@@ -32,12 +56,12 @@ jobs:
3256
run: |
3357
git fetch origin arlington:arlington
3458
git checkout -b test-branch arlington
35-
- name: Configure user nameF
59+
- name: Configure user name
3660
run: |
3761
git config user.name "Git User"
3862
git config user.email "user@test.com"
3963
- name: Add commit to the test branch
40-
run: git cherry-pick -m 1 ${{ github.sha }}
64+
run: git cherry-pick -m 1 ${{ github.event.before }}..${{ github.event.after }} --empty=drop
4165
- name: Build project with Maven
4266
if: success()
4367
run: mvn --batch-mode --update-snapshots verify
@@ -63,7 +87,7 @@ jobs:
6387
git config user.name "Git User"
6488
git config user.email "user@temp.com"
6589
- name: Add commit to new branch
66-
run: git cherry-pick -m 1 ${{ github.sha }}
90+
run: git cherry-pick -m 1 ${{ github.event.before }}..${{ github.event.after }} --empty=drop
6791
- name: Merge branch into arlington
6892
if: success()
6993
run: |
@@ -79,6 +103,7 @@ jobs:
79103
needs: [checkout-and-build, merge]
80104
if: |
81105
always() &&
106+
github.repository == 'veraPDF/veraPDF-model' &&
82107
(contains(needs.*.result, 'failure') ||
83108
contains(needs.*.result, 'skipped') ||
84109
contains(needs.*.result, 'cancelled'))

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ veraPDF-model
22
=============
33
The veraPDF Validation model described using a Domain Specific Language developed in [XText](https://eclipse.org/Xtext/).
44

5-
[![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")
5+
[![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")
66
[![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")
77
[![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")
88

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

25-
* 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).
25+
* 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).
2626
* [Maven v3+](https://maven.apache.org/)
2727

2828
If you want to edit and regenerate the model you'll need:

license/template/license.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
This file is part of ${project.name}, a module of the veraPDF project.
2-
Copyright (c) ${project.inceptionYear}, ${owner} <${email}>
2+
Copyright (c) ${project.inceptionYear}-${current.year}, ${owner} <${email}>
33
All rights reserved.
44

55
${project.name} is free software: you can redistribute it and/or modify

pom.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<!--
22
33
This file is part of veraPDF Validation Model API, a module of the veraPDF project.
4-
Copyright (c) 2015, veraPDF Consortium <info@verapdf.org>
4+
Copyright (c) 2015-2025, veraPDF Consortium <info@verapdf.org>
55
All rights reserved.
66
77
veraPDF Validation Model API is free software: you can redistribute it and/or modify
@@ -27,13 +27,13 @@
2727
<parent>
2828
<groupId>org.verapdf</groupId>
2929
<artifactId>verapdf-parent</artifactId>
30-
<version>1.26.2</version>
30+
<version>1.28.1</version>
3131
<relativePath />
3232
</parent>
3333

3434
<groupId>org.verapdf</groupId>
3535
<artifactId>pdf-model</artifactId>
36-
<version>1.26.0</version>
36+
<version>1.28.0</version>
3737

3838
<name>veraPDF Validation Model API</name>
3939
<description>Java interfaces for the veraPDF Validation model, generated from the Xtext DSL.</description>
@@ -69,7 +69,7 @@
6969
</pluginRepositories>
7070

7171
<properties>
72-
<verapdf.model.syntax.version>[1.26.0,1.27.0)</verapdf.model.syntax.version>
72+
<verapdf.model.syntax.version>[1.28.0,1.29.0)</verapdf.model.syntax.version>
7373
<xtext.version>2.26.0</xtext.version>
7474
</properties>
7575

src/main/java/PDLayer.mdl

Lines changed: 46 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ type PDDocument extends PDObject {
4747
link pages: PDPage+;
4848
% document level metadata
4949
link metadata: PDMetadata?;
50+
% true if the catalog dictionary contains the metadata
51+
property containsMetadata: Boolean;
5052
% Interactive Form Dictionary (AcroForm entry in the Catalog)
5153
link AcroForm: PDAcroForm?;
5254
% additional actions dictionary defined for the document (AA entry in the Catalog)
@@ -61,10 +63,14 @@ type PDDocument extends PDObject {
6163
link OCProperties: PDOCProperties?;
6264
% the link to the document structure tree root dictionary
6365
link StructTreeRoot: PDStructTreeRoot?;
66+
% true if the catalog dictionary contains the struct tree root
67+
property containsStructTreeRoot: Boolean;
6468
% true if the document contains alternate presentations (/AlternatePresentations entry in the document names dictionary)
6569
property containsAlternatePresentations: Boolean;
6670
% value of the Lang entry from the document catalog
6771
link Lang: CosLang?;
72+
% true if the catalog dictionary contains the lang
73+
property containsLang: Boolean;
6874
% link to the permissions object
6975
link Perms: PDPerms?;
7076
% true if the catalog dictionary contains the AA entry
@@ -92,6 +98,8 @@ type PDPage extends PDObject {
9298
link contentStream: PDContentStream;
9399
% all page annotations
94100
link annots: PDAnnot*;
101+
% true if the page dictionary contains annotations
102+
property containsAnnotations: Boolean;
95103
% link to the parent transparency blending space
96104
link parentTransparencyColorSpace: TransparencyColorSpace?;
97105
% group attributes dictionary
@@ -309,6 +317,8 @@ type PDFont extends PDResource {
309317
property renderingMode: Integer;
310318
% embedded font program for Type 1, TrueType or CID Font
311319
link fontFile: FontProgram?;
320+
% true if the font dictionary contains the font program
321+
property containsFontFile: Boolean;
312322
% 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)
313323
property fontFileSubtype: String;
314324
% value of Italic flag in Flags entry in the font descriptor
@@ -395,6 +405,8 @@ type PDCMap extends PDObject {
395405
link UseCMap: PDReferencedCMap?;
396406
% link to the embedded CMap file for a non-standard CMap
397407
link embeddedFile: CMapFile?;
408+
% true if the cmap dictionary contains the embedded CMap file
409+
property containsEmbeddedFile: Boolean;
398410
}
399411

400412
% CMap that is referenced with UseCMap in other CMap
@@ -428,10 +440,14 @@ type PDXImage extends PDXObject {
428440
link jpxStream: JPEG2000?;
429441
% link to the soft mask image (SMask key)
430442
link SMask: PDSMaskImage?;
443+
% link to the mask image (Mask key)
444+
link Mask: PDMaskImage?;
431445
% true if the image dictionary contains Alternates key
432446
property containsAlternates: Boolean;
433447
% value of the BitsPerComponent key
434448
property BitsPerComponent: Integer;
449+
% true, if this Image XObject is mask
450+
property isMask: Boolean;
435451
}
436452

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

442458
}
443459

460+
% Mask image
461+
type PDMaskImage extends PDXImage {
462+
463+
}
464+
444465
% Inline image object
445466
type PDInlineImage extends PDXImage {
446467
% link to the inline image filters
@@ -483,20 +504,26 @@ type PDGroup extends PDObject {
483504

484505
% ExtGState dictionary
485506
type PDExtGState extends PDResource {
486-
% TR function
487-
property TR: String;
488507
% TR2 function
489-
property TR2: String;
508+
property TR2NameValue: String;
509+
% true if the ExtGState dictionary contains TR key
510+
property containsTR: Boolean;
511+
% true if the ExtGState dictionary contains TR2 key
512+
property containsTR2: Boolean;
490513
% Halftone dictionary
491514
link HT: PDHalftone;
492515
% true if the ExtGState dictionary contains HTP key
493516
property containsHTP: Boolean;
494517
% true if the ExtGState dictionary contains HTO key
495518
property containsHTO: Boolean;
496519
% String representation of the SMask key ("None" or "Custom")
497-
property SMask: String;
520+
property SMaskNameValue: String;
521+
% true if the ExtGState dictionary contains SMask key
522+
property containsSMask: Boolean;
523+
% true if the ExtGState dictionary contains BM key
524+
property containsBM: Boolean;
498525
% blend mode
499-
property BM: String;
526+
property BMNameValue: String;
500527
% link to blend mode
501528
link bm: CosBM?;
502529
% fill alpha
@@ -540,6 +567,8 @@ type PDAnnot extends PDObject {
540567
property F: Integer;
541568
% ampersand-separated list of all keys in the annotation's appearance dictionary (AP key)
542569
property AP: String;
570+
% true if the annotation dictionary contains the appearances
571+
property containsAppearances: Boolean;
543572
% 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
544573
property FT: String;
545574
% 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
@@ -570,6 +599,8 @@ type PDAnnot extends PDObject {
570599
property structParentObjectKey: String;
571600
% value of the Lang entry
572601
link Lang: CosLang?;
602+
% true if the annotation dictionary contains the lang
603+
property containsLang: Boolean;
573604
% the value of the /Contents entry
574605
property Contents: String;
575606
% the Alt entry of parent structure element
@@ -688,7 +719,7 @@ type PDAcroForm extends PDObject {
688719
property NeedAppearances: Boolean;
689720
% true if the form dictionary contains XFA key
690721
property containsXFA: Boolean;
691-
% all interactive form fields in the document
722+
% root interactive form fields in the document
692723
link formFields: PDFormField*;
693724
% value of dynamicRender property in XFA
694725
property dynamicRender: String;
@@ -704,6 +735,8 @@ type PDFormField extends PDObject {
704735
property containsAA: Boolean;
705736
% value of the Lang entry
706737
link Lang: CosLang?;
738+
% true if the form field dictionary contains the lang
739+
property containsLang: Boolean;
707740
% value of the TU entry
708741
property TU: String;
709742
% value of the Ff entry
@@ -793,6 +826,8 @@ type PDMetadata extends PDObject {
793826
link stream: CosStream;
794827
% value of the Filter key in the metadata stream dictionary
795828
property Filter: String;
829+
% true if this is catalog metadata
830+
property isCatalogMetadata: Boolean;
796831
}
797832

798833
% the output intent dictionary
@@ -869,12 +904,17 @@ type PDStructElem extends PDStructTreeNode {
869904
property parentStandardType: String;
870905
% structure type
871906
link S: CosUnicodeName;
907+
% the namespace specified in the element dictionary (or the default namespace, if not explicitly specified) and
908+
% the element tag separated by the colon
909+
property namespaceAndTag: String;
872910
% structure type
873911
property valueS: String;
874912
% standard structure type defined via role map
875913
property standardType: String;
876914
% value of the Lang entry
877915
link Lang: CosLang?;
916+
% true if the structure element dictionary contains the lang
917+
property containsLang: Boolean;
878918
% value of parent Lang entry
879919
property parentLang: String;
880920
% remapped standard type value

src/main/java/SALayer.mdl

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@ package org.verapdf.model.salayer;
22

33
import org.verapdf.model.baselayer.Object;
44

5+
import java.util.List;
6+
57
type SAObject extends Object {
68
% id of group in format id:<number>
79
property structureID: String;
8-
% comma separated list of error codes
9-
property errorCodes: String;
10-
% semicolon separated list of error arguments
11-
property errorArguments: String;
10+
% list of error codes
11+
property errorCodes: List<String>;
12+
% list of error arguments
13+
property errorArguments: List<List<String>>;
1214
}
1315

1416
% the class corresponding to the high level PDF document structure

0 commit comments

Comments
 (0)