mirror of
https://github.com/zen-browser/pdf.js.git
synced 2025-07-08 09:20:06 +02:00
XFA - Convert some template properties into CSS ones (#13082)
- implement few positioning properties: position, width, height, anchor; - implement font element; - implement fill element (used by font) and its children (linear, radial, ...); - font property is inherited from ancestor container (see https://www.pdfa.org/wp-content/uploads/2020/07/XFA-3_3.pdf#page=43) so let CSS handles that stuff; - in order to reduce the number of properties to set, only set non default properties and put the default in CSS; - set a background to some containers to be able to see them (will be removed in a future commit).
This commit is contained in:
parent
9d0ce6e79f
commit
63471bcbbe
10 changed files with 549 additions and 93 deletions
|
@ -81,9 +81,9 @@ describe("XFAParser", function () {
|
|||
};
|
||||
const mediumAttributes = {
|
||||
id: "",
|
||||
long: { value: 0, unit: "pt" },
|
||||
long: 0,
|
||||
orientation: "portrait",
|
||||
short: { value: 0, unit: "pt" },
|
||||
short: 0,
|
||||
stock: "",
|
||||
trayIn: "auto",
|
||||
trayOut: "auto",
|
||||
|
@ -116,17 +116,17 @@ describe("XFAParser", function () {
|
|||
allowMacro: 0,
|
||||
anchorType: "topLeft",
|
||||
colSpan: 1,
|
||||
columnWidths: [{ value: 0, unit: "pt" }],
|
||||
h: { value: 0, unit: "pt" },
|
||||
columnWidths: [0],
|
||||
h: 0,
|
||||
hAlign: "left",
|
||||
id: "",
|
||||
layout: "position",
|
||||
locale: "",
|
||||
maxH: { value: 0, unit: "pt" },
|
||||
maxW: { value: 0, unit: "pt" },
|
||||
maxH: 0,
|
||||
maxW: 0,
|
||||
mergeMode: "consumeData",
|
||||
minH: { value: 0, unit: "pt" },
|
||||
minW: { value: 0, unit: "pt" },
|
||||
minH: 0,
|
||||
minW: 0,
|
||||
name: "",
|
||||
presence: "visible",
|
||||
relevant: [],
|
||||
|
@ -134,15 +134,15 @@ describe("XFAParser", function () {
|
|||
scope: "name",
|
||||
use: "",
|
||||
usehref: "",
|
||||
w: { value: 0, unit: "pt" },
|
||||
x: { value: 0, unit: "pt" },
|
||||
y: { value: 0, unit: "pt" },
|
||||
w: 0,
|
||||
x: 0,
|
||||
y: 0,
|
||||
proto: {
|
||||
area: {
|
||||
...attributes,
|
||||
colSpan: 1,
|
||||
x: { value: 0, unit: "pt" },
|
||||
y: { value: -3.14, unit: "in" },
|
||||
x: 0,
|
||||
y: -226.08,
|
||||
relevant: [
|
||||
{ excluded: true, viewname: "foo" },
|
||||
{ excluded: false, viewname: "bar" },
|
||||
|
@ -162,19 +162,19 @@ describe("XFAParser", function () {
|
|||
{
|
||||
...mediumAttributes,
|
||||
imagingBBox: {
|
||||
x: { value: 1, unit: "pt" },
|
||||
y: { value: 2, unit: "in" },
|
||||
width: { value: 3.4, unit: "cm" },
|
||||
height: { value: 5.67, unit: "px" },
|
||||
x: 1,
|
||||
y: 144,
|
||||
width: 96.3779527559055,
|
||||
height: 5.67,
|
||||
},
|
||||
},
|
||||
{
|
||||
...mediumAttributes,
|
||||
imagingBBox: {
|
||||
x: { value: -1, unit: "pt" },
|
||||
y: { value: -1, unit: "pt" },
|
||||
width: { value: -1, unit: "pt" },
|
||||
height: { value: -1, unit: "pt" },
|
||||
x: -1,
|
||||
y: -1,
|
||||
width: -1,
|
||||
height: -1,
|
||||
},
|
||||
},
|
||||
],
|
||||
|
@ -288,7 +288,7 @@ describe("XFAParser", function () {
|
|||
let font = root.template.subform.field[0].font;
|
||||
expect(font.typeface).toEqual("Foo");
|
||||
expect(font.overline).toEqual(0);
|
||||
expect(font.size).toEqual({ value: 123, unit: "pt" });
|
||||
expect(font.size).toEqual(123);
|
||||
expect(font.weight).toEqual("bold");
|
||||
expect(font.posture).toEqual("italic");
|
||||
expect(font.fill.color.value).toEqual({ r: 1, g: 2, b: 3 });
|
||||
|
@ -297,7 +297,7 @@ describe("XFAParser", function () {
|
|||
font = root.template.subform.field[1].font;
|
||||
expect(font.typeface).toEqual("Foo");
|
||||
expect(font.overline).toEqual(0);
|
||||
expect(font.size).toEqual({ value: 456, unit: "pt" });
|
||||
expect(font.size).toEqual(456);
|
||||
expect(font.weight).toEqual("bold");
|
||||
expect(font.posture).toEqual("normal");
|
||||
expect(font.fill.color.value).toEqual({ r: 4, g: 5, b: 6 });
|
||||
|
@ -387,7 +387,7 @@ describe("XFAParser", function () {
|
|||
|
||||
expect(font.typeface).toEqual("helvetica");
|
||||
expect(font.overline).toEqual(0);
|
||||
expect(font.size).toEqual({ value: 31, unit: "pt" });
|
||||
expect(font.size).toEqual(31);
|
||||
expect(font.weight).toEqual("normal");
|
||||
expect(font.posture).toEqual("italic");
|
||||
expect(font.fill.color.value).toEqual({ r: 7, g: 8, b: 9 });
|
||||
|
@ -1005,10 +1005,7 @@ describe("XFAParser", function () {
|
|||
).toBe("myfont");
|
||||
expect(
|
||||
searchNode(form, form, "Id.LastName.font.size")[0][$text]()
|
||||
).toEqual({
|
||||
value: 123.4,
|
||||
unit: "pt",
|
||||
});
|
||||
).toEqual(123.4);
|
||||
expect(
|
||||
searchNode(form, form, "Id.LastName.assist.toolTip")[0][$dump]()
|
||||
.$content
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue