Bug 152234 - FILESAVE PDF PAC tool reports "Widget annotation not nested inside a Form structure element" with form objects (clause 7.18)
Summary: FILESAVE PDF PAC tool reports "Widget annotation not nested inside a Form str...
Status: VERIFIED FIXED
Alias: None
Product: LibreOffice
Classification: Unclassified
Component: Printing and PDF export (show other bugs)
Version:
(earliest affected)
7.0.6.2 release
Hardware: All All
: medium normal
Assignee: Michael Stahl (allotropia)
URL:
Whiteboard: target:7.6.0 target:7.5.3 target:24.2...
Keywords: accessibility
Depends on:
Blocks: PDF-Accessibility
  Show dependency treegraph
 
Reported: 2022-11-26 10:12 UTC by Gabor Kelemen (allotropia)
Modified: 2023-09-24 14:35 UTC (History)
2 users (show)

See Also:
Crash report or crash signature:


Attachments
Example file with all form controls from Writer (24.99 KB, application/vnd.oasis.opendocument.text)
2022-11-26 10:12 UTC, Gabor Kelemen (allotropia)
Details
The example file exported to PDF (81.10 KB, application/pdf)
2022-11-26 10:13 UTC, Gabor Kelemen (allotropia)
Details
Screenshot of the issue in the PAC tool (298.40 KB, image/png)
2022-11-26 10:14 UTC, Gabor Kelemen (allotropia)
Details
Screenshot of the issue in the PAC tool with placeholder text (300.89 KB, image/png)
2022-11-26 10:15 UTC, Gabor Kelemen (allotropia)
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Gabor Kelemen (allotropia) 2022-11-26 10:12:42 UTC
Created attachment 183804 [details]
Example file with all form controls from Writer

When the attached file with all Writer Form controls is exported to PDF with PDF/UA enabled and the file is checked in the PAC tool, the reported error is "Widget annotation not nested inside a Form structure element"

1, Open attached file
2, Export it as PDF, with enabled PDF/UA option
3, Check with the PAC tool: https://pdfua.foundation/en/pdf-accessibility-checker-pac

PAC would report the error on the attached screenshot.

VeraPDF https://demo.verapdf.org/ with PDF/UA setting on the second page, reports:

Validation information
Rule	Status
Specification: ISO 14289-1:2014, Clause: 7.18.1, Test number: 3	
A form field whose hidden flag is not set and whose rectangle is not outside the crop-box shall have a TU key present or all its Widget annotations shall have alternative descriptions (in the form of an Alt entry in the enclosing structure elements)	Failed
13 occurrences 	Hide
PDWidgetAnnot	
isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '')	
root/document[0]/pages[0](1 0 obj PDPage)/annots[0](22 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[1](26 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[2](28 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[3](31 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[4](50 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[5](33 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[6](36 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[7](38 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[8](40 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[9](42 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[10](44 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[11](46 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[12](48 0 obj PDWidgetAnnot)

	
Specification: ISO 14289-1:2014, Clause: 7.18.4, Test number: 2	
If the Form element omits a Role attribute (Table 348), it shall have only one child: an object reference (14.7.4.3) identifying the widget annotation per ISO 32000-1:2008, 14.8.4.5, Table 340.	Failed
13 occurrences 	Hide
SEForm	
roleAttribute != null || hasOneInteractiveChild == true	
root/document[0]/StructTreeRoot[0](82 0 obj PDStructTreeRoot)/K[0](4 0 obj SEDocument Document)/K[16](21 0 obj SEForm Form)
root/document[0]/StructTreeRoot[0](82 0 obj PDStructTreeRoot)/K[0](4 0 obj SEDocument Document)/K[17](25 0 obj SEForm Form)
root/document[0]/StructTreeRoot[0](82 0 obj PDStructTreeRoot)/K[0](4 0 obj SEDocument Document)/K[18](27 0 obj SEForm Form)
root/document[0]/StructTreeRoot[0](82 0 obj PDStructTreeRoot)/K[0](4 0 obj SEDocument Document)/K[19](30 0 obj SEForm Form)
root/document[0]/StructTreeRoot[0](82 0 obj PDStructTreeRoot)/K[0](4 0 obj SEDocument Document)/K[20](32 0 obj SEForm Form)
root/document[0]/StructTreeRoot[0](82 0 obj PDStructTreeRoot)/K[0](4 0 obj SEDocument Document)/K[21](35 0 obj SEForm Form)
root/document[0]/StructTreeRoot[0](82 0 obj PDStructTreeRoot)/K[0](4 0 obj SEDocument Document)/K[22](37 0 obj SEForm Form)
root/document[0]/StructTreeRoot[0](82 0 obj PDStructTreeRoot)/K[0](4 0 obj SEDocument Document)/K[23](39 0 obj SEForm Form)
root/document[0]/StructTreeRoot[0](82 0 obj PDStructTreeRoot)/K[0](4 0 obj SEDocument Document)/K[24](41 0 obj SEForm Form)
root/document[0]/StructTreeRoot[0](82 0 obj PDStructTreeRoot)/K[0](4 0 obj SEDocument Document)/K[25](43 0 obj SEForm Form)
root/document[0]/StructTreeRoot[0](82 0 obj PDStructTreeRoot)/K[0](4 0 obj SEDocument Document)/K[26](45 0 obj SEForm Form)
root/document[0]/StructTreeRoot[0](82 0 obj PDStructTreeRoot)/K[0](4 0 obj SEDocument Document)/K[27](47 0 obj SEForm Form)
root/document[0]/StructTreeRoot[0](82 0 obj PDStructTreeRoot)/K[0](4 0 obj SEDocument Document)/K[28](49 0 obj SEForm Form)

	
Specification: ISO 14289-1:2014, Clause: 7.18.4, Test number: 1	
A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340.	Failed
13 occurrences 	Hide
PDWidgetAnnot	
structParentType == 'Form' || isOutsideCropBox == true || (F & 2) == 2	
root/document[0]/pages[0](1 0 obj PDPage)/annots[0](22 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[1](26 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[2](28 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[3](31 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[4](50 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[5](33 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[6](36 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[7](38 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[8](40 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[9](42 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[10](44 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[11](46 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[12](48 0 obj PDWidgetAnnot)

	
Specification: ISO 14289-1:2014, Clause: 7.1, Test number: 3	
Content shall be marked as Artifact or tagged as real content	Failed
5 occurrences 	Hide
SESimpleContentItem	
parentStructureTag != null || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0	
root/document[0]/pages[0](1 0 obj PDPage)/annots[1](26 0 obj PDWidgetAnnot)/appearance[0](102 0 obj PDSemanticContentStream)/content[0]/contentItem[0]
root/document[0]/pages[0](1 0 obj PDPage)/annots[2](28 0 obj PDWidgetAnnot)/appearance[0](104 0 obj PDSemanticContentStream)/content[0]/contentItem[0]
root/document[0]/pages[0](1 0 obj PDPage)/annots[3](31 0 obj PDWidgetAnnot)/appearance[0](105 0 obj PDSemanticContentStream)/content[0]/contentItem[0]
root/document[0]/pages[0](1 0 obj PDPage)/annots[4](50 0 obj PDWidgetAnnot)/appearance[0](114 0 obj PDSemanticContentStream)/content[0]/contentItem[0]
root/document[0]/pages[0](1 0 obj PDPage)/contentStream[0](2 0 obj PDSemanticContentStream)/content[18]/contentItem[0]

Version: 7.5.0.0.alpha0+ (X86_64) / LibreOffice Community
Build ID: 5116d6ad85d804e7b7897bc57a4a4bf9d5bed4f1
CPU threads: 14; OS: Windows 10.0 Build 19044; UI render: Skia/Raster; VCL: win
Locale: de-DE (hu_HU); UI: en-US
Calc: threaded
Comment 1 Gabor Kelemen (allotropia) 2022-11-26 10:13:49 UTC
Created attachment 183805 [details]
The example file exported to PDF
Comment 2 Gabor Kelemen (allotropia) 2022-11-26 10:14:32 UTC
Created attachment 183806 [details]
Screenshot of the issue in the PAC tool
Comment 3 Gabor Kelemen (allotropia) 2022-11-26 10:15:29 UTC
Created attachment 183807 [details]
Screenshot of the issue in the PAC tool with placeholder text

Placeholder texts in the form controls also generate the "Text object not tagged" error in PAC.
Comment 4 Stéphane Guillou (stragu) 2022-12-05 15:24:59 UTC
Reproduced with:

Version: 7.4.3.2 / LibreOffice Community
Build ID: 1048a8393ae2eeec98dff31b5c133c5f1d08b890
CPU threads: 8; OS: Linux 5.15; UI render: default; VCL: gtk3
Locale: de-DE (en_AU.UTF-8); UI: en-US
Calc: threaded

VeraPDF lists clauses 7.1, 7.18.1, 7.18.4

Also in:

Version: 7.0.6.2
Build ID: 144abb84a525d8e30c9dbbefa69cbbf2d8d4ae3b
CPU threads: 8; OS: Linux 5.15; UI render: default; VCL: gtk3
Locale: en-AU (en_AU.UTF-8); UI: en-US
Calc: threaded

VeraPDF lists clauses 7.1, 7.18.1, 7.18.3, 7.18.4
Comment 5 Commit Notification 2023-03-27 08:40:35 UTC
Michael Stahl committed a patch related to this issue.
It has been pushed to "master":

https://git.libreoffice.org/core/commit/002a6fee2fbd07c3f0cd1f1ddba39c691130727e

tdf#152234 drawinglayer,svx: PDF/UA export: add Alt text to form controls

It will be available in 7.6.0.

The patch should be included in the daily builds available at
https://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
https://wiki.documentfoundation.org/Testing_Daily_Builds

Affected users are encouraged to test the fix and report feedback.
Comment 6 Commit Notification 2023-03-27 09:17:41 UTC
Michael Stahl committed a patch related to this issue.
It has been pushed to "master":

https://git.libreoffice.org/core/commit/d9031bd83ffe718a80da9ecbdbeb485e35fbabee

tdf#152234 vcl: PDF/UA export: StructElem<->Annot for form controls

It will be available in 7.6.0.

The patch should be included in the daily builds available at
https://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
https://wiki.documentfoundation.org/Testing_Daily_Builds

Affected users are encouraged to test the fix and report feedback.
Comment 7 Commit Notification 2023-03-28 12:29:19 UTC
Michael Stahl committed a patch related to this issue.
It has been pushed to "libreoffice-7-5":

https://git.libreoffice.org/core/commit/dc9d083ce0b290e0203f060ac96fbffa40cbdefc

tdf#152234 drawinglayer,svx: PDF/UA export: add Alt text to form controls

It will be available in 7.5.3.

The patch should be included in the daily builds available at
https://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
https://wiki.documentfoundation.org/Testing_Daily_Builds

Affected users are encouraged to test the fix and report feedback.
Comment 8 Commit Notification 2023-03-28 12:30:22 UTC
Michael Stahl committed a patch related to this issue.
It has been pushed to "libreoffice-7-5":

https://git.libreoffice.org/core/commit/d4d471fc88fe4fd14f44dfccdfe360dec327d4f0

tdf#152234 vcl: PDF/UA export: StructElem<->Annot for form controls

It will be available in 7.5.3.

The patch should be included in the daily builds available at
https://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
https://wiki.documentfoundation.org/Testing_Daily_Builds

Affected users are encouraged to test the fix and report feedback.
Comment 9 Commit Notification 2023-04-04 13:01:38 UTC
Michael Stahl committed a patch related to this issue.
It has been pushed to "master":

https://git.libreoffice.org/core/commit/2a87a59a52ae26db5106f7d1f4346225d032b550

tdf#152234 vcl,drawinglayer: PDF/UA export: produce Role for form controls

It will be available in 7.6.0.

The patch should be included in the daily builds available at
https://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
https://wiki.documentfoundation.org/Testing_Daily_Builds

Affected users are encouraged to test the fix and report feedback.
Comment 10 Commit Notification 2023-04-06 07:35:43 UTC
Michael Stahl committed a patch related to this issue.
It has been pushed to "master":

https://git.libreoffice.org/core/commit/5ef4d326a06f9fc0aff36bd5cdcba1b7af8e03db

tdf#152234 drawinglayer: PDF/UA export: fallback for unsupported forms

It will be available in 7.6.0.

The patch should be included in the daily builds available at
https://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
https://wiki.documentfoundation.org/Testing_Daily_Builds

Affected users are encouraged to test the fix and report feedback.
Comment 11 Michael Stahl (allotropia) 2023-04-06 07:57:06 UTC
fixed on master.

all remaining complaints about the bugdoc from veraPDF are about missing Alt texts which the user has to set.

Specification: ISO 14289-1:2014, Clause: 7.18.1, Test number: 3	
A form field whose hidden flag is not set and whose rectangle is not outside the crop-box shall have a TU key present or all its Widget annotations shall have alternative descriptions (in the form of an Alt entry in the enclosing structure elements)	Failed
13 occurrences 	Show
	
Specification: ISO 14289-1:2014, Clause: 7.3, Test number: 1	
Figure tags shall include an alternative representation or replacement text that represents the contents marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323	Failed
2 occurrences
Comment 12 Commit Notification 2023-04-06 09:34:58 UTC
Michael Stahl committed a patch related to this issue.
It has been pushed to "libreoffice-7-5":

https://git.libreoffice.org/core/commit/6a50c22b26199a55240d910310ecd3cc518f7060

tdf#152234 vcl,drawinglayer: PDF/UA export: produce Role for form controls

It will be available in 7.5.3.

The patch should be included in the daily builds available at
https://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
https://wiki.documentfoundation.org/Testing_Daily_Builds

Affected users are encouraged to test the fix and report feedback.
Comment 13 Commit Notification 2023-04-06 14:49:47 UTC
Michael Stahl committed a patch related to this issue.
It has been pushed to "libreoffice-7-5":

https://git.libreoffice.org/core/commit/462512b71eec7be6874e776a0ec4aa7a83acdb36

tdf#152234 drawinglayer: PDF/UA export: fallback for unsupported forms

It will be available in 7.5.3.

The patch should be included in the daily builds available at
https://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
https://wiki.documentfoundation.org/Testing_Daily_Builds

Affected users are encouraged to test the fix and report feedback.
Comment 14 Gabor Kelemen (allotropia) 2023-04-12 15:24:32 UTC
Verified in:

Version: 7.6.0.0.alpha0+ (X86_64) / LibreOffice Community
Build ID: fc6806c4be8585ce0d35a6b581bf8b3dbf858500
CPU threads: 14; OS: Windows 10.0 Build 19045; UI render: default; VCL: win
Locale: hu-HU (hu_HU); UI: hu-HU
Calc: threaded

VeraPDF now complains only about the missing Alt descriptions:

Specification: ISO 14289-1:2014, Clause: 7.3, Test number: 1	
Figure tags shall include an alternative representation or replacement text that represents the contents marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323	Failed
2 occurrences 	Hide
SEFigure	
(Alt != null && Alt != '') || ActualText != null	
root/document[0]/StructTreeRoot[0](81 0 obj PDStructTreeRoot)/K[0](4 0 obj SEDocument Document)/K[16](21 0 obj SEFigure Figure)
root/document[0]/StructTreeRoot[0](81 0 obj PDStructTreeRoot)/K[0](4 0 obj SEDocument Document)/K[22](35 0 obj SEFigure Figure)

	
Specification: ISO 14289-1:2014, Clause: 7.18.1, Test number: 3	
A form field whose hidden flag is not set and whose rectangle is not outside the crop-box shall have a TU key present or all its Widget annotations shall have alternative descriptions (in the form of an Alt entry in the enclosing structure elements)	Failed
13 occurrences 	Hide
PDWidgetAnnot	
isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '')	
root/document[0]/pages[0](1 0 obj PDPage)/annots[0](23 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[1](27 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[2](29 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[3](32 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[4](52 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[5](34 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[6](38 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[7](40 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[8](42 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[9](44 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[10](46 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[11](48 0 obj PDWidgetAnnot)
root/document[0]/pages[0](1 0 obj PDPage)/annots[12](50 0 obj PDWidgetAnnot)

However filling it for the first form control with right click -> Description makes all these disappear. 
Why all, not only 1 of the 13? Probably this is another issue.
Comment 15 Commit Notification 2023-07-11 10:18:13 UTC
Michael Stahl committed a patch related to this issue.
It has been pushed to "master":

https://git.libreoffice.org/core/commit/1ae1f76caeef35a0db7705dd0c330936a77b6a8c

tdf#152234 vcl: Role values are lowercase

It will be available in 24.2.0.

The patch should be included in the daily builds available at
https://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
https://wiki.documentfoundation.org/Testing_Daily_Builds

Affected users are encouraged to test the fix and report feedback.
Comment 16 Commit Notification 2023-07-12 07:13:13 UTC
Michael Stahl committed a patch related to this issue.
It has been pushed to "libreoffice-7-5":

https://git.libreoffice.org/core/commit/c1f7f916a6705e850cc8255d4e69055ee605059c

tdf#152234 vcl: Role values are lowercase

It will be available in 7.5.6.

The patch should be included in the daily builds available at
https://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
https://wiki.documentfoundation.org/Testing_Daily_Builds

Affected users are encouraged to test the fix and report feedback.
Comment 17 Commit Notification 2023-07-26 12:48:30 UTC
Michael Stahl committed a patch related to this issue.
It has been pushed to "libreoffice-7-6":

https://git.libreoffice.org/core/commit/ae68b45bb22bfcccf622750f4728542d0c6306e9

tdf#152234 vcl: Role values are lowercase

It will be available in 7.6.0.2.

The patch should be included in the daily builds available at
https://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
https://wiki.documentfoundation.org/Testing_Daily_Builds

Affected users are encouraged to test the fix and report feedback.