3.1  General Programming g 51
The active in-core PDF generation interface. In order to generate PDF data in memory, 
simply supply an empty filename to PDF_open_file(), and retrieve the data with PDF_
get_buffer():
PDF_open_file(p, "")
...create document...
PDF_close(p);
buf = PDF_get_buffer(p, &size);
... use the PDF data contained in the buffer ...
PDF_delete(p);
Note The PDF data in the buffer must be treated as binary data.
This is considered »active« mode since the client decides when he wishes to fetch the 
buffer contents. Active mode is available for all supported language bindings.
Note C and C++ clients must not free the returned buffer.
The passive in-core PDF generation interface. In »passive« mode, which is only avail-
able in the C and C++ language bindings, the user installs (via PDF_open_mem()) a call-
back function which will be called at unpredictable times by PDFlib whenever PDF data 
is waiting to be consumed. Timing and buffer size constraints related to flushing (trans-
ferring the PDF data from the library to the client) can be configured by the client in or-
der to provide for maximum flexibility. Depending on the environment, it may be ad-
vantageous to fetch the complete PDF document at once, in multiple chunks, or in 
many small segments in order to prevent PDFlib from increasing the internal docu-
ment buffer. The flushing strategy can be set using PDF_set_parameter() and the flush 
parameter values detailed in Table 3.4.
3.1.8Using PDFlib on EBCDIC-based Platforms
The operators and structure elements in the PDF file format are based on ASCII, making 
it difficult to mix text output and PDF operators on EBCDIC-based platforms such as 
IBM eServer iSeries 400 and zSeries S/390. However, a special mainframe version of 
PDFlib has been carefully crafted in order to allow mixing of ASCII-based PDF operators 
and EBCDIC (or other) text output. The EBCDIC-safe version of PDFlib is available for 
various operating systems and machine architectures.
In order to leverage PDFlib’s features on EBCDIC-based platforms the following items 
are expected to be supplied in EBCDIC text format (more specifically, in code page 037 
on iSeries, and code page 1047 on zSeries):
Table 3.4  Controlling PDFlib’s flushing strategy with the flush parameter
flush parameter
flushing strategy
benefits
none
flush only once at the end of the 
document
complete PDF document can be fetched by 
the client in one chunk
page
flush at the end of each page
generating and fetching pages can be nicely 
interleaved
content
flush after all fonts, images, file 
attachments, and pages
even better interleaving, since large items 
won’t clog the buffer
heavy
always flush when the internal 64 
KB document buffer is full
PDFlib’s internal buffer will never grow 
beyond a fixed size
Pdf to tiff c# open source - 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
pdf to tiff conversion; batch convert pdf to tiff
Pdf to tiff c# open source - 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
convert pdf to tiff 300 dpi online; how to convert pdf to tiff file
52
Chapter 3:  PDFlib Programming
>PFA font files, UPR configuration files, AFM font metrics files
>encoding and code page files
>string parameters to PDFlib functions
>input and output file names
>environment variables (if supported by the runtime environment)
>PDFlib error messages will also be generated in EBCDIC format (except in Java).
If you prefer to use input text files (PFA, UPR, AFM, encodings) in ASCII format you can 
set the asciifile parameter to true (default is false). PDFlib will then expect these files in 
ASCII encoding. String parameters will still be expected in EBCDIC encoding, however.
In contrast, the following items must always be treated in binary mode (i.e., any con-
version must be avoided):
>PDF input and output files
>PFB font outline and PFM font metrics files
>TrueType and OpenType font files
>image files and ICC profiles
C# PDF Text Extract Library: extract text content from PDF file in
using RasterEdge.XDoc.PDF; Please have a quick test by using the following C# example code for text extraction from PDF page. // Open a document.
online pdf to tiff converter; c# convert pdf to tiff
C# PDF File Merge Library: Merge, append PDF files in C#.net, ASP.
Free online C#.NET source code for combining multiple PDF pages together in .NET framework. Combine scanned images to PDF, such as tiff, jpg, png, gif, bmp
.net pdf to tiff; pdf to tiff file
3.2  Page Descriptions s 53
3.2Page Descriptions
3.2.1Coordinate Systems
PDF’s default coordinate system is used within PDFlib. The default coordinate system 
(or default user space) has the origin in the lower left corner of the page, and uses the 
DTP point as unit:
1 pt = 1/72 inch = 25.4/72 mm = 0.3528 mm
The first coordinate increases to the right, the second coordinate increases upwards. 
PDFlib client programs may change the default user space by rotating, scaling, translat-
ing, or skewing, resulting in new user coordinates. The respective functions for these 
transformations are PDF_rotate()PDF_scale(), PDF_translate(), and PDF_skew(). If the 
user space has been transformed, all coordinates in graphics and text functions must be 
supplied according to the new coordinate system. The coordinate system is reset to the 
default coordinate system at the start of each page.
Using metric coordinates. Metric coordinates can easily be used by scaling the coor-
dinate system. The scaling factor is derived from the definition of the DTP point given 
above:
PDF_scale(p, 28.3465, 28.3465);
After this call PDFlib will interpret all coordinates (except for hypertext features, see be-
low) in centimeters since 72/2.54 = 28.3465.
Coordinates for hypertext elements. PDF always expects coordinates for hypertext 
functions, such as the rectangle coordinates for creating text annotations, links, and file 
annotations in the default coordinate system, and not in the (possibly transformed) 
user coordinate system. Since this is very cumbersome PDFlib offers automatic conver-
sion of user coordinates to the format expected by PDF. This automatic conversion is ac-
tivated by setting the usercoordinates parameter to true:
PDF_set_parameter(p, "usercoordinates", "true");
Since PDF supports only hypertext rectangles with edges parallel to the page edges, the 
supplied rectangles must be modified when the coordinate system has been trans-
formed by scaling, rotating, translating, or skewing it. In this case PDFlib will calculate 
the smallest enclosing rectangle with edges parallel to the page edges, transform it to 
default coordinates, and use the resulting values instead of the supplied coordinates.
The overall effect is that you can use the same coordinate systems for both page con-
tent and hypertext elements when the usercoordinates parameter has been set to true.
Visualizing coordinates. In order to assist PDFlib users in working with PDF’s coordi-
nate system, the PDFlib distribution contains the PDF file grid.pdf which visualizes the 
coordinates for several common page sizes. Printing the appropriately sized page on 
transparent material may provide a useful tool for preparing PDFlib development. 
Acrobat 5/6 (full version only, not the free Reader) also has a helpful facility. Simply 
choose Window, Info to display a measurement palette which uses points as units. Note 
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
is a widely-used form of file that allows users to open & read With the purpose of helping C#.NET developers manipulate and edit PDF document file
pdf to tiff quality; open source convert pdf to tiff
VB.NET PDF Annotate Library: Draw, edit PDF annotation, markups in
Decode source PDF document file into an in-memory object, namely 2.pdf" Dim outputFilePath As String = Program.RootPath + "\\" Annot_8.pdf" ' open a PDF file
convert pdf to multipage tiff; how to convert pdf file to tiff for
54
Chapter 3:  PDFlib Programming
that the coordinates displayed refer to an origin in the top left corner of the page, and 
not PDF’s default origin in the lower left corner.
Don’t be mislead by PDF printouts which seem to experience wrong page dimen-
sions. These may be wrong because of some common reasons:
>The Shrink oversized pages to paper size option has been checked in Acrobat’s print dia-
log, resulting in scaled print output.
>Non-PostScript printer drivers are not always able to retain the exact size of printed 
objects.
Rotating objects. It is important to understand that objects cannot be modified once 
they have been drawn on the page. Although there are PDFlib functions for rotating, 
translating, scaling, and skewing the coordinate system, these do not affect existing ob-
jects on the page but only subsequently drawn objects. Rotating text, images, and im-
ported PDF pages by multiples of 90˚ is accomplished very easily with the PDF_fit_
textline(), PDF_fit_image(), and PDF_fit_pdi_page() functions.
The following example generates some horizontal text, and rotates the coordinate 
system in order to show rotated text. The save/restore nesting makes it easy to continue 
with horizontal text in the original coordinate system after the vertical text is done:
PDF_set_text_pos(p, 50, 600);
PDF_show(p, "This is horizontal text");
textx = PDF_get_value(p, "textx", 0);
/* determine text position*/
texty = PDF_get_value(p, "texty", 0);
/* determine text position */
PDF_save(p);
PDF_translate(p, textx, texty);
/* move origin to end of text */
PDF_rotate(p, 45);
/* rotate coordinates */
PDF_set_text_pos(p, 18, 0);
/* provide for distance from horiz. text */
PDF_show(p, "rotated text");
PDF_restore(p);
PDF_continue_text(p, "horizontal text continues");
Using top-down coordinates. Unlike PDF’s bottom-up coordinate system some graph-
ics environments use top-down coordinates which may be preferred by some develop-
ers. Such a coordinate system can easily be established using PDFlib’s transformation 
functions. However, since the transformations will also affect text output additional 
calls are required in order to avoid text being displayed in a mirrored sense.
In order to facilitate the use of top-down coordinates PDFlib supports a special mode 
in which all relevant coordinates will be interpreted differently: instead of working with 
the default PDF coordinate system, with the origin (0,0) at the lower left corner of the 
page and y coordinates increasing upwards, a modified coordinate system will be used 
which has its origin at the upper left corner of the page with y coordinates increasing 
downwards. This top-down coordinate system can be activated with the topdown pa-
rameter:
PDF_set_parameter(p, "topdown", "true")
A different coordinate system can be established for each page, but the topdown para-
meter must not be set within a page description (but only between pages). The topdown 
feature has been designed to make it quite natural for PDFlib users to work in a top-
C# Create PDF from OpenOffice to convert odt, odp files to PDF in
Online source code for C#.NET class. to Use C#.NET Demo Code to Convert ODP to PDF in C#.NET Application. Description: Convert to PDF/TIFF and save it on the disk
pdf to tiff online converter; convert pdf file to tiff file
C# PDF: PDF Document Viewer & Reader SDK for Windows Forms
DocumentViewer.dll"; Then, you will see .NET WinViewer DLL Control in VS Toolbox. Open a PDF Document in C#.NET WinForms Viewer. After adding
convert pdf to tiff; change pdf to tiff for
3.2  Page Descriptions s 55
down coordinate system. For the sake of completeness we’ll list the detailed conse-
quences of establishing a top-down coordinate system below.
»Absolute« coordinates will be interpreted in the user coordinate system without 
any modification:
>All function parameters which are designated as »coordinates« in the function de-
scriptions. Some examples: x, y in PDF_moveto(); x, y in PDF_circle(), x, y (but not width 
and height!) in PDF_rect(); llx, lly, urx, ury in PDF_add_note()).
»Relative« coordinate values will be modified internally to match the top-down system:
>Text (with positive font size) will be oriented towards the top of the page;
>When the manual talks about »lower left« corner of a rectangle, box etc. this will be 
interpreted as you see it on the page;
>When a rotation angle is specified the center of the rotation is still the origin (0, 0) of 
the user coordinate system. The visual result of a clockwise rotation will still be 
clockwise.
3.2.2Page Sizes and Coordinate Limits
Standard page formats. For the convenience of PDFlib users, Table 3.5 lists common 
standard page sizes
1
.
The PDFlib header file pdflib.h provides macro definitions for page width and height val-
ues for the most common page formats. These may be used in calls to PDF_begin_page()
They are called <format>_width, <format>_height, where <format> is one of the formats in 
Table 3.5 (in lowercase).
Page size limits. Although PDF and PDFlib don’t impose any restrictions on the usable 
page size, Acrobat implementations suffer from architectural limits regarding the page 
size. Note that other PDF interpreters may well be able to deal with larger or smaller doc-
ument formats. PDFlib will throw an exception if Acrobat’s page size limits are exceed-
ed. The page size limits for Acrobat are shown in Table 3.6.
Different page size boxes. While many PDFlib developers only specify the width and 
height of a page, some advanced applications (especially for prepress work) may want 
to specify one or more of PDF’s additional box entries. PDFlib supports all of PDF’s box 
Table 3.5 5 Common standard page size dimensions in points
format
width
height
format
width
height
format
width
height
A0
2380
3368
A4
595
842
letter
612
792
A1
1684
2380
A5
421
595
legal
612
1008
A2
1190
1684
A6
297
421
ledger
1224
792
A3
842
1190
B5
501
709
11 x 17
792
1224
1. More information about ISO, Japanese, and U.S. standard formats can be found at the following URLs:
http://www.twics.com/~eds/paper/papersize.html, http://www.cl.cam.ac.uk/~mgk25/iso-paper.html 
Table 3.6 6 Minimum and maximum page size of Acrobat
PDF viewer
minimum page size
maximum page size
Acrobat 4 and above
1/24" = 3 pt = 0.106 cm
200" = 14400 pt = 508 cm
C# Word - MailMerge Processing in C#.NET
In C# class programming, you can use XML file which contains data source, and execute String docFilePath = @""; String xmlFilePath = @""; Open the document
converting pdf to tiff format; create tiff from pdf
VB.NET PDF File Split Library: Split, seperate PDF into multiple
Separate source PDF document file by defined page range in VB.NET class application. Divide PDF file into multiple files by outputting PDF file size.
convert pdf to tiff quality; online pdf to tiff conversion
56
Chapter 3:  PDFlib Programming
entries. The following entries, which may be useful in certain environments, can be 
specified by PDFlib clients (definitions taken from the PDF reference):
>MediaBox: this is used to specify the width and height of a page, and describes what 
we usually consider the page size.
>CropBox: the region to which the page contents are to be clipped; Acrobat uses this 
size for screen display and printing.
>TrimBox: the intended dimensions of the finished (possibly cropped) page;
>ArtBox: extent of the page’s meaningful content. It is rarely used by application soft-
ware;
>BleedBox: the region to which the page contents are to be clipped when output in a 
production environment. It may encompass additional bleed areas to account for in-
accuracies in the production process.
PDFlib will not use any of these values apart from recording it in the output file. By de-
fault PDFlib generates a MediaBox according to the specified width and height of the 
page, but does not generate any of the other entries. The following code fragment will 
start a new page and set the four values of the CropBox:
PDF_begin_page(p, 595, 842);
/* start a new page */
PDF_set_value(p, "CropBox/llx", 10);
PDF_set_value(p, "CropBox/lly", 10);
PDF_set_value(p, "CropBox/urx", 500);
PDF_set_value(p, "CropBox/ury", 800);
Number of pages in a document. There is no limit in PDFlib regarding the number of 
generated pages in a document. PDFlib generates PDF structures which allow Acrobat to 
efficiently navigate documents with hundreds of thousands of pages.
Output accuracy and coordinate range. PDFlib’s numerical output accuracy has been 
carefully chosen to match the requirements of PDF and the supported environments, 
while at the same time minimizing output file size. As detailed in Table 3.7 PDFlib’s ac-
curacy depends on the absolute value of coordinates. While most developers may safely 
ignore this issue, demanding applications should take care in their scaling operations 
in order to not exceed PDF’s built-in coordinate limits.
3.2.3Paths
A path is a shape made of an arbitrary number of straight lines, rectangles, or curves. A 
path may consist of several disconnected sections, called subpaths. There are several 
operations which can be applied to a path (see Section 7.4.6, »Path Painting and Clip-
ping«, page 177):
>Stroking draws a line along the path, using client-supplied parameters (e.g., color, 
line width) for drawing.
Table 3.7 7 Output accuracy and coordinate range
absolute value
output
0 ... 0.000015
0
0.000015 ... 32767.999999
rounded to four decimal digits
32768 ... 2
31
- 1
rounded to next integer
>= 2
31
an exception will be raised
C# Create PDF from Tiff Library to convert tif images to PDF in C#
Selection of turning tiff into searchable PDF or scanned PDF. Online demo allows converting tiff to PDF online. C# source codes are provided to use in .NET class
pdf to tiff conversion using; create tiff file from pdf
3.2  Page Descriptions s 57
>Filling paints the entire region enclosed by the path, using client-supplied parame-
ters for filling.
>Clipping reduces the imageable area for subsequent drawing operations by replacing 
the current clipping area (which is the page size by default) with the intersection of 
the current clipping area and the area enclosed by the path.
>Merely terminating the path results in an invisible path, which will nevertheless be 
present in the PDF file. This will only rarely be required.
It is an error to construct a path without applying any of the above operations to it. 
PDFlib’s scoping system ensures that clients obey to this restriction. These rules may 
easily be summarized as »don’t change the appearance within a path description«.
Merely constructing a path doesn’t result in anything showing up on the page; you 
must either fill or stroke the path in order to get visible results:
PDF_moveto(p, 100, 100);
PDF_lineto(p, 200, 100);
PDF_stroke(p);
Most graphics functions make use of the concept of a current point, which can be 
thought of as the location of the pen used for drawing.
3.2.4Templates
Templates in PDF. PDFlib supports a PDF feature with the technical name form 
XObjects. However, since this term conflicts with interactive forms we refer to this fea-
ture as templates. A PDFlib template can be thought of as an off-page buffer into which 
text, vector, and image operations are redirected (instead of acting on a regular page). 
After the template is finished it can be used much like a raster image, and placed an ar-
bitrary number of times on arbitrary pages. Like images, templates can be subjected to 
geometrical transformations such as scaling or skewing. When a template is used on 
multiple pages (or multiply on the same page), the actual PDF operators for construct-
ing the template are only included once in the PDF file, thereby saving PDF output file 
size. Templates suggest themselves for elements which appear repeatedly on several 
pages, such as a constant background, a company logo, or graphical elements emitted 
by CAD and geographical mapping software. Other typical examples for template usage 
include crop and registration marks or custom Asian glyphs.
Using templates with PDFlib. Templates can only be defined outside of a page descrip-
tion, and can be used within a page description. However, templates may also contain 
other templates. Obviously, using a template within its own definition is not possible. 
Referring to an already defined template on a page is achieved with the PDF_fit_image() 
function just like images are placed on the page (see Section 5.3, »Placing Images and 
Imported PDF Pages«, page 119). The general template idiom in PDFlib looks as follows:
/* define the template */
template = PDF_begin_template(p, template_width, template_height);
...place marks on the template using text, vector, and image functions...
PDF_end_template(p);
...
PDF_begin_page(p, page_width, page_height);
/* use the template */
PDF_fit_image(p, template, (float) 0.0, (float) 0.0, "");
58
Chapter 3:  PDFlib Programming
...more page marking operations...
PDF_end_page(p);
...
PDF_close_image(p, template);
All text, graphics, and color functions can be used on a template. However, the follow-
ing functions must not be used while constructing a template:
>The functions in Section 7.6, »Image and Template Functions«, page 185, except PDF_
place_image(), PDF_fit_image(), and PDF_close_image(). This is not a big restriction 
since images can be opened outside of a template definition, and freely be used 
within a template (but not opened).
>The functions in Section 7.9, »Hypertext Functions«, page 201. Hypertext elements 
must always be defined on the page where they should appear in the document, and 
cannot be generated as part of a template.
Template support in third-party software. Templates (form XObjects) are an integral 
part of the PDF specification, and can be perfectly viewed and printed with Acrobat. 
However, not all PDF consumers are prepared to deal with this construct. For example, 
the Acrobat plugin Enfocus PitStop 5.0 can only move templates, but cannot access indi-
vidual elements within a template. On the other hand, Adobe Illustrator 9 and 10 fully 
support templates.
3.3  Working with Color r 59
3.3Working with Color
3.3.1Color and Color Spaces
PDFlib clients may specify the colors used for filling and stroking the interior of paths 
and text characters. Colors may be specified in several color spaces:
>Gray values between 0=black and 1=white;
>RGB triples, i.e., three values between 0 and 1 specifying the percentage of red, green, 
and blue; (0, 0, 0)=black, (1, 1, 1)=white;
>Four CMYK values between 0=no color and 1=full color, representing cyan, magenta, 
yellow, and black values; (0, 0, 0, 0)=white, (0, 0, 0, 1)=black. Note that this is different 
from the RGB specification.
>Device-independent colors in the CIE L*a*b* color space are specified by a luminance 
value and two color values (see Section 3.3.6, »Device-Independent CIEL*a*b* Color«, 
page 65).
>ICC-based colors are specified with the help of an ICC profile (see Section 3.3.4, »Color 
Management and ICC Profiles«, page 63).
>Spot color (separation color space): a predefined or arbitrarily named custom color 
with an alternate representation in one of the other color spaces above; this is gener-
ally used for preparing documents which are intended to be printed on an offset 
printing machine with one or more custom colors. The tint value (percentage) rang-
es from 0=no color to 1=maximum intensity of the spot color. See Section 3.3.3, »Spot 
Colors«, page 60, for a list of spot color names.
>Patterns: tiling with an object composed of arbitrary text, vector, or image graphics 
(see Section 3.3.2, »Patterns and Smooth Shadings«, page 59).
>Shadings (smooth blends) provide a gradual transition between two colors, and are 
based on another color space (see Section 3.3.2, »Patterns and Smooth Shadings«, 
page 59).
>The indexed color space is a not really a color space on its own, but rather an efficient 
coding of another color space. It will automatically be generated when an indexed 
(palette-based) image is imported.
The default color for stroke and fill operations is black.
3.3.2Patterns and Smooth Shadings
As an alternative to solid colors, patterns and shadings are special kinds of colors which 
can be used to fill or stroke arbitrary objects.
Patterns. A pattern is defined by an arbitrary number of painting operations which 
are grouped into a single entity. This group of objects can be used to fill or stroke arbi-
trary other objects by replicating (or tiling) the group over the entire area to be filled or 
the path to be stroked. Working with patterns involves the following steps:
>First, the pattern must be defined between PDF_begin_pattern() and PDF_end_
pattern(). Most graphics operators can be used to define a pattern.
>The pattern handle returned by PDF_begin_pattern() can be used to set the pattern as 
the current color using PDF_setcolor().
Depending on the painttype parameter of PDF_begin_pattern() the pattern definition 
may or may not include its own color specification. If painttype is 1, the pattern defini-
60
Chapter 3:  PDFlib Programming
tion must contain its own color specification and will always look the same; if painttype 
is 2, the pattern definition must not include any color specification. Instead, the current 
fill or stroke color will be applied when the pattern is used for filling or stroking.
Note Patterns can also be defined based on a smooth shading (see below).
Smooth shadings. Smooth shadings, also called color blends or gradients, provide a 
continuous transition from one color to another. Both colors must be specified in the 
same color space. PDFlib supports two different kinds of geometry for smooth shadings:
>axial shadings are defined along a line;
>radial shadings are defined between two circles.
Shadings are defined as a transition between two colors. The first color is always taken 
to be the current fill color; the second color is provided in the c1, c2, c3, and c4 parameters 
of PDF_shading(). These numerical values will be interpreted in the first color’s color 
space according to the description of PDF_setcolor().
Calling PDF_shading() will return a handle to a shading object which can be used in 
two ways:
>Fill an area with PDF_shfill(). This method can be used when the geometry of the ob-
ject to be filled is the same as the geometry of the shading. Contrary to its name this 
function will not only fill the interior of the object, but also affects the exterior. This 
behavior can be modified with PDF_clip().
>Define a shading pattern to be used for filling more complex objects. This involves 
calling PDF_shading_pattern() to create a pattern based on the shading, and using this 
pattern to fill or stroke arbitrary objects.
3.3.3Spot Colors
PDFlib supports spot colors (technically known as Separation color space in PDF, al-
though the term separation is generally used with process colors, too) which can be 
used to print custom colors outside the range of colors mixed from process colors. Spot 
colors are specified by name, and in PDF are always accompanied by an alternate color 
which closely, but not exactly, resembles the spot color. Acrobat will use the alternate 
color for screen display and printing to devices which do not support spot colors (such 
as office printers). On the printing press the requested spot color will be applied in addi-
tion to any process colors which may be used in the document. This requires the PDF 
files to be post-processed by a process called color separation.
Note PDF color separation is outside the scope of PDFlib; additional software for Acrobat 5, such as 
the plugins callas pdfOutput PRO
1
, Lantana Crackerjack
2
, or in-RIP separation is required.
Note Some spot colors do not display correctly on screen in Acrobat 5 when Overprint Preview is 
turned on. They can be separated and printed correctly, though.
PDFlib supports various built-in spot color libraries as well as custom (user-defined) 
spot colors. When a spot color name is requested with PDF_makespotcolor() PDFlib will 
first check whether the requested spot color can be found in one of its built-in libraries. 
If so, PDFlib will use built-in values for the alternate color. Otherwise the spot color is as-
sumed to be a user-defined color, and the client must supply appropriate alternate col-
1. See http://www.callassoftware.com 
2. See http://www.lantanarips.com 
Documents you may be interested
Documents you may be interested