tclhpdfPage(2) 0.1.0 "tclhpdf Page Handler"
tclhpdfPage - tclhpdf Page Handler
TABLE OF CONTENTS
SYNOPSIS
DESCRIPTION
COMMANDS
REFERENCE
SEE ALSO
KEYWORDS
COPYRIGHT
The Page handler command have subcommands to control page preferences and draw elements.
- hpdfPageObj setWidth width
-
setWidth changes the width of a page.
The valid value is between 3 and 14400.
- hpdfPageObj setHeight height
-
setHeight changes the height of a page.
The valid value is between 3 and 14400.
- hpdfPageObj setSize size direction
-
setSize changes the size and direction of a page to a predefined size.
size specify a predefined page-size value. The following values are available.
- letter
- 8.5 x 11 (inches) 612 x 792
- legal
- 8.5 x 14 (inches) 612 x 1008
- a3
- 297 × 420 (mm) 841.89 x 1199.551
- a4
- 210 × 297 (mm) 595.276 x 841.89
- a5
- 148 × 210 (mm) 419.528 x 595.276
- b4
- 250 × 353 (mm) 708.661 x 1000.63
- b5
- 176 × 250 (mm) 498.898 x 708.661
- executive
- 7.5 x 10.5 (inches) 522 x 756
- us4x6
- 4 x 6 (inches) 288 x 432
- us4x8
- 4 x 8 (inches)
- us5x7
- 5 x 7 (inches) 360 x 504
- comm10
- 4.125 x 9.5 (inches) 297x 684
direction specify the direction of the page.
- portrait
-
Set the longer value to horizontal.
- landscape
-
Set the longer value to vertical.
- hpdfPageObj setRotate angle
-
setRotate sets rotation angle of the page.
angle specify the rotation angle of the page.
It must be a multiple of 90 Degrees.
- hpdfPageObj createDestination
-
createDestination creates a new destination object for the page. and returns a handle of the new destination object.
- hpdfPageObj createTextAnnot rect text ?encoder?
-
createTextAnnot creates a new text annotation object for the page. And it returns a handle of the new annotation object.
rect is a rectangle where the annotation is displayed. It is a tcl list {left bottom right top}.
text is the text to be displayed.
encoder is an encoder handle which is used to encode the text. If it is empty string or omitted default value will be used.
If type of text values is bytearray, this function use the value as it is (bytearray). But if the type is not bytearray (string or any), the value is assumed as tcl native string(utf-8) and convert to external encoding(encoding system), then pass to hpdf functions. This may be a little confusion, but it is convenient to set another encoding strings.
- hpdfPageObj createLinkAnnot rect hpdfDestinationObj
-
createLinkAnnot creates a new link annotation object for the page. it returns a handle of the new annotation object.
rect is a rectangle of clickable area. It is a tcl list {left bottom right top}.
dst is a handle of destination object to jump to.
- hpdfPageObj createURILinkAnnot rect uri
-
createURILinkAnnot creates a new web link annotation object for the page. It returns a handle of the new annotation object.
rect is a rectangle of clickable area.
It is a tcl list {left bottom right top}.
uri is URL of destination to jump to.
- hpdfPageObj textWidth text
-
textWidth gets the width of the text in current fontsize, character spacing and word spacing. It returns the width of the text in current fontsize, character spacing and word spacing.
text is the text to get width. If type of text values is bytearray, this function use the value as it is (bytearray). But if the type is not bytearray (string or any), the value is assumed as tcl native string(utf-8) and convert to external encoding(encoding system), then pass to hpdf functions. This may be a little confusion, but it is convenient to set another encoding strings.
- hpdfPageObj measureText text width wordwrap ?realwidthName?
-
measureText calculates the length which can be included within the specified width. It returns the length which can be included within the specified width in current fontsize, character spacing and word spacing.
text is the text to get width.
width is the width of the area to put the text.
wordwrap. When there are three words of "ABCDE", "FGH", and "IJKL", and the substring until "J" can be included within the width, if wordwrap parameter is false it returns 12, and if wordwrap parameter is false wordwrap parameter is false it returns 10 (the end of the previous word).
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
A B C D E F G H I J K L
<-------------------------------->
|
realwidthName is a variable name. If this parameter is specified , the real widths of the text is set to the variable.
If type of text values is bytearray, this function use the value as it is (bytearray). But if the type is not bytearray (string or any), the value is assumed as tcl native string(utf-8) and convert to external encoding(encoding system), then pass to hpdf functions. This may be a little confusion, but it is convenient to set another encoding strings.
- hpdfPageObj getWidth
-
getWidth gets the height of a page.
- hpdfPageObj getHeight
-
getHeight gets the height of a page.
- hpdfPageObj getGMode
-
getGMode gets the current graphics mode.
- hpdfPageObj getCurrentPos
-
getCurrentPos gets the current position for path painting.
An application can invoke getCurrentPos only when graphics mode is path_object. It returns a point list {x y}.
- hpdfPageObj getCurrentPos2 posName
-
This is same as getCurrentPos, but the points is set to posName
- hpdfPageObj getCurrentTextPos
-
getCurrentTextPos gets the current position for text showing.
An application can invoke getCurrentTextPos only when graphics mode is text_object. It returns a point list {x y}.
- hpdfPageObj getCurrentTextPos2 posName
-
This is same as getCurrentTextPos, but the points is set to posName.
- hpdfPageObj getCurrentFont
-
getCurrentFont gets the handle of the page's current font.
- hpdfPageObj getCurrentFontSize
-
getCurrentFontSize gets the size of the page's current font.
- hpdfPageObj getTransMatrix
-
getTransMatrix gets the current transformation matrix of the page. the returned matrix is a list {a b c d x y}.
- hpdfPageObj getLineWidth
-
getLineWidth gets the current line width of the page.
It returns the current line width for path painting of the page.
- hpdfPageObj getLineCap
-
getLineCap gets the current line cap style of the page.
It returns the current line cap style of the page.
- hpdfPageObj getLineJoin
-
getLineJoin gets the current line join style of the page.
It returns the current line join style of the page.
- hpdfPageObj getMiterLimit
-
getMiterLimit gets the current value of the page's miter limit.
It returns the current value of the page's miter limit.
- hpdfPageObj getDash
-
getDash gets the current pattern of the page.
It returns a list of the current pattern of the page.
the list is a {pattern phase}. ex {{3 5 3} 2}.
- hpdfPageObj getFlat
-
getMiterLimit gets the current value of the page's flatness.
- hpdfPageObj getCharSpace
-
getCharSpace gets the current value of the page's character spacing.
- hpdfPageObj getWordSpace
-
getWordSpace returns the current value of the page's word spacing.
- hpdfPageObj getHorizontalScalling
-
getHorizontalScalling returns the current value of the page's horizontal scalling for text showing.
- hpdfPageObj getTextLeading
-
getTextLeading returns the current value of the page's line spacing.
- hpdfPageObj getTextRenderingMode
-
getTextRenderingMode returns the current value of the page's text rendering mode.
- hpdfPageObj getTextRise
-
getTextRise returns the current value of the page's text rising.
- hpdfPageObj getRGBFill
-
getRGBFill returns the current value of the page's filling color. getRGBFill is valid only when the page's filling color space is rgb.
The returned value is a list {r g b}.
- hpdfPageObj getRGBStroke
-
getRGBStroke returns the current value of the page's stroking color. getRGBStroke is valid only when the page's stroking color space is rgb.
The returned value is a list {r g b}.
- hpdfPageObj getCMYKFill
-
getCMYKFill returns the current value of the page's filling color. getCMYKFill is valid only when the page's filling color space is cmyk.
The returned value is a list {c m y k}.
- hpdfPageObj getCMYKStroke
-
getCMYKStroke returns the current value of the page's stroking color. getCMYKStroke is valid only when the page's stroking color space is cmyk.
The returned value is a list {c m y k}.
- hpdfPageObj getGrayFill
-
getGrayFill returns the current value of the page's filling color. getGrayFill is valid only when the page's stroking color space is gray.
- hpdfPageObj getGrayStroke
-
getGrayStroke returns the current value of the page's stroking color. getGrayStroke is valid only when the page's stroking color space is gray.
- hpdfPageObj getStrokingColorSpace
-
getStrokingColorSpace returns the current value of the page's stroking color space.
- hpdfPageObj getFillingColorSpace
-
getFillingColorSpace returns the current value of the page's stroking color space.
- hpdfPageObj getTextMatrix
-
getTextMatrix gets the current text transformation matrix of the page. The returned matrix is a list {a b c d x y}.
- hpdfPageObj getGStateDepth
-
getGStateDepth returns the number of the page's graphics state stack.
- hpdfPageObj setLineWidth width
-
setLineWidth sets the width of the line used to stroke a path. An application can invoke setLineWidth when the graphics mode of the page is in page_description or text_object.
- hpdfPageObj setLineCap linecap
-
setLineCap sets the shape to be used at the ends of line.
An application can invoke setLineCap when the graphics mode of the page is in page_description or text_object.
linecap is the style of line-cap.
- butt_end
-
The line is squared off at the endpoint of the path.
- round_end
-
The end of a line becomes a semicircle whose center is the end point of the path.
- projecting_scuare_end
-
The line continues to the point that exceeds half of the stroke width the end point.
- hpdfPageObj setLineJoin linejoin
-
setLineJoin sets the line join style in the page.
An application can invoke setLineJoin when the graphics mode of the page is in page_description or text_object.
linejoin is the style of line-jpin.
- miter_join
-
- round_join
-
- bevel_join
-
- hpdfPageObj setMiterLimit milterlimit
-
setMiterLimit sets the miter limit in the page.
- hpdfPageObj setDash dashlist phase
-
setDash sets the line dash pattern in the page.
An application can invoke setDash when the graphics mode of the page is in page_description or text_object.
dashlist is a list of dashes and gaps length.
phase is the phase in which the pattern begins.
- hpdfPageObj setFlat flatness
-
setFlat sets the flatness in the page.
- hpdfPageObj setExtGState hpdfExtGStateObj
-
setExtGState applys the graphics state to the page.
An application can invoke gSave when the graphics mode of the page is in page_description.
- hpdfPageObj gSave
-
gSave saves the page's current graphics parameter to the stack. An application can invoke gSave up to 28 and can restore the saved parameter by invoking gRestore.
The parameters that are saved by gSave is as follows.
|
Transformation Matrix
Line Width
Line Cap Style
Line Join Style
Miter Limit
Dash Mode
Flatness
Character Spacing
Word Spacing
Horizontal Scalling
Text Leading
Rendering Mode
Text Rise
Filling Color
Stroking Color
Font
Font Size
|
An application can invoke gSave when the graphics mode of the page is in page_description.
- hpdfPageObj gRestore
-
gRestore restore the graphics state which is saved by gSave.
An application can invoke gSave when the graphics mode of the page is in page_description.
- hpdfPageObj concat a b c d x y
-
concat concatenates the page's current transformation matrix and specified matrix.
For example, if you want to rotate the coordinate system of the page by 45 degrees, use concat as follows.
|
set rad1 [expr {45 / 180.0 * 3.141592}]
$page concat [expr {cos($rad1)}] [expr {sin($rad1)}] [expr {-sin($rad1)}] [expr {cos($rad1)}] 220 350
|
Additionally to change the coordinate system of the page to 300dpi, use concat as follows.
|
$page concat [expr {72.0 / 300.0}] 0 0 [expr {72.0 / 300.0}] 0 0
|
Invoke gSave before concat. Then the change by concat can be restored by invoking gRestore.
|
# save the current graphics states
$page gSave
# concatenate the transformation matrix
$page concat [expr {72.0 / 300.0}] 0 0 [expr {72.0 / 300.0}] 0 0
# show text on the translated coordinates
$page beginText
$page moveTextPos 50 100
$page showText "Text on the translated coordinates"
$page endText
# restore the graphics states
$page gRestore
|
An application can invoke gSave when the graphics mode of the page is in page_description.
a b c d x y are the transformation matrix to concatenate.
- hpdfPageObj moveTo x y
-
moveTo starts a new subpath and move the current point for drawing path, moveTo sets the start point for the path to the point (x, y) and changes the graphics mode to path_object.
An application can invoke moveTo when the graphics mode of the page is in page_description or path_object.
- hpdfPageObj lineTo x y
-
lineTo appends a path from the current point to the specified point.
An application can invoke lineTo when the graphics mode of the page is in path_object.
- hpdfPageObj curveTo x1 y1 x2 y2 x3 y3
-
curveTo appends a Bezier curve to the current path using two spesified points.
The point (x1, y1) and the point (x2, y2) are used as the control points for a Bezier curve and current point is moved to the point (x3, y3).
An application can invoke curveTo when the graphics mode of the page is in path_object.
- hpdfPageObj curveTo2 x2 y2 x3 y3
-
curveTo2 appends a Bezier curve to the current path using two spesified points.
The current point and the point (x2, y2) are used as the control points for a Bezier curve and current point is moved to the point (x3, y3).
An application can invoke curveTo3 when the graphics mode of the page is in path_object.
- hpdfPageObj curveTo3 x1 y1 x3 y3
-
curveTo3 appends a Bezier curve to the current path using two spesified points.
The point (x1, y1) and the point (x3, y3) are used as the control points for a Bezier curve and current point is moved to the point (x3, y3).
An application can invoke curveTo2 when the graphics mode of the page is in path_object.
- hpdfPageObj closePath
-
closePath appends a strait line from the current point to the start point of sub path.
The current point is moved to the start point of sub path.
An application can invoke curveTo2 when the graphics mode of the page is in path_object.
- hpdfPageObj rectangle x y width height
-
rectangle appends a rectangle to the current path.
An application can invoke rectangle when the graphics mode of the page is in page_description or path_object.
x y are the lower-left point of the rectangle.
width is width of the rectangle.
height is height of the rectangle.
- hpdfPageObj stroke
-
stroke paints the current path.
An application can invoke stroke when the graphics mode of the page is in path_object. And it changes the graphics mode to page_description.
- hpdfPageObj closePathStroke
-
closePathStroke closes the current path, then it paints the path.
An application can invoke closePathStroke when the graphics mode of the page is in path_object. And it changes the graphics mode to page_description.
- hpdfPageObj fill
-
fill fills the current path using the nonzero winding number rule.
An application can invoke fill when the graphics mode of the page is in path_object. And it changes the graphics mode to page_description.
- hpdfPageObj eofill
-
eofill fills the current path using the even-odd rule.
An application can invoke eofill when the graphics mode of the page is in path_object. And it changes the graphics mode to page_description.
- hpdfPageObj fillStroke
-
fillStroke fills the current path using the nonzero winding number rule, then it paints the path.
An application can invoke fillStroke when the graphics mode of the page is in path_object. And it changes the graphics mode to page_description.
- hpdfPageObj eofillStroke
-
eofillStroke fills the current path using the even-odd rule, then it paints the path.
An application can invoke eofillStroke when the graphics mode of the page is in path_object. And it changes the graphics mode to page_description.
- hpdfPageObj closePathFillStroke
-
closePathFillStroke closes the current path, fills the current path using the nonzero winding number rule, then it paints the path.
An application can invoke closePathFillStroke when the graphics mode of the page is in path_object. And it changes the graphics mode to page_description.
- hpdfPageObj closePathEofillStroke
-
closePathEofillStroke closes the current path, fills the current path using the even-odd rule, then it paints the path.
An application can invoke closePathEofillStroke when the graphics mode of the page is in path_object. And it changes the graphics mode to page_description.
- hpdfPageObj endPath
-
endPath ends the path object without filling and painting operation.
An application can invoke endPath when the graphics mode of the page is in path_object. And it changes the graphics mode to page_description.
- hpdfPageObj clip
-
TODO
- hpdfPageObj eoclip
-
TODO
- hpdfPageObj beginText
-
beginText begins a text object and sets the current text position to the point (0, 0).
An application can invoke beginText when the graphics mode of the page is in page_description. And it changes the graphics mode to text_object.
- hpdfPageObj endText
-
endText ends a text object.
An application can invoke endText when the graphics mode of the page is in text_object. And it changes the graphics mode to page_description.
- hpdfPageObj setCharSpace value
-
setCharSpace sets the character spacing for text showing.
The initial value of character spacing is 0.
An application can invoke setCharSpace when the graphics mode of the page is in page_description or text_object.
- hpdfPageObj setWordSpace value
-
setWordSpace sets the word spacing for text showing.
The initial value of word spacing is 0.
An application can invoke setWordSpace when the graphics mode of the page is in page_description or text_object.
- hpdfPageObj setHorizontalScalling value
-
setHorizontalScalling sets the horizontal scalling for text showing.
The initial value of horizontal scalling is 100.
An application can invoke setHorizontalScalling when the graphics mode of the page is in page_description or text_object.
- hpdfPageObj setTextLeading value
-
setTextLeading sets the text leading (line spacing) for text showing.
The initial value of leading is 0.
An application can invoke setTextLeading when the graphics mode of the page is in page_description or text_object.
- hpdfPageObj setFontAndSize hpdfFontObj size
-
setFontAndSize sets the type of font and size leading.
An application can invoke setFontAndSize when the graphics mode of the page is in page_description or text_object.
- hpdfPageObj setTextRenderingMode mode
-
setTextRenderingMode sets the text rendering mode.
The initial value of text rendering mode is fill.
An application can invoke setTextRenderingMode when the graphics mode of the page is in page_description or text_object.
mode is the text rendering mode (one of the following values).
- fill
-
- stroke
-
- fill_then_stroke
-
- invisible
-
- fill_clipping
-
- stroke_clipping
-
- fill_stroke_clipping
-
- clipping
-
- hpdfPageObj setTextRise value
-
TODO
- hpdfPageObj moveTextPos x y
-
moveTextPos moves the current text position to the start of the next line with using specified offset values. If the start position of the current line is (x1, y1), the start of the next line is (x1 + x, y1 + y).
An application can invoke moveTextPos when the graphics mode of the page is in text_object.
x y are offset of the start of the next line.
- hpdfPageObj moveTextPos2 x y
-
moveTextPos2 moves the current text position to the start of the next line with using specified offset values, and sets the text-leading to -y. If the start position of the current line is (x1, y1), the start of the next line is (x1 + x, y1 + y).
An application can invoke moveTextPos2 when the graphics mode of the page is in text_object.
x y are offset of the start of the next line.
- hpdfPageObj setTextMatrix a b c d x y
-
TODO
- hpdfPageObj moveToNextLine
-
moveTextPos2 moves the current text position to the start of the next line. If the start position of the current line is (x1, y1), the start of the next line is (x1, y1 - text leading).
An application can invoke moveTextPos2 when the graphics mode of the page is in text_object.
NOTE:
Since the default value of Text Leading is 0, an application have to invoke setTextLeading before moveTextPos2 to set text leading.
- hpdfPageObj showText text
-
showText prints the text at the current position on the page.
An application can invoke showText when the graphics mode of the page is in page_description or text_object.
text is the text to print.
If type of text values is bytearray, this function use the value as it is (bytearray). But if the type is not bytearray (string or any), the value is assumed as tcl native string(utf-8) and convert to external encoding(encoding system), then pass to hpdf functions. This may be a little confusion, but it is convenient to set another encoding strings.
- hpdfPageObj showTextNextLine text
-
showTextNextLine moves the current text position to the start of the next line, then prints the text at the current position on the page.
An application can invoke showTextNextLine when the graphics mode of the page is in page_description or text_object.
text is the text to print.
If type of text values is bytearray, this function use the value as it is (bytearray). But if the type is not bytearray (string or any), the value is assumed as tcl native string(utf-8) and convert to external encoding(encoding system), then pass to hpdf functions. This may be a little confusion, but it is convenient to set another encoding strings.
- hpdfPageObj showTextNextLineEx wordspace charspace text
-
showTextNextLineEx moves the current text position to the start of the next line, then sets the word spacing, character spacing and prints the text at the current position on the page.
An application can invoke showTextNextLine when the graphics mode of the page is in page_description or text_object.
wordspace is the word spacing.
charspace is the character spacing.
text is the text to print.
If type of text values is bytearray, this function use the value as it is (bytearray). But if the type is not bytearray (string or any), the value is assumed as tcl native string(utf-8) and convert to external encoding(encoding system), then pass to hpdf functions. This may be a little confusion, but it is convenient to set another encoding strings.
- hpdfPageObj setGrayFill gray
-
setGrayFill sets the filling color.
An application can invoke setGrayFill when the graphics mode of the page is in page_description or text_object.
- hpdfPageObj setGrayStroke gray
-
setGrayStroke sets the stroking color.
An application can invoke setGrayStroke when the graphics mode of the page is in page_description or text_object.
- hpdfPageObj setRGBFill r g b
-
setRGBFill sets the filling color.
An application can invoke setRGBFill when the graphics mode of the page is in page_description or text_object.
- hpdfPageObj setRGBStroke r g b
-
setRGBStroke sets the stroking color.
An application can invoke setRGBStroke when the graphics mode of the page is in page_description or text_object.
- hpdfPageObj setCMYKFill c m y k
-
setCMYKFill sets the filling color.
An application can invoke setCMYKFill when the graphics mode of the page is in page_description or text_object.
- hpdfPageObj setCMYKStroke c m y k
-
setCMYKStroke sets the stroking color.
An application can invoke setCMYKStroke when the graphics mode of the page is in page_description or text_object.
- hpdfPageObj executeXObject xobject
-
TODO
- hpdfPageObj drawImage image x y width height
-
drawImage shows an image in one operation.
An application can invoke drawImage when the graphics mode of the page is in page_description.
x y are the lower-left point of the region where image is displayed.
width is the width of the region where image is displayed.
height is the height of the region where image is displayed.
- hpdfPageObj circle x y ray
-
circle appends a circle to the current path.
An application can invoke circle when the graphics mode of the page is in page_description or path_object.
x y are the lower-left point of the region where image is displayed.
ray is the ray of the circle.
- hpdfPageObj ellipse x y xray yray
-
ellipse appends a ellipse to the current path.
An application can invoke ellipse when the graphics mode of the page is in page_description or path_object.
x y are the lower-left point of the region where image is displayed.
xray yray are the ray of the circle.
- hpdfPageObj arc x y ray ang1 ang2
-
arc appends a circle to the current path.
An application can invoke arc when the graphics mode of the page is in page_description or path_object.
x y are the center point of the circle.
ray is the ray of the circle.
ang1 is the angle of the begining of the arc.
ang2 is the angle of the end of the arc. It must be greater than ang1.
- hpdfPageObj textOut xpos ypos text
-
textOut prints the text on the specified position.
An application can invoke textOut when the graphics mode of the page is in text_object.
xpos ypos are the point position where the text is displayed.
text is the text to show.
If type of text values is bytearray, this function use the value as it is (bytearray). But if the type is not bytearray (string or any), the value is assumed as tcl native string(utf-8) and convert to external encoding(encoding system), then pass to hpdf functions. This may be a little confusion, but it is convenient to set another encoding strings.
- hpdfPageObj textRect left top right bottom text align ?len?
-
textRect print the text inside the specified region. The characters which is not ((The original manual lacks following description.))
An application can invoke textRect when the graphics mode of the page is in text_object.
The handle of a page object.
left top right bottom
Coordinates of corners of the region to output text.
text is the text to show.
align is the alignment of the text.
- left
- The text is aligned to left.
- right
- The text is aligned to right.
- center
- The text is aligned to center.
- justify
- Add spaces between the words to justify both left and right side.
len is a variable name. The number of characters which was printed in the area is set to the variable.
If type of text values is bytearray, this function use the value as it is (bytearray). But if the type is not bytearray (string or any), the value is assumed as tcl native string(utf-8) and convert to external encoding(encoding system), then pass to hpdf functions. This may be a little confusion, but it is convenient to set another encoding strings.
- hpdfPageObj setSlideShow type disptime transtime
-
setSlideShow configures the setting for slide transition of the page.
type is the transition style. The following values are available.
- wipe_right
-
- wipe_up
-
- wipe_left
-
- wipe_down
-
- barn_doors_horizontal_out
-
- barn_doors_horizontal_in
-
- barn_doors_vertical_out
-
- barn_doors_vertical_in
-
- box_out
-
- box_in
-
- blinds_horizontal
-
- blinds_vertical
-
- dissolve
-
- glitter_right
-
- glitter_down
-
- glitter_top_left_to_bottom_right
-
- replace
-
disptime is the display duration of the page. (in seconds)
transtime is the duration of the transition effect. Default value is 1(second).
tclhpdf, tclhpdfAnnotation, tclhpdfDescription, tclhpdfDoc, tclhpdfEncoder, tclhpdfExtGState, tclhpdfFont, tclhpdfImage, tclhpdfOutline, tclhpdfPage
pdf
Copyright © 1999-2006 Takeshi Kanno <takeshi_kanno@est.hi-ho.ne.jp>
Copyright © 2007 OHTSUKA, yoshio <ohtsuka.yoshio@gmail.com>