diff --git a/src/core/xfa/html_utils.js b/src/core/xfa/html_utils.js index 9d1ddc9899b05..9648e3ccdef4b 100644 --- a/src/core/xfa/html_utils.js +++ b/src/core/xfa/html_utils.js @@ -368,10 +368,14 @@ function createWrapper(node, html) { } const insetsW = insets[1] + insets[3]; const insetsH = insets[0] + insets[2]; + const classNames = ["xfaBorder"]; + if (isPrintOnly(node.border)) { + classNames.push("xfaPrintOnly"); + } const border = { name: "div", attributes: { - class: ["xfaBorder"], + class: classNames, style: { top: `${insets[0] - widths[0] + shiftW}px`, left: `${insets[3] - widths[3] + shiftH}px`, @@ -460,6 +464,14 @@ function setAccess(node, classNames) { } } +function isPrintOnly(node) { + return ( + node.relevant.length > 0 && + !node.relevant[0].excluded && + node.relevant[0].viewname === "print" + ); +} + function getFonts(family, fontFinder) { if (family.startsWith("'") || family.startsWith('"')) { family = family.slice(1, family.length - 1); @@ -482,6 +494,7 @@ export { fixDimensions, fixTextIndent, getFonts, + isPrintOnly, layoutClass, layoutText, measureToString, diff --git a/src/core/xfa/template.js b/src/core/xfa/template.js index a163bf64ea6cb..988d0501dce3f 100644 --- a/src/core/xfa/template.js +++ b/src/core/xfa/template.js @@ -69,6 +69,7 @@ import { fixDimensions, fixTextIndent, getFonts, + isPrintOnly, layoutClass, layoutText, measureToString, @@ -298,6 +299,10 @@ class Area extends XFAObject { class: ["xfaArea"], }; + if (isPrintOnly(this)) { + attributes.class.push("xfaPrintOnly"); + } + if (this.name) { attributes.xfaName = this.name; } @@ -1136,12 +1141,19 @@ class ContentArea extends XFAObject { width: measureToString(this.w), height: measureToString(this.h), }; + + const classNames = ["xfaContentarea"]; + + if (isPrintOnly(this)) { + classNames.push("xfaPrintOnly"); + } + return HTMLResult.success({ name: "div", children: [], attributes: { style, - class: ["xfaContentarea"], + class: classNames, id: this[$uid], }, }); @@ -1511,6 +1523,9 @@ class Draw extends XFAObject { if (this.font) { classNames.push("xfaFont"); } + if (isPrintOnly(this)) { + classNames.push("xfaPrintOnly"); + } const attributes = { style, @@ -2079,6 +2094,10 @@ class ExclGroup extends XFAObject { classNames.push(cl); } + if (isPrintOnly(this)) { + classNames.push("xfaPrintOnly"); + } + attributes.style = style; attributes.class = classNames; @@ -2327,6 +2346,10 @@ class Field extends XFAObject { classNames.push("xfaFont"); } + if (isPrintOnly(this)) { + classNames.push("xfaPrintOnly"); + } + const attributes = { style, id: this[$uid], diff --git a/web/xfa_layer_builder.css b/web/xfa_layer_builder.css index 5dadb11991812..c3706ed2d1169 100644 --- a/web/xfa_layer_builder.css +++ b/web/xfa_layer_builder.css @@ -13,6 +13,10 @@ * limitations under the License. */ +.xfaPrintOnly { + display: none; +} + .xfaLayer { position: absolute; top: 0;