c# convert pdf to image free library : Saving pdf forms in acrobat reader software application dll winforms html wpf web forms print41-part2093

Thecolgroupkeyword, which maps to thecolumn groupstate
Thecolumn groupstate means the header cell applies to all the remaining cells in the column group. Athp410
element'sscopep410
attribute
must not be in thecolumn groupp411
state if the element is not anchored in acolumn groupp413
.
Theautostate
Theautostate makes the header cell apply to a set of cells selected based on context.
Thescopep410
attribute'smissing value defaultp65
is theautostate.
Thethp410
element may have anabbrcontent attribute specified. Its value must be an alternative label for the header cell, to be used when
referencing the cell in other contexts (e.g. when describing the header cells that apply to a data cell). It is typically an abbreviated form of the full
header cell, but can also be an expansion, or merely a different phrasing.
Thethp410
element and itscolspanp412
,rowspanp412
,headersp412
, andscopep410
attributes take part in thetable modelp413
.
The following example shows how thescopep410
attribute'srowgroupp410
value affects which data cells a header cell applies to.
Here is a markup fragment showing a table:
<table>
<thead>
<tr> <th> ID <th> Measurement <th> Average <th> Maximum
<tbody>
<tr> <td> <th scope=rowgroup> Cats <td> <td>
<tr> <td> 93 <th scope=row> Legs <td> 3.5 <td> 4
<tr> <td> 10 <th scope=row> Tails <td> 1 <td> 1
<tbody>
<tr> <td> <th scope=rowgroup> English speakers <td> <td>
<tr> <td> 32 <th scope=row> Legs <td> 2.67 <td> 4
<tr> <td> 35 <th scope=row> Tails <td> 0.33 <td> 1
</table>
This would result in the following table:
ID
Measurement
Average Maximum
Cats
93 Legs
3.5
4
10 Tails
1
1
English speakers
32 Legs
2.67
4
35 Tails
0.33
1
The headers in the first row all apply directly down to the rows in their column.
The headers with the explicitscopep410
attributes apply to all the cells in their row group other than the cells in the first column.
The remaining headers apply just to the cells to the right of them.
Example
411
Saving pdf forms in acrobat reader - extract form data from PDF in C#.net, ASP.NET, MVC, Ajax, WPF
Help to Read and Extract Field Data from PDF with a Convenient C# Solution
extract data from pdf to excel; can reader edit pdf forms
Saving pdf forms in acrobat reader - VB.NET PDF Form Data Read library: extract form data from PDF in vb.net, ASP.NET, MVC, Ajax, WPF
Convenient VB.NET Solution to Read and Extract Field Data from PDF
extract table data from pdf; extracting data from pdf forms to excel
Thetdp409
andthp410
elements may have acolspancontent attribute specified, whose value must be avalid non-negative integerp66
greater than
zero.
Thetdp409
andthp410
elements may also have arowspancontent attribute specified, whose value must be avalid non-negative integerp66
. For
this attribute, the value zero means that the cell is to span all the remaining rows in the row group.
These attributes give the number of columns and rows respectively that the cell is to span. These attributes must not be used to overlap cells, as
described in the description of thetable modelp413
.
Thetdp409
andthp410
element may have aheaderscontent attribute specified. Theheadersp412
attribute, if specified, must contain a string
consisting of anunordered set of unique space-separated tokensp84
that arecase-sensitivep63
, each of which must have the value of anID
of a
thp410
element taking part in the sametablep413
as thetdp409
orthp410
element (as defined by thetable modelp413
).
Athp410
element withID
idis said to bedirectly targetedby alltdp409
andthp410
elements in the sametablep413
that haveheadersp412
attributes
whose values include as one of their tokens theID
id. Athp410
elementAis said to betargetedby athp410
ortdp409
elementBif eitherAisdirectly
targetedbyBor if there exists an elementCthat is itselftargetedby the elementBandAisdirectly targetedbyC.
Athp410
element must not betargetedby itself.
Thecolspanp412
,rowspanp412
, andheadersp412
attributes take part in thetable modelp413
.
ThecolSpanIDL attribute mustreflectp89
thecolspanp412
content attribute. Its default value is 1.
TherowSpanIDL attribute mustreflectp89
therowspanp412
content attribute. Its default value is 1.
TheheadersIDL attribute mustreflectp89
the content attribute of the same name.
ThecellIndexIDL attribute must, if the element has a parenttrp407
element, return the index of the cell's element in the parent element's
cellsp408
collection. If there is no such parent element, then the attribute must return −1.
cell.cellIndexp412
Returns the position of the cell in the row'scellsp408
list. This does not necessarily correspond to thex-position of the cell in the table,
since earlier cells might cover multiple rows or columns.
Returns −1 if the element isn't in a row.
Note
4.9.11 Attributes common totdp409
andthp410
elements
412
VB.NET PDF: How to Create Watermark on PDF Document within
angle and orientation and even saving the created ASP.NET AJAX, Silverlight, Windows Forms as well powerful & profession imaging controls, PDF document, image
how to save pdf form data in reader; java read pdf form fields
PDF to WORD Converter | Convert PDF to Word, Convert Word to PDF
for the users; Offer the function of saving conversion preference. More PDF Related Converters. available for ASP.NET AJAX, Silverlight, Windows Forms as well as
extract data from pdf form fields; exporting data from excel to pdf form
ThescopeIDL attribute mustreflectp89
the content attribute of the same name,limited to only known valuesp90
.
TheabbrIDL attribute mustreflectp89
the content attribute of the same name.
The various table elements and their content attributes together define thetable model.
Atableconsists of cells aligned on a two-dimensional grid ofslotswith coordinates (x,y). The grid is finite, and is either empty or has one or more
slots. If the grid has one or more slots, then thexcoordinates are always in the range0≤x<x
width
, and theycoordinates are always in the range
0≤y<y
height
. If one or both ofx
width
andy
height
are zero, then the table is empty (has no slots). Tables correspond totablep394
elements.
Acellis a set of slots anchored at a slot (cell
x
,cell
y
), and with a particularwidthandheightsuch that the cell covers all the slots with coordinates (x,
y) wherecell
x
≤x<cell
x
+widthandcell
y
≤y<cell
y
+height. Cells can either bedata cellsorheader cells. Data cells correspond totdp409
elements,
and header cells correspond tothp410
elements. Cells of both types can have zero or more associated header cells.
It is possible, in certain error cases, for two cells to occupy the same slot.
Arowis a complete set of slots fromx=0tox=x
width
-1, for a particular value ofy. Rows usually correspond totrp407
elements, though arow
groupp413
can have some impliedrowsp413
at the end in some cases involvingcellsp413
spanning multiple rows.
Acolumnis a complete set of slots fromy=0toy=y
height
-1, for a particular value ofx. Columns can correspond tocolp403
elements. In the
absence ofcolp403
elements, columns are implied.
Arow groupis a set ofrowsp413
anchored at a slot (0,group
y
) with a particularheightsuch that the row group covers all the slots with coordinates
(x,y) where0≤x<x
width
andgroup
y
≤y<group
y
+height. Row groups correspond totbodyp404
,theadp405
, andtfootp406
elements. Not every
row is necessarily in a row group.
Acolumn groupis a set ofcolumnsp413
anchored at a slot (group
x
, 0) with a particularwidthsuch that the column group covers all the slots with
coordinates (x,y) wheregroup
x
≤x<group
x
+widthand0≤y<y
height
. Column groups correspond tocolgroupp403
elements. Not every column is
necessarily in a column group.
Row groupsp413
cannot overlap each other. Similarly,column groupsp413
cannot overlap each other.
Acellp413
cannot cover slots that are from two or morerow groupsp413
. It is, however, possible for a cell to be in multiplecolumn groupsp413
. All the
slots that form part of one cell are part of zero or onerow groupsp413
and zero or morecolumn groupsp413
.
In addition tocellsp413
,columnsp413
,rowsp413
,row groupsp413
, andcolumn groupsp413
,tablesp413
can have acaptionp402
element associated with
them. This gives the table a heading, or legend.
Atable model erroris an error with the data represented bytablep394
elements and their descendants. Documents must not have table model
errors.
4.9.12.1 Forming a table
To determine which elements correspond to which slots in atablep413
associated with atablep394
element, to determine the dimensions of the
table (x
width
andy
height
), and to determine if there are anytable model errorsp413
, user agents must use the following algorithm:
1. Letx
width
be zero.
2. Lety
height
be zero.
3. Letpendingtfootp406
elementsbe a list oftfootp406
elements, initially empty.
4. Letthe tablebe thetablep413
represented by thetablep394
element. Thex
width
andy
height
variables givethe table's dimensions.The
tableis initially empty.
5. If thetablep394
element has no children elements, then returnthe table(which will be empty), and abort these steps.
4.9.12Processing model
413
6. Associate the firstcaptionp402
element child of thetablep394
element withthe table. If there are no such children, then it has no
associatedcaptionp402
element.
7. Let thecurrent elementbe the first element child of thetablep394
element.
If a step in this algorithm ever requires thecurrent elementto beadvanced to the next child of thetablewhen there is no such next
child, then the user agent must jump to the step labeledend, near the end of this algorithm.
8. While thecurrent elementis not one of the following elements,advancep414
thecurrent elementto the next child of thetablep394
:
◦ colgroupp403
◦ theadp405
◦ tbodyp404
◦ tfootp406
◦ trp407
9. If thecurrent elementis acolgroupp403
, follow these substeps:
1. Column groups: Process thecurrent elementaccording to the appropriate case below:
If thecurrent elementhas anycolp403
element children
Follow these steps:
1. Letx
start
have the value ofx
width
.
2. Let thecurrent columnbe the firstcolp403
element child of thecolgroupp403
element.
3. Columns: If thecurrent columncolp403
element has aspanp404
attribute, then parse its value using
therules for parsing non-negative integersp66
.
If the result of parsing the value is not an error or zero, then letspanbe that value.
Otherwise, if thecolp403
element has nospanp404
attribute, or if trying to parse the attribute's value
resulted in an error or zero, then letspanbe 1.
4. Increasex
width
byspan.
5. Let the lastspancolumnsp413
inthe tablecorrespond to thecurrent columncolp403
element.
6. Ifcurrent columnis not the lastcolp403
element child of thecolgroupp403
element, then let the
current columnbe the nextcolp403
element child of thecolgroupp403
element, and return to the step
labeledcolumns.
7. Let all the lastcolumnsp413
inthe tablefromx=x
start
tox=x
width
-1form a newcolumn groupp413
,
anchored at the slot (x
start
, 0), with widthx
width
-x
start
, corresponding to thecolgroupp403
element.
If thecurrent elementhas nocolp403
element children
1. If thecolgroupp403
element has aspanp403
attribute, then parse its value using therules for parsing
non-negative integersp66
.
If the result of parsing the value is not an error or zero, then letspanbe that value.
Otherwise, if thecolgroupp403
element has nospanp403
attribute, or if trying to parse the attribute's
value resulted in an error or zero, then letspanbe 1.
2. Increasex
width
byspan.
3. Let the lastspancolumnsp413
inthe tableform a newcolumn groupp413
, anchored at the slot
(x
width
-span, 0), with widthspan, corresponding to thecolgroupp403
element.
2. Advancep414
thecurrent elementto the next child of thetablep394
.
3. While thecurrent elementis not one of the following elements,advancep414
thecurrent elementto the next child of the
tablep394
:
▪ colgroupp403
▪ theadp405
414
▪ tbodyp404
▪ tfootp406
▪ trp407
4. If thecurrent elementis acolgroupp403
element, jump to the step labeledcolumn groupsabove.
10. Lety
current
be zero.
11. Let thelist of downward-growing cellsbe an empty list.
12. Rows: While thecurrent elementis not one of the following elements,advancep414
thecurrent elementto the next child of thetablep394
:
◦ theadp405
◦ tbodyp404
◦ tfootp406
◦ trp407
13. If thecurrent elementis atrp407
, then run thealgorithm for processing rowsp415
,advancep414
thecurrent elementto the next child of the
tablep394
, and return to the step labeledrows.
14. Run thealgorithm for ending a row groupp415
.
15. If thecurrent elementis atfootp406
, then add that element to the list ofpendingtfootp406
elements,advancep414
thecurrent element
to the next child of thetablep394
, and return to the step labeledrows.
16. Thecurrent elementis either atheadp405
or atbodyp404
.
Run thealgorithm for processing row groupsp415
.
17. Advancep414
thecurrent elementto the next child of thetablep394
.
18. Return to the step labeledrows.
19. End: For eachtfootp406
element in the list ofpendingtfootp406
elements, intree order
, run thealgorithm for processing row
groupsp415
.
20. If there exists arowp413
orcolumnp413
inthe tablecontaining onlyslotsp413
that do not have acellp413
anchored to them, then this is a
table model errorp413
.
21. Returnthe table.
Thealgorithm for processing row groups, which is invoked by the set of steps above for processingtheadp405
,tbodyp404
, andtfootp406
elements, is:
1. Lety
start
have the value ofy
height
.
2. For eachtrp407
element that is a child of the element being processed, in tree order, run thealgorithm for processing rowsp415
.
3. Ify
height
>y
start
, then let all the lastrowsp413
inthe tablefromy=y
start
toy=y
height
-1form a newrow groupp413
, anchored at the slot with
coordinate (0,y
start
), with heighty
height
-y
start
, corresponding to the element being processed.
4. Run thealgorithm for ending a row groupp415
.
Thealgorithm for ending a row group, which is invoked by the set of steps above when starting and ending a block of rows, is:
1. Whiley
current
is less thany
height
, follow these steps:
1. Run thealgorithm for growing downward-growing cellsp416
.
2. Increasey
current
by 1.
2. Empty thelist of downward-growing cells.
Thealgorithm for processing rows, which is invoked by the set of steps above for processingtrp407
elements, is:
1. Ify
height
is equal toy
current
, then increasey
height
by 1. (y
current
is nevergreaterthany
height
.)
2. Letx
current
be 0.
415
3. Run thealgorithm for growing downward-growing cellsp416
.
4. If thetrp407
element being processed has notdp409
orthp410
element children, then increasey
current
by 1, abort this set of steps, and
return to the algorithm above.
5. Letcurrent cellbe the firsttdp409
orthp410
element child in thetrp407
element being processed.
6. Cells: Whilex
current
is less thanx
width
and the slot with coordinate (x
current
,y
current
) already has a cell assigned to it, increasex
current
by
1.
7. Ifx
current
is equal tox
width
, increasex
width
by 1. (x
current
is nevergreaterthanx
width
.)
8. If thecurrent cellhas acolspanp412
attribute, thenparse that attribute's valuep66
, and letcolspanbe the result.
If parsing that value failed, or returned zero, or if the attribute is absent, then letcolspanbe 1, instead.
9. If thecurrent cellhas arowspanp412
attribute, thenparse that attribute's valuep66
, and letrowspanbe the result.
If parsing that value failed or if the attribute is absent, then letrowspanbe 1, instead.
10. Ifrowspanis zero and thetablep394
element'snode document
is not set toquirks mode
, then letcell grows downwardbe true, and set
rowspanto 1. Otherwise, letcell grows downwardbe false.
11. Ifx
width
<x
current
+colspan, then letx
width
bex
current
+colspan.
12. Ify
height
<y
current
+rowspan, then lety
height
bey
current
+rowspan.
13. Let the slots with coordinates (x,y) such thatx
current
≤x<x
current
+colspanandy
current
≤y<y
current
+rowspanbe covered by a new
cellp413
c, anchored at (x
current
,y
current
), which has widthcolspanand heightrowspan, corresponding to thecurrent cellelement.
If thecurrent cellelement is athp410
element, let this new cellcbe a header cell; otherwise, let it be a data cell.
To establish which header cells apply to thecurrent cellelement, use thealgorithm for assigning header cellsp416
described in the next
section.
If any of the slots involved already had acellp413
covering them, then this is atable model errorp413
. Those slots now have two cells
overlapping.
14. Ifcell grows downwardis true, then add the tuple {c,x
current
,colspan} to thelist of downward-growing cells.
15. Increasex
current
bycolspan.
16. Ifcurrent cellis the lasttdp409
orthp410
element child in thetrp407
element being processed, then increasey
current
by 1, abort this set
of steps, and return to the algorithm above.
17. Letcurrent cellbe the nexttdp409
orthp410
element child in thetrp407
element being processed.
18. Return to the step labeledcells.
When the algorithms above require the user agent to run thealgorithm for growing downward-growing cells, the user agent must, for each {cell,
cell
x
,width} tuple in thelist of downward-growing cells, if any, extend thecellp413
cellso that it also covers the slots with coordinates (x,y
current
),
wherecell
x
≤x<cell
x
+width.
4.9.12.2 Forming relationships between data cells and header cells
Each cell can be assigned zero or more header cells. Thealgorithm for assigning header cellsto a cellprincipal cellis as follows.
1. Letheader listbe an empty list of cells.
2. Let (principal
x
,principal
y
) be the coordinate of the slot to which theprincipal cellis anchored.
3.
If theprincipal cellhas aheadersp412
attribute specified
1. Take the value of theprincipal cell'sheadersp412
attribute andsplit it on spacesp84
, lettingid listbe the list of
tokens obtained.
416
2. For each token in theid list, if the first element in theDocumentp103
with anID
equal to the token is a cell in the
sametablep413
, and that cell is not theprincipal cell, then add that cell toheader list.
Ifprincipal celldoes not have aheadersp412
attribute specified
1. Letprincipal
width
be the width of theprincipal cell.
2. Letprincipal
height
be the height of theprincipal cell.
3. For each value ofyfromprincipal
y
toprincipal
y
+principal
height
-1, run theinternal algorithm for scanning and
assigning header cellsp417
, with theprincipal cell, theheader list, the initial coordinate (principal
x
,y), and the
incrementsΔx=−1andΔy=0.
4. For each value ofxfromprincipal
x
toprincipal
x
+principal
width
-1, run theinternal algorithm for scanning and
assigning header cellsp417
, with theprincipal cell, theheader list, the initial coordinate (x,principal
y
), and the
incrementsΔx=0andΔy=−1.
5. If theprincipal cellis anchored in arow groupp413
, then add all header cells that arerow group headersp418
and are
anchored in the same row group with anx-coordinate less than or equal toprincipal
x
+principal
width
-1and ay-
coordinate less than or equal toprincipal
y
+principal
height
-1toheader list.
6. If theprincipal cellis anchored in acolumn groupp413
, then add all header cells that arecolumn group headersp418
and are anchored in the same column group with anx-coordinate less than or equal toprincipal
x
+principal
width
-1
and ay-coordinate less than or equal toprincipal
y
+principal
height
-1toheader list.
4. Remove all theempty cellsp418
from theheader list.
5. Remove any duplicates from theheader list.
6. Removeprincipal cellfrom theheader listif it is there.
7. Assign the headers in theheader listto theprincipal cell.
Theinternal algorithm for scanning and assigning header cells, given aprincipal cell, aheader list, an initial coordinate (initial
x
,initial
y
), and Δx
and Δyincrements, is as follows:
1. Letxequalinitial
x
.
2. Letyequalinitial
y
.
3. Letopaque headersbe an empty list of cells.
4.
Ifprincipal cellis a header cell
Letin header blockbe true, and letheaders from current header blockbe a list of cells containing just theprincipal cell.
Otherwise
Letin header blockbe false and letheaders from current header blockbe an empty list of cells.
5. Loop: Incrementxby Δx; incrementyby Δy.
6. If eitherxoryis less than 0, then abort this internal algorithm.
7. If there is no cell covering slot (x,y), or if there is more than one cell covering slot (x,y), return to the substep labeledloop.
8. Letcurrent cellbe the cell covering slot (x,y).
9.
Ifcurrent cellis a header cell
1. Setin header blockto true.
2. Addcurrent celltoheaders from current header block.
3. Letblockedbe false.
For each invocation of this algorithm, one of Δxand Δywill be −1, and the other will be 0.
Note
417
4.
If Δxis 0
If there are any cells in theopaque headerslist anchored with the samex-coordinate as thecurrent
cell, and with the same width ascurrent cell, then letblockedbe true.
If thecurrent cellis not acolumn headerp418
, then letblockedbe true.
↪ If Δyis 0
If there are any cells in theopaque headerslist anchored with the samey-coordinate as thecurrent
cell, and with the same height ascurrent cell, then letblockedbe true.
If thecurrent cellis not arow headerp418
, then letblockedbe true.
5. Ifblockedis false, then add thecurrent cellto theheaders list.
Ifcurrent cellis a data cell andin header blockis true
Setin header blockto false. Add all the cells inheaders from current header blockto theopaque headerslist, and empty the
headers from current header blocklist.
10. Return to the step labeledloop.
A header cell anchored at the slot with coordinate (x,y) with widthwidthand heightheightis said to be acolumn headerif any of the following
conditions are true:
• The cell'sscopep410
attribute is in thecolumnp410
state, or
• The cell'sscopep410
attribute is in theautop411
state, and there are no data cells in any of the cells covering slots withy-coordinatesy..
y+height-1.
A header cell anchored at the slot with coordinate (x,y) with widthwidthand heightheightis said to be arow headerif any of the following
conditions are true:
• The cell'sscopep410
attribute is in therowp410
state, or
• The cell'sscopep410
attribute is in theautop411
state, the cell is not acolumn headerp418
, and there are no data cells in any of the cells
covering slots withx-coordinatesx..x+width-1.
A header cell is said to be acolumn group headerif itsscopep410
attribute is in thecolumn groupp411
state.
A header cell is said to be arow group headerif itsscopep410
attribute is in therow groupp410
state.
A cell is said to be anempty cellif it contains no elements and its text content, if any, consists only ofWhite_Spacep64
characters.
This section is non-normative.
The following shows how might one mark up the bottom part of table 45 of theSmithsonian physical tables, Volume 71:
<table>
<caption>Specification values: <b>Steel</b>, <b>Castings</b>,
Ann. A.S.T.M. A27-16, Class B;* P max. 0.06; S max. 0.05.</caption>
<thead>
<tr>
<th rowspan=2>Grade.</th>
<th rowspan=2>Yield Point.</th>
<th colspan=2>Ultimate tensile strength</th>
<th rowspan=2>Per cent elong. 50.8mm or 2 in.</th>
<th rowspan=2>Per cent reduct. area.</th>
</tr>
<tr>
<th>kg/mm<sup>2</sup></th>
4.9.13 Examples
418
<th>lb/in<sup>2</sup></th>
</tr>
</thead>
<tbody>
<tr>
<td>Hard</td>
<td>0.45 ultimate</td>
<td>56.2</td>
<td>80,000</td>
<td>15</td>
<td>20</td>
</tr>
<tr>
<td>Medium</td>
<td>0.45 ultimate</td>
<td>49.2</td>
<td>70,000</td>
<td>18</td>
<td>25</td>
</tr>
<tr>
<td>Soft</td>
<td>0.45 ultimate</td>
<td>42.2</td>
<td>60,000</td>
<td>22</td>
<td>30</td>
</tr>
</tbody>
</table>
This table could look like this:
Specification values: : Steel,Castings, Ann. A.S.T.M. A27-16, Class B;* P max. 0.06; S max. 0.05.
Ultimate tensile strength
Grade.
Yield Point.
kg/mm
2
lb/in
2
Per cent
elong.
50.8 mm
or 2 in.
Per cent
reduct.
area.
Hard. . . . . 
0.45 ultimate
56.2
80,000
15
20
Medium . . . 
0.45 ultimate
49.2
70,000
18
25
Soft . . . . . 
0.45 ultimate
42.2
60,000
22
30
The following shows how one might mark up the gross margin table on page 46 of Apple, Inc's 10-K filing for fiscal year 2008:
<table>
<thead>
<tr>
<th>
<th>2008
<th>2007
<th>2006
<tbody>
<tr>
<th>Net sales
<td>$ 32,479
<td>$ 24,006
<td>$ 19,315
<tr>
<th>Cost of sales
<td>  21,334
<td>  15,852
419
<td>  13,717
<tbody>
<tr>
<th>Gross margin
<td>$ 11,145
<td>$  8,154
<td>$  5,598
<tfoot>
<tr>
<th>Gross margin percentage
<td>34.3%
<td>34.0%
<td>29.0%
</table>
This table could look like this:
2008
2007
2006
Net sales s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
$ 32,479
$ 24,006
$ 19,315
Cost of sales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
21,334
15,852
13,717
Gross margin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
$ 11,145
$ 8,154
$ 5,598
Gross margin percentage. . . . . . . . . . . . . . . . . . . . 
34.3%
34.0%
29.0%
The following shows how one might mark up the operating expenses table from lower on the same page of that document:
<table>
<colgroup> <col>
<colgroup> <col> <col> <col>
<thead>
<tr> <th> <th>2008 <th>2007 <th>2006
<tbody>
<tr> <th scope=rowgroup> Research and development
<td> $ 1,109 <td> $ 782 <td> $ 712
<tr> <th scope=row> Percentage of net sales
<td> 3.4% <td> 3.3% <td> 3.7%
<tbody>
<tr> <th scope=rowgroup> Selling, general, and administrative
<td> $ 3,761 <td> $ 2,963 <td> $ 2,433
<tr> <th scope=row> Percentage of net sales
<td> 11.6% <td> 12.3% <td> 12.6%
</table>
This table could look like this:
2008
2007
2006
Research and development t . . . . . . . . . . . . . . . . . . . . . 
$ 1,109
$ 782
$ 712
Percentage of net sales. . . . . . . . . . . . . . . . . . . . . . . 
3.4%
3.3%
3.7%
Selling, general, and administrative . . . . . . . . . . . . . . 
$ 3,761
$ 2,963
$ 2,433
Percentage of net sales. . . . . . . . . . . . . . . . . . . . . . . 
11.6%
12.3%
12.6%
4.10 Forms
This section is non-normative.
A form is a component of a Web page that has form controls, such as text fields, buttons, checkboxes, range controls, or colour pickers. A user can
interact with such a form, providing data that can then be sent to the server for further processing (e.g. returning the results of a search or
4.10.1 Introduction
Spec bugs:12271
Support:
Chrome(limited)
4+
Chrome for Android
(limited)
50+
UC Browser for Android d 9.9+
iOS Safari(limited) 4.0-4.1+
Firefox(limited)
4+
IE(limited)
10+
Opera Mini
None
Android Browser
(limited)
4.4+
Edge(limited)
12+
Safari(limited)
4+
Opera(limited)
15+
IE Mobile(limited)
10+
Source:caniuse.com
420
Documents you may be interested
Documents you may be interested