Images
95
Chapter16
Images
Images are added to the document using either the external-graphic or
instream-foreign-objectelements.The external-graphicelementisusedtoincludeafile
in JPEG, GIF, TIFF, BMP, SVG or PNG formats. Theinstream-foreign-object element is
used to include an image defined in Scalable Vector Graphics (SVG) format where the
image SVG is contained within theFO.
The properties used to format the external-graphic and instream-foreign-object
elements are the same.
The size of the image is distinct from the size of the area in which the image is placed.
The height and width attributes on the external-graphic or instream-foreign-object
element specify the size of the area into which the graphic will be placed. If these
properties are notspecified they defaultto an area large enough to contain the image.
Thecontent-width andcontent-height attributes control the size of the image. These
can be values such as "3cm" or percentages such as "120%". If content-width and
content-height not specified the image defaults to the size in pixels specified in the
image file itself. This means that if you do not specify any of the above attributes the
image will be as large as specified in the image file, and will be placed in an area the
same size.
The dots per inch (dpi) value of the image makes a difference to the image size. Two
images can have the same dimensions in pixels but appear different sizes in the PDF
file. This is because Ibex uses the dpi value to work out the size of the image. An image
which is 300 pixels wide and stored at 300 dpi will be 1 inch wide. The same image
stored at 100 dpi will be3 inches wide.
An image is an inline element, so for formatting purposes it can be placed in a sentence
surrounded by textand is treated as a single word.
16.1 Image basics
Theexternal-graphicelement is used to include an image which is in a file externalto the
FO file. The nameof the file to beincluded is specified using thesrc attribute.
Best pdf to tiff converter - Library application class:C# PDF Convert to Tiff SDK: Convert PDF to tiff images in C#.net, ASP.NET MVC, Ajax, WinForms, WPF
Online C# Tutorial for How to Convert PDF File to Tiff Image File
www.rasteredge.com
Best pdf to tiff converter - Library application class:VB.NET PDF Convert to Tiff SDK: Convert PDF to tiff images in vb.net, ASP.NET MVC, Ajax, WinForms, WPF
Free VB.NET Guide to Render and Convert PDF Document to TIFF
www.rasteredge.com
Ibex PDF Creator
Developers Guide
96
Images
Thesrc attributeis called a uri-specification and mustfollow the following rules:
Asequence of characters that is "url(", followed by optional white space,
followed by an optional single quote (') or double quote (") character,
followed by a URI reference as defined in [RFC2396], followed by an
optional single quote (') or double quote (") character, followed by optional
white space, followed by ")". The two quote characters must be the same
and must both be present or absent. If the URI reference contains a single
quote, the two quote characters mustbe present and be doublequotes.
This means the following areall valid values for thesrc attribute:
uri(ibex.jpg)
uri("ibex.jpg")
uri('ibex.jpg')
url(http://www.xmlpdf.com/images/download2.gif)
As thesrc attribute is a URL, an image which exists on a web server can be downloaded
automatically by Ibex as the PDF fileis created. This is common in realestateand catalog
applications and means you do not need to make a copy of an existing image just to get
it into the PDF file. The FO shown in Figure 16-1 will fetch the file download2.gif from
www.xmlpdf.com. The resulting imageis shown in Figure 16-2.
Figure 16-1:
FOto insertanimage
froma webserver
<block space-before="6pt">
<external-graphic border="1pt solid black"
src="url(http://www.xmlpdf.com/images/download2.gif)"
content-width="200%" content-height="200%"/>
</block>
Figure 16-2:
Image includedfrom
webserver
Theexternal-graphicelement can be used to include image files in PNG, JPEG, TIFF, BMP
and GIF formats. Itcan also be used to include SVG images held in external files.
Theinline-foreign-object is used for loading images from SVG content that is contained
inlinein the FO. See SVG Images on page 107.
16.2 Making an image fit a specified space
To make an image fit a specified size use the height and width attributes to specify the
size of the external-graphic element, and then use the content-width and content-height
to fittheimageto that size.
For example to fit an image into an area 2cm x 2cm, set the width and height attributes
to "2cm" and set the content-width and content-height attributes to "scale-to-fit", as
shown in Figure 16-3.
Library application class:Online Convert PDF file to Tiff. Best free online PDF Tif
Online PDF to Tiff Converter. Download Free Trial. Convert a PDF File to Tiff. Just upload your file by clicking on the blue button
www.rasteredge.com
Library application class:Online Convert PDF file to Word. Best free online PDF Conversion
Online Tiff to PDF Converter. Download Free Trial. Convert a Tiff/Tif File to PDF. Just upload your file by clicking on the blue button
www.rasteredge.com
Ibex PDF Creator
Developers Guide
Images
97
Figure 16-3:
Scalinganimage
<fo:external-graphic src="url(image.jpg)"
height="2in" width="2in"
content-height="scale-to-fit"
content-width="scale-to-fit"/>
If you only want the image reduced in size to fit the specified area and do not want it
increased in size if it is smaller, specify content-width="scale-down-to-fit". This also
applies to content-height.
If you only want the image enlarged to fit the specified area and do not want it reduced
in size if it is larger, specify content-width="scale-up-to-fit". This also applies to
content-height.
16.3 Clipping
If the image is larger than the area in which it is contained then the image may be
clipped. Figure16-4 shows an image at its natural size, based on the pixels and dpi values
read from the image file. If we specify the height of theexternal-graphic element as
2.5cm and specify overflow="hidden", the image will be clipped to this height, as shown
in Figure16-5.
Figure 16-4:
Imageatnatural size
Figure 16-5:
Clippedimage
Library application class:Online Convert Excel to PDF file. Best free online export xlsx
Online Excel to PDF Converter. Download Free Trial. Convert a Excel File to PDF. Drag and drop your excel file into the box or click
www.rasteredge.com
Library application class:Purchase RasterEdge Product License Online
Converter for .NET. Best file conversions for most common business files, including Adobe PDF, Microsoft Word, Excel, PowerPoint, HTML, Open Office ODF, Tiff,
www.rasteredge.com
Ibex PDF Creator
Developers Guide
98
Images
If we specify the height of theexternal-graphic
element as 2.5cm
and do not specify
overflow="hidden", the image will not be
clipped to this height, and will overwrite other
content as shown to the right. Because the
image is positioned on the same baseline as text,
the overflow will be at the top of the area
containing the image.
16.4 Image size and alignment
If an image is smaller than the containing area we can control where it appears in that
area using thedisplay-align andtext-align attributes. Thedisplay-align attribute controls
the vertical alignment,text-align controls the horizontal alignment. By default the image
appears in the top left corner of the inline area created by the external-graphic or
instream-foreign-objectelement,asshowninFigure16-6.
Figure16-6:
Defaultalignmentof
animage
If we specifytext-align="center" the image will move to the horizontal center of the
inlinearea,as shown in Figure 16-7.
Figure 16-7:
Usingtext-align=
'center'
Library application class:C# PDF Convert to Images SDK: Convert PDF to png, gif images in C#
Best PDF converter SDK for Visual Studio .NET for converting Support exporting PDF to multiple image forms, including Jpg, Png, Bmp, Gif, Tiff, Bitmap, .NET
www.rasteredge.com
Library application class:C# WPF PDF Viewer SDK to convert and export PDF document to other
Best PDF Viewer control as well as a powerful .NET Convert PDF to Microsoft Office Word (DOCX) document in Create multiple pages Tiff file from PDF document.
www.rasteredge.com
Ibex PDF Creator
Developers Guide
Images
99
If we specifytext-align="right" the image will move to the right of the inline area as
shown in Figure 16-8.
Figure 16-8:
Rightalignedimage
If we specifytext-align="center" anddisplay-align="center" the image will move to the
horizontaland verticalcenter of the inline area, as shown in Figure16-9.
Figure16-9:
Verticallyand
horizontallycentered
image
16.4.1 Leading
Looking at the image in Figure 16-10 you can see a gap between the top of theimageand
the border. This is the leading, which appears because the image is treated as a text
element and sits on the baseline. The amount of leading is derived from the font size, so
you can reduce it to zero by setting the font size to zero, by specifying font-size="0pt"
on thecontaining block element.This has been done in Figure16-11.
Figure 16-10:
Image withleading
above it
Library application class:Online Convert PDF to HTML5 files. Best free online PDF html
Online PDF to HTML5 Converter. Download Free Trial. Convert a PDF file to HTML. Just upload your file by clicking on the blue button
www.rasteredge.com
Library application class:Online Convert PDF to Jpeg images. Best free online PDF JPEG
Online PDF to JPEG Converter. Download Free Trial. Convert a PDF File to JPG. Drag and drop your PDF in the box above and we'll convert the files for you.
www.rasteredge.com
Ibex PDF Creator
Developers Guide
100
Images
Figure 16-11:
Usingwithleading
removed
16.5 Image resolution
Theresolution of an imagein dots per inch (dpi) can be setusing the dpi attributeon the
external-graphicelement.Settingthisattributeoverridesthedpivaluereadfromthe
image file.
Setting the dpi to a lower value than the one specified in the image will result in smaller
image of lower quality than the original. This is often done to reduce the size of the
image in the PDF file and can result in massive decreases in PDF file size. If you have an
image which is stored at 2400 dpi, and your end user will display it on a 96 dpi screen or
print it on 600 dpi printer, reducing the image dpi to 600 will not effect the appearance
of theimage.
Setting the dpi to a valuehigher than the value read from theimagefile has no effect.
If for example if we wanted to store an image in the PDF file at 1200 dpi, we would use
the FO shown in Figure16-12.
Figure 16-12:
FOto setimage dpi
<block space-before="6pt">
<external-graphic border="1pt solid black"
src="url(http://www.xmlpdf.com/images/download2.gif)"
content-width="200%" content-height="200%"
dpi="1200"/>
</block>
Thedpi attribute is an Ibex extension. Itis notpartof theXSL-FO standard.
16.6 Image anti-aliasing
Images are anti-aliased by default. This can be disabled using the ibex:anti-alias attribute
as shown in figureFigure16-13.
Figure 16-13:
FOtodisable
anti-aliasing
<block space-before="6pt">
<external-graphic
src="url(http://www.xmlpdf.com/images/download2.gif)"
ibex:anti-alias="false"
dpi="1200"/>
</block>
Figure 16-14 shows two images, the left right one has anti-aliasing disabled so the edges
of theimageappear more clearly.
Library application class:C# PDF Print Library: Print PDF documents in C#.net, ASP.NET
Word, VB.NET Excel, VB.NET PowerPoint, VB.NET Tiff, VB.NET NET PDF Document Printer A best PDF printer control for Visual Studio .NET and compatible with C#
www.rasteredge.com
Ibex PDF Creator
Developers Guide
Images
101
Figure 16-14:
Images withand
withoutanti-aliasing
Theibex:anti-alias attribute is an Ibex extension. Itis notpartof theXSL-FO standard.
16.7 Loading an image from memory
Ibex has the facility to load an image which is stored in memory. This permits an
application to dynamically generate an image or to load an image from a database for
inclusion in the PDF file.
The image must be passed to Ibex in a byte array or a Stream (from the System.IO
namespace).
The image must be given a unique identifier by which it can be retrieved during the PDF
creation process. This is done using the addNamedImage() method on the FODocument
object. This method takes two parameters; (1) a string which identifies the image and (2)
the stream or array which contains theimageitself.
For example if we had an image in a byte array called "image" and we wanted to give it
the identifier "1029" we would use the code shown in Figure16-15 to do this.
Figure 16-15:
C# codetoload an
image from memory
byte[] image = ... dynamically create
FODocument document = new FODocument();
document.addNamedImage( "1029", image );
This mustbedone before calling generate() to createthe PDF file.
Within the FO file the image is retrieved from memory using the syntax shown in
Figure 16-16
Figure16-16:
FOto loadanimage
from memory
<external-graphic src="url(data:application/ibex-image,1029)"/>
The value of the src attribute must be the string "url(data:application/ibex-image,"
followed by theunique identifier which was passed to addNamedImage().
This syntax for the url attribute conforms to RFC 2397 - The "data" URL scheme (which
can be found athttp://www.faqs.org/rfcs/rfc2397.html).
Ibex PDF Creator
Developers Guide
102
Images
16.8 Transparent Images
16.8.1 Transparent GIF images
GIF images which have transparent areas are supported. The FO in Figure 16-17 places
the same transparent GIF image on two different backgrounds. The output from this FO
is shown in Figure 16-18.
Figure16-17:
FOfortransparent
image
<block background-color="blue">
<external-graphic src="url(ibm-logo.gif)" content-height="2cm"/>
</block>
<block background-color="black">
<external-graphic src="url(ibm-logo.gif)" content-height="2cm"/>
</block>
Figure 16-18:
TransparentGIF
images
16.8.2 Transparent PNG images
PNG images which have transparent areas are supported. The FO in Figure 16-19 places a
transparent PNG image on a white backgrounds. The output from this FO is shown in
Figure 16-20.
Figure 16-19:
FOfortransparent
image
<block background-color="white">
<external-graphic src="url(RedbrushAlpha-0.25.png)" content-height="2cm"/>
</block>
Figure16-20:
TransparentPNG
image
16.8.3 Transparent images using masking
Ibex can use image masking to make some parts of an image appear transparent. This is
an extension to the XSL-FO standard.
Image masking works by defining colors from the image which should not be displayed.
The PDF viewer will compare each pixel in the image with the mask and not display
Ibex PDF Creator
Developers Guide
Images
103
pixels which match the mask, effectively making these pixels transparent and so leaving
visible the content behind the image.
The image mask is defined using the <ibex:mask> element, which must be contained
within anexternal-graphicelement, as shown in Figure16-21.
Figure 16-21:
FOtomaskanimage
<external-graphic src="url(ixsl.jpg)"
z-index='10'>
<ibex:mask
red-min="255" red-max="255"
green-min="255" green-max="255"
blue-min="255" blue-max="255"/>
</external-graphic>
To use the ibex:mask element you must reference the ibex namespace in your FO as
shown in Figure 16-22.
Figure 16-22:
Referencingthe ibex
namespace
<root
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:ibex="http://www.xmlpdf.com/2003/ibex/Format">
The mask defines the minimum and maximum values for each of the red, green and blue
components of an image. A mask using these values is applicable only to images which
arein RGBformatwith 24 bits per pixel.
For CMYK images, attributes called c-min, c-max, m-min, m-max, y-min, y-max, k-min and
k-max define the minimum and maximum values for each of the cyan, magenta, yellow
and black components of theimage.
The image mask shown above causes any pixel which has red=255, green=255 and
blue=255 to notberendered. As a pixelwith red, green and blue all equal to 255 is white,
this means any whitepixels willnotbe rendered.
Figure 16-23 shows some text over which we have placed an image with red and black
letters on a white background.
Figure 16-23:
Image placedover
text
This is some text that will be behind the image. This is
some text that will be behind the image. This is some text
that will be behind the image. This is some text that will
be behind the image. This is some text that will be behind
the image. This is some text that will be behind the
image. This is some text that will be behind the image.
This is some text that will be behind the image.
If we add a mask to eliminate white pixels the image then appears as shown in
Figure 16-24.
Figure16-24:
Image withmasking
This is some text that will be behind the image. This is
some text that will be behind the image. This is some text
that will be behind the image. This is some text that will
be behind the image. This is some text that will be behind
the image.
16.8.4 Transparent Images using SVG
Transparent images can also be implemented by placing a SVG image over the top of
other content. This approach uses the vector SVG renderer introduced in Ibex2.1.2 and is
Ibex PDF Creator
Developers Guide
104
Images
only available when using .NET 1.1 or higher. This is the best approach for transparent
images because (a) there is no background on the SVG image so the best clarity is
achieved, and (b) SVG uses a vector renderer which creates a smaller PDF file than you
would get using a bitmap image.
Figure 16-25 shows theFO to putthe word "ibex" over some text. The resulting outputis
shown in Figure 16-26.
Figure 16-25:
FOusingSVG toplace
contentovertext
<block-container>
<block-container space-before="6pt"
absolute-position="absolute" top="-1.6cm"
left="5cm">
<block>
<instream-foreign-object z-index="30">
<svg width="315" height="100"
xmlns="http://www.w3.org/2000/svg">
<text
x="30" y="60" fill="blue" stroke="blue"
font-size="61pt" font-style="italic"
style="font-family:arial;stroke-width:0.5">
Ibex
</text>
</svg>
</instream-foreign-object>
</block>
</block-container>
</block-container>
Figure 16-26:
Textoverlaidusing
SVG
This is some text which will be behind the image. This is some text
which will be behind the image. This is some text which will be
behind the image. This is some text which will be behind the image.
This is some text which will be behind the image. This is some text
which will be behind the image. This is some text which will be
behind the image. This is some text which will be behind the image.
Ibex
16.9 Network credentials used in accessing images
Ibex can retrieve images from HTTP servers as shown in Figure 16-27 below. By default
Ibexwill do this using thecredentials of the process which is creating the PDF file. If Ibex
is running in an ASP.NET server then the default configuration is that ASP runs as the
ASPNET user.This user does nothave permissions to access other servers and so will not
be ableto retrieveimages from other servers.
Figure 16-27:
FOtoinsertanimage
fromanHTTPserver
<block space-before="6pt">
<external-graphic border="1pt solid black"
src="url(http://www.xmlpdf.com/images/download2.gif)"
content-width="200%" content-height="200%"/>
</block>
The FODocument object supports the setNetworkCredentials() method. This method
takes 4 parameters, as shown in Figure 16-28.
Figure16-28:
The
setNetworkCredential
smethod
public void setNetworkCredentials(
string prefix,
string username,
string password,
string domain )
Documents you may be interested
Documents you may be interested