diff --git a/src/core/xfa/html_utils.js b/src/core/xfa/html_utils.js index 9d1ddc989..9648e3ccd 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 5eb7ed21e..ed7450263 100644 --- a/src/core/xfa/template.js +++ b/src/core/xfa/template.js @@ -71,6 +71,7 @@ import { fixDimensions, fixTextIndent, getFonts, + isPrintOnly, layoutClass, layoutText, measureToString, @@ -302,6 +303,10 @@ class Area extends XFAObject { class: ["xfaArea"], }; + if (isPrintOnly(this)) { + attributes.class.push("xfaPrintOnly"); + } + if (this.name) { attributes.xfaName = this.name; } @@ -1140,12 +1145,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], }, }); @@ -1515,6 +1527,9 @@ class Draw extends XFAObject { if (this.font) { classNames.push("xfaFont"); } + if (isPrintOnly(this)) { + classNames.push("xfaPrintOnly"); + } const attributes = { style, @@ -2083,6 +2098,10 @@ class ExclGroup extends XFAObject { classNames.push(cl); } + if (isPrintOnly(this)) { + classNames.push("xfaPrintOnly"); + } + attributes.style = style; attributes.class = classNames; @@ -2331,6 +2350,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 5dadb1199..c3706ed2d 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;