diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3624bc5..57eeec4 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,9 +1,8 @@ name: Run tests on: push: - branches: - - '*' - - '!master' + branches-ignore: + - master jobs: build: diff --git a/Dockerfile b/Dockerfile index c69c8ac..2788ac7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ FROM gcr.io/distroless/java17@sha256:2460346ea882bc4fb880363a4aa046c4567c4f095f8 WORKDIR /app -COPY build/libs/pdfgen-1.5.3-all.jar app.jar +COPY build/libs/pdfgen-2.0.0-rc1-all.jar app.jar COPY fonts fonts COPY templates templates COPY resources resources diff --git a/README.md b/README.md index 01bfc96..8105469 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,26 @@ Find the newest version of gradle here: https://gradle.org/releases/ Then run th ```./gradlew wrapper --gradle-version $gradleVersjon``` + +## pdfgen 2.0 release candidate + +`pdfgen` 2.0 targets a new PDF standard, [PDF/A-2a](https://en.wikipedia.org/wiki/PDF/A#PDF/A-2), as well as [PDF/UA](https://en.wikipedia.org/wiki/PDF/UA). +The primary goal is to produce PDFs that are not only valid for archival, but also valid according to Universal Accessibility standards. +This introduces a few "breaking" changes, although they are not enforced by pdfgen; it is still possible to produce PDFs that don't achieve "Universal Accessibility" as defined by PDF/UA. + +There is a release candidate published, although none of the documentation exists to describe how to produce PDFs with proper UA for template writers as of yet. +As such, here be dragons! +A [licensed Adobe Acrobat DC](https://gist.github.com/karinaldw/1c4c321fe05bdc1e8996e00722d5317a#adobe-acrobat-dc-pdf) is one of the tools that can check the PDFs for proper UA, as well as [PAC 3](https://www.access-for-all.ch/en/pdf-accessibility-checker.html) (Windows only). + +```dockerfile +# Dockerfile +FROM ghcr.io/navikt/pdfgen:2.0.0-rc1 + +COPY templates /app/templates # handlebars templates +COPY fonts /app/fonts # fonts to be embedded +COPY resources /app/resources # additional resources +``` + ## 👥 Contact This project is currently maintained by the organisation [@navikt](https://github.com/navikt). diff --git a/build.gradle.kts b/build.gradle.kts index 3ae1e3b..9ff958f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,7 +1,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile group = "no.nav.pdfgen" -version = "1.5.3" +version = "2.0.0-rc1" val handlebarsVersion = "4.3.0" val jacksonVersion = "2.13.3" diff --git a/src/main/kotlin/no/nav/pdfgen/api/GeneratePdfApi.kt b/src/main/kotlin/no/nav/pdfgen/api/GeneratePdfApi.kt index c3fd614..be6c95e 100644 --- a/src/main/kotlin/no/nav/pdfgen/api/GeneratePdfApi.kt +++ b/src/main/kotlin/no/nav/pdfgen/api/GeneratePdfApi.kt @@ -96,7 +96,6 @@ fun Routing.setupGeneratePdfApi(env: Environment, templates: TemplateMap) { } } } - } private fun hotTemplateData(applicationName: String, template: String): JsonNode { diff --git a/src/main/kotlin/no/nav/pdfgen/pdf/Create.kt b/src/main/kotlin/no/nav/pdfgen/pdf/Create.kt index 54cb6dc..de0f9a8 100644 --- a/src/main/kotlin/no/nav/pdfgen/pdf/Create.kt +++ b/src/main/kotlin/no/nav/pdfgen/pdf/Create.kt @@ -38,7 +38,8 @@ fun createPDFA(html: String, env: Environment): ByteArray { useFont({ ByteArrayInputStream(font.bytes) }, font.family, font.weight, font.style, font.subset) } } - .usePdfAConformance(PdfRendererBuilder.PdfAConformance.PDFA_2_U) + .usePdfAConformance(PdfRendererBuilder.PdfAConformance.PDFA_2_A) + .usePdfUaAccessbility(true) .useColorProfile(env.colorProfile) .useSVGDrawer(BatikSVGDrawer()) .withHtmlContent(html, null) @@ -109,7 +110,7 @@ fun createPDFA(imageStream: InputStream, outputStream: OutputStream, env: Enviro } } -private fun verifyCompliance(input: ByteArray, flavour: PDFAFlavour = PDFAFlavour.PDFA_2_U): Boolean { +private fun verifyCompliance(input: ByteArray, flavour: PDFAFlavour = PDFAFlavour.PDFA_2_A): Boolean { val pdf = ByteArrayInputStream(input) val validator = Foundries.defaultInstance().createValidator(flavour, false) val result = Foundries.defaultInstance().createParser(pdf).use { validator.validate(it) } diff --git a/src/test/resources/data/syfosoknader/annetarbeidsforhold.json b/src/test/resources/data/syfosoknader/annetarbeidsforhold.json index a34bfe5..b4724f0 100644 --- a/src/test/resources/data/syfosoknader/annetarbeidsforhold.json +++ b/src/test/resources/data/syfosoknader/annetarbeidsforhold.json @@ -430,7 +430,7 @@ "id": "30", "tag": "IKKE_SOKT_UTENLANDSOPPHOLD_INFORMASJON", "sporsmalstekst": null, - "undertekst": "

I utgangspunktet kan du bare få sykepenger mens du er i et land innenfor EØS. Du kan likevel søke NAV om å få reise ut av EØS og beholde sykepengene i en begrenset periode.

", + "undertekst": "

I utgangspunktet kan du bare få sykepenger mens du er i et land innenfor EØS. Du kan likevel søke NAV om å få reise ut av EØS og beholde sykepengene i en begrenset periode.

", "svartype": "IKKE_RELEVANT", "min": null, "max": null, @@ -465,7 +465,7 @@ "id": "32", "tag": "VAER_KLAR_OVER_AT", "sporsmalstekst": "Viktig å være klar over:", - "undertekst": "

Du kan lese mer om rettigheter og plikter på nav.no/sykepenger.

", + "undertekst": "

Du kan lese mer om rettigheter og plikter på nav.no/sykepenger.

", "svartype": "IKKE_RELEVANT", "min": null, "max": null, diff --git a/src/test/resources/data/syfosoknader/arbeidsledig.json b/src/test/resources/data/syfosoknader/arbeidsledig.json index b2abf97..9e76fe9 100644 --- a/src/test/resources/data/syfosoknader/arbeidsledig.json +++ b/src/test/resources/data/syfosoknader/arbeidsledig.json @@ -435,7 +435,7 @@ "id": "26", "tag": "VAER_KLAR_OVER_AT", "sporsmalstekst": "Viktig å være klar over:", - "undertekst": "

Du kan lese mer om rettigheter og plikter på nav.no/sykepenger.

", + "undertekst": "

Du kan lese mer om rettigheter og plikter på nav.no/sykepenger.

", "svartype": "IKKE_RELEVANT", "min": null, "max": null, diff --git a/src/test/resources/data/syfosoknader/arbeidstakere.json b/src/test/resources/data/syfosoknader/arbeidstakere.json index 258fa2a..6e81a01 100644 --- a/src/test/resources/data/syfosoknader/arbeidstakere.json +++ b/src/test/resources/data/syfosoknader/arbeidstakere.json @@ -631,7 +631,7 @@ "id": "308935", "tag": "VAER_KLAR_OVER_AT", "sporsmalstekst": "Viktig å være klar over:", - "undertekst": "

Du kan lese mer om rettigheter og plikter på nav.no/sykepenger.

", + "undertekst": "

Du kan lese mer om rettigheter og plikter på nav.no/sykepenger.

", "svartype": "IKKE_RELEVANT", "min": null, "max": null, diff --git a/src/test/resources/data/syfosoknader/behandlingsdager.json b/src/test/resources/data/syfosoknader/behandlingsdager.json index d644be6..28c6366 100644 --- a/src/test/resources/data/syfosoknader/behandlingsdager.json +++ b/src/test/resources/data/syfosoknader/behandlingsdager.json @@ -107,7 +107,7 @@ "id": "50766", "tag": "VAER_KLAR_OVER_AT", "sporsmalstekst": "Viktig å være klar over:", - "undertekst": "

Du kan lese mer om rettigheter og plikter på nav.no/sykepenger.

", + "undertekst": "

Du kan lese mer om rettigheter og plikter på nav.no/sykepenger.

", "svartype": "IKKE_RELEVANT", "min": null, "max": null, diff --git a/src/test/resources/data/syfosoknader/selvstendignaeringsdrivende.json b/src/test/resources/data/syfosoknader/selvstendignaeringsdrivende.json index 7f26ec2..bf94230 100644 --- a/src/test/resources/data/syfosoknader/selvstendignaeringsdrivende.json +++ b/src/test/resources/data/syfosoknader/selvstendignaeringsdrivende.json @@ -303,7 +303,7 @@ "id": "308955", "tag": "IKKE_SOKT_UTENLANDSOPPHOLD_INFORMASJON", "sporsmalstekst": null, - "undertekst": "

I utgangspunktet kan du bare få sykepenger mens du er i Norge. Du kan likevel søke NAV om å få reise utenlands og beholde sykepengene i en begrenset periode.", + "undertekst": "

I utgangspunktet kan du bare få sykepenger mens du er i Norge. Du kan likevel søke NAV om å få reise utenlands og beholde sykepengene i en begrenset periode.", "svartype": "IKKE_RELEVANT", "min": null, "max": null, @@ -400,7 +400,7 @@ "id": "308960", "tag": "VAER_KLAR_OVER_AT", "sporsmalstekst": "Viktig å være klar over:", - "undertekst": "

Du kan lese mer om rettigheter og plikter på nav.no/sykepenger.

", + "undertekst": "

Du kan lese mer om rettigheter og plikter på nav.no/sykepenger.

", "svartype": "IKKE_RELEVANT", "min": null, "max": null, diff --git a/src/test/resources/html/test_template_included_fonts.html b/src/test/resources/html/test_template_included_fonts.html index a2d80c7..a6bd977 100644 --- a/src/test/resources/html/test_template_included_fonts.html +++ b/src/test/resources/html/test_template_included_fonts.html @@ -2,6 +2,9 @@ Test template + + +