asp.net pdf viewer free : Show pdf thumbnail in html Library control class asp.net azure html ajax pdflib-manual-5_024-part418

3.1  General Programming g 41
3PDFlib Programming
3.1General Programming
3.1.1PDFlib Program Structure and Function Scopes
PDFlib applications must obey certain structural rules which are very easy to under-
stand. Writing applications according to these restrictions is straightforward. For exam-
ple, you don’t have to think about opening a document first before closing it. Since the 
PDFlib API is very closely modelled after the document/page paradigm, generating doc-
uments the »natural« way usually leads to well-formed PDFlib client programs.
PDFlib enforces correct ordering of function calls with a strict scoping system. The 
function descriptions document the allowed scope for a particular function. Calling a 
function from a different scope will trigger a PDFlib exception. PDFlib will also throw an 
exception if bad parameters are supplied by a library client.
The function descriptions in Chapter 7 reference these scopes; the scope definitions 
can be found in Table 3.1. Figure 3.1 depicts the nesting of scopes. PDFlib will throw an 
exception if a function is called outside the allowed scope. You can query the current 
scope with the scope parameter.
3.1.2Parameters
PDFlib’s operation can be controlled by a variety of global parameters. These will retain 
their settings across the life span of the PDFlib object, or until they are explicitly 
changed by the client. The functions can be used for dealing with PDFlib parameters:
>PDF_set_parameter() can be used to set parameters of type string.
>PDF_set_value() can be used to set parameters with numerical values.
>PDF_get_parameter() can be used to query parameters of type string.
>PDF_get_value() can be used to query the values of numerical parameters.
Details of parameter names and possible values can be found in Chapter 7.
Table 3.1 1 Function scope definitions
scope name
definition
path
started by one of PDF_moveto(), PDF_circle(), PDF_arc(), PDF_arcn(), or PDF_rect()
terminated by any of the functions in Section 7.4.6, »Path Painting and Clipping«, page 177
page
between PDF_begin_page() and PDF_end_page(), but outside of path scope
template
between PDF_begin_template() and PDF_end_template(), but outside of path scope
pattern
between PDF_begin_pattern() and PDF_end_pattern(), but outside of path scope
font
between PDF_begin_font() and PDF_end_font(), but outside of glyph scope
glyph
between PDF_begin_glyph() and PDF_end_glyph(), but outside of path scope
document
between PDF_open_*() and PDF_close(), but outside of page, template, pattern, and font scope
object
in Java: the lifetime of the pdflib object, but outside of document scope;
in other bindings between PDF_new() and PDF_delete(), but outside of document scope
null
outside of object scope
any
when a function description mentions »any« scope it actually means any except null, since a 
PDFlib object doesn’t even exist in null scope.
Show pdf thumbnail in html - Draw thumbnail images for PDF in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Thumbnail Generation with Various Options for Quick PDF Navigation
how to make a thumbnail of a pdf; .pdf printing in thumbnail size
Show pdf thumbnail in html - VB.NET PDF Thumbnail Create SDK: Draw thumbnail images for PDF in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Thumbnail Generation with Various Options for Quick PDF Navigation
cannot view pdf thumbnails in; how to view pdf thumbnails in
42
Chapter 3:  PDFlib Programming
3.1.3Exception Handling
Errors of a certain kind are called exceptions in many languages for good reasons – they 
are mere exceptions, and are not expected to occur very often during the lifetime of a 
program. The general strategy is to use conventional error reporting mechanisms (read: 
special error return codes) for function calls which may go wrong often times, and use a 
special exception mechanism for those rare occasions which don’t warrant cluttering 
the code with conditionals. This is exactly the path that PDFlib goes: Some operations 
can be expected to go wrong rather frequently, for example:
>Trying to open an output file for which one doesn’t have permission
>Trying to open an input PDF with a wrong file name
>Trying to open a corrupt image file
PDFlib signals such errors by returning a special value (usually y –1, but 0 in the PHP 
binding) as documented in the API reference. Other events may be considered harmful, 
but will occur rather infrequently, e.g.
>running out of virtual memory
>scope violations (e.g., closing a document before opening it)
>supplying wrong parameters to PDFlib API functions (e.g., trying to draw a circle with 
a negative radius)
When PDFlib detects such a situation, an exception will be thrown instead of passing a 
special error return value to the caller. In the C programming language, which doesn’t 
natively support exceptions, the client can install a custom routine (called an error han-
dler) which will be called in case of an exception. However, the recommended method is 
to make use of PDF_TRY()/PDF_CATCH() blocks as detailed in Section 2.4.4, »Error Han-
dling in C«, page 24.
page
page
page
page
path
path
template
pattern
document
. . .
. . .
object
null
path
path
font
glyph
page
page
page
page
path
path
template
pattern
document
. . .
path
path
font
glyph
Fig. 3.1
Nesting of scopes
How to C#: Set Image Thumbnail in C#.NET
VB.NET How-to, VB.NET PDF, VB.NET Word, VB.NET Excel, VB.NET PowerPoint, VB.NET Tiff, VB.NET Imaging, VB.NET OCR, VB Thumbnail item. Make the ToolBox view show.
pdf reader thumbnails; create thumbnail from pdf c#
C# Word - Header & Footer Processing in C#.NET
using RasterEdge.XDoc.Word; Create Footer & Header. The following C# sample code will show you how to create a header and footer in section.
print pdf thumbnails; can't view pdf thumbnails
3.1  General Programming g 43
It is important to understand that the generated PDF document cannot be finished 
after an exception occurred. The only method which can safely be called after an excep-
tion is PDF_delete(). In the C language binding PDF_get_apiname(), PDF_get_errnum(), 
and PDF_get_errmsg() may also be called. Calling any other PDFlib methods after an ex-
ception may lead to unexpected results. The exception (or data passed to the C error 
handler) will contain the following information:
>A unique error number (see Table 3.2);
>The name of the PDFlib API function which caused the exception;
>A descriptive text containing details of the problem;
C language clients can fetch this information using dedicated functions (PDF_get_
errnum(), PDF_get_apiname(), and PDF_get_errmsg()), while in other languages it will be 
part of the exception object.
Disabling exceptions. Some exceptions can be disabled. These fall into two categories: 
non-fatal errors (warnings) and errors which may or may not justify an exception de-
pending on client preferences.
Warnings generally indicate some problem in your PDFlib code which you should in-
vestigate more closely. However, processing may continue in case of non-fatal errors. 
For this reason, you can suppress warnings using the following function call:
PDF_set_parameter(p, "warning", "false");
The suggested strategy is to enable warnings during the development cycle (and closely 
examine possible warnings), and disable warnings in a production system.
Certain operations may be considered fatal for some clients, while others are pre-
pared to deal with the situation. In these cases the behavior of the respective PDFlib API 
function changes according to a parameter. This distinction is implemented for loading 
fonts, images, PDF import documents, and ICC profiles. For example, if a font cannot be 
loaded due to some configuration problem one client may simply give up, while anoth-
er may choose another font instead. When the parameter fontwarning is set to true, an 
exception will be thrown when the font cannot be loaded. Otherwise the function will 
return an error code instead. The parameter can be set as follows:
PDF_set_parameter(p, "fontwarning", "false");
Querying the reason of a failed function call. As noted above, the generated PDF out-
put document must always be abandoned when an exception occurs. Some clients, 
however, may prefer to continue the document by adjusting some parameters. For ex-
ample, when a particular font cannot be loaded most clients will give up the document, 
while others may prefer to work with a different font. This distinction can be achieved 
with the fontwarning etc. parameters. In this case it may be desirable to retrieve the er-
ror message that would have been part of the exception. In this situation the functions 
Table 3.2 2 Ranges of PDFlib exception numbers
error ranges
reasons
1000 – 1999
(PDCORE library): memory, I/O, arguments, parameters/values, options
2000 – 2999
(PDFlib library): configuration, scoping, graphics and text, color, images, fonts, encodings, hyper-
text, PDF/X
4000 – 4999 9 (PDF import library PDI): configuration and parameter, corrupt PDF (file, object, or stream level)
How to C#: File Format Support
PowerPoint Pages. Annotate PowerPoint. Text Search. Insert Image. Thumbnail Create. VB.NET How-to, VB.NET PDF, VB.NET Word, VB Microsoft Office 2003 PowerPoint Show
pdf thumbnail preview; thumbnail view in for pdf files
VB.NET Image: How to Process & Edit Image Using VB.NET Image
How to Process Image Using VB.NET. In this section, we will show you all VB.NET Image Cropping Assembly to Crop Image, VB.NET Image Thumbnail Creator Control SDK
pdf thumbnail fix; view pdf thumbnails
44
Chapter 3:  PDFlib Programming
PDF_get_errnum(), PDF_get_errmsg(), and PDF_get_apiname() may be called immediately 
after a failed function call, i.e., a function call which returned with a -1 (in PHP: 0) error 
value.
The following code fragments summarize different strategies with respect to excep-
tion handling. The examples try to load and embed a font, assuming that this font is not 
available.
If the fontwarning parameter is true (which is the default) the document must be 
abandoned:
PDF_set_parameter(p, "fontwarning", "true");
font = PDF_load_font(p, "MyFontName", 0, "winansi", "embed");
/* unless an exception was thrown the font handle is valid;
* when an exception occurred the PDF output cannot be continued
*/
If the fontwarning parameter is false the return value must be checked for validity:
PDF_set_parameter(p, "fontwarning", "false");
font = PDF_load_font(p, "MyFontName", 0, "winansi", "embed";
if (font == -1) {
/* font handle is invalid, but the PDF output can be continued. */
/* Try a different font or give up */
...
}
/* font handle is valid; continue as usual */
If the fontwarning parameter is false and the return value indicates failure, the reason of 
the failure can be queried in order to properly deal with the situation:
PDF_set_parameter(p, "fontwarning", "false");
font = PDF_load_font(p, "MyFontName", 0, "winansi", "embed";
if (font == -1) {
/* font handle is invalid; find out what happened. */
errmsg = PDF_get_errmsg(p);
/* Log error message */
/* Try a different font or give up */
...
}
/* font handle is valid; continue as usual */
3.1.4Option Lists
Option lists are a powerful yet easy method to control PDFlib operations. Instead of re-
quiring a multitude of function parameters, many PDFlib API methods support option 
lists, or optlists for short. These are strings which may contain an arbitrary number of 
options. Optlists support various data types and composite data like arrays. In most lan-
guages optlists can easily be constructed by concatenating the required keywords and 
values. C programmers may want to use the sprintf() function in order to construct 
optlists. An optlist is a string containing one or more pairs of the form
name value(s)
Names and values, as well as multiple name/value pairs can be separated by arbitrary 
whitespace characters (space, tab, carriage return, newline) and/or an equal sign ’=’.
XDoc.HTML5 Viewer for .NET, All Mature Features Introductions
By clicking a thumbnail, you are redirect to a to search text-based documents, like PDF, Microsoft Office Word In addition, you may customize to show or hide
html display pdf thumbnail; pdf first page thumbnail
VB.NET Image: Sharpen Images with DocImage SDK for .NET
This guiding page will show you how to sharpen an image in a Visual Basic .NET image processing application. Besides, we would like
view pdf image thumbnail; pdf files thumbnail preview
3.1  General Programming g 45
Simple values. Simple values may use any of the following data types:
>Boolean: true or false; if the value of a boolean option is omitted, the value true is as-
sumed. As a shorthand notation noname can be used instead of name false.
>String: strings containing whitespace must be bracketed with { and }. An empty 
string can be constructed with {}. The characters {, }, and \ must be preceded by a an 
additional character if they are supposed to be part of the string.
>Keyword: one of a predefined list of fixed keywords
>Float and integer: decimal floating point or integer numbers; point and comma can 
be used as decimal separators.
>Handle: several PDFlib-internal object handles, e.g., font handles, image handles. 
Technically these are always integer values.
Depending on the type and interpretation of an option additional restrictions may ap-
ply. For example, integer or float options may be restricted to a certain range of values; 
handles must be valid for the corresponding type of object, etc. Conditions for options 
are documented in their respective function descriptions in Chapter 7. Some examples 
for simple values (the first line shows a string containing a blank character):
PDF_open_pdi():
password {secret string}
PDF_create_gstate():
linewidth 0.5 blendmode overlay opacityfill 0.75
PDF_load_font():
embedding=true subsetting=true subsetlimit=50 kerning=false
PDF_load_font():
embedding subsetting subsetlimit=50 nokerning
List values. List values consist of multiple values, which may be simple values or list 
values in turn. Lists are bracketed with and }. Some examples for list values:
PDF_fit_image():
boxsize {500 600} position {50 0}
PDF_create_gstate():
dasharray {11 22 33}
Color values. Color values are lists consisting of a color space keyword and a list with a 
varying number of float values depending on the particular color space. The color space 
keywords and semantics are the same as in PDF_setcolor() (see Section 7.5.1, »Setting Col-
or and Color Space«, page 179):
>The color space keywords gray, rgb, and cmyk can be supplied along with one, three, or 
four float values.
>The color space keyword lab can be supplied along with three float values.
>The color space keyword spot can be supplied along with a spot color handle. Alterna-
tively, the color space keyword spotname can be supplied along with a spot color 
name and a float value containing the color tint.
>The color space keywords iccbasedgray, iccbasedrgb, and iccbasedcmyk can be supplied 
along with one, three, or four float values.
>The color space keyword none can be supplied to specify the absence of color.
As detailed in the respective function descriptions in Chapter 7, a particular option list 
may only supply a subset of the keywords presented above. Some examples for color 
values:
PDF_fill_textblock():
strokecolor rgb { 1 0 0 }
PDF_fill_textblock():
bordercolor none
VB.NET Image: VB.NET Code to Create Watermark on Images in .NET
Add Watermark to Image. In the code tab below we will show you the We are dedicated to provide powerful & profession imaging controls, PDF document, tiff files
create thumbnail jpg from pdf; pdf thumbnail generator
VB.NET Image: VB.NET DLL for Image Basic Transforming in .NET
VB.NET demo code below will show you how to crop a local image by We are dedicated to provide powerful & profession imaging controls, PDF document, tiff files
create pdf thumbnail; pdf thumbnails in
46
Chapter 3:  PDFlib Programming
3.1.5The PDFlib Virtual File System (PVF)
In addition to disk files a facility called PDFlib Virtual File System (PVF) allows clients to di-
rectly supply data in memory without any disk files involved. This offers performance 
benefits and can be used for data fetched from a database which does not even exist on 
an isolated disk file, as well as other situations where the client already has the required 
data available in memory as a result of some processing.
PVF is based on the concept of named virtual read-only files which can be used just 
like regular file names with any API function. They can even be used in UPR configura-
tion files. Virtual file names can be generated in an arbitrary way by the client. Obvious-
ly, virtual file names must be chosen such that name clashes with regular disk files are 
avoided. For this reason a hierarchical naming convention for virtual file names is rec-
ommended as follows (filename refers to a name chosen by the client which is unique in 
the respective category). It is also recommended to keep standard file name suffixes:
>Raster image files: /pvf/image/filename
>font outline and metrics files (it is recommended to use the actual font name as the 
base portion of the file name): /pvf/font/filename
>ICC profiles: /pvf/iccprofile/filename
>Encodings and codepages: /pvf/codepage/filename
>PDF documents: /pvf/pdf/filename
When searching for a named file PDFlib will first check whether the supplied file name 
refers to a known virtual file, and then try to open the named file on disk.
Lifetime of virtual files. Some functions will immediately consume the data supplied 
in a virtual file, while others will read only parts of the file, with other fragments being 
used at a later point in time. For this reason close attention must be paid to the lifetime 
of virtual files. PDFlib will place an internal lock on every virtual file, and remove the 
lock only when the contents are no longer needed. Unless the client requested PDFlib to 
make an immediate copy of the data (using the copy option in PDF_create_pvf()), the vir-
tual file’s contents must only be modified, deleted, or freed by the client when it is no 
longer locked by PDFlib. PDFlib will automatically delete all virtual files in PDF_delete(). 
However, the actual file contents (the data comprising a virtual file) must always be 
freed by the client.
Different strategies. PVF supports different approaches with respect to managing the 
memory required for virtual files. These are governed by the fact that PDFlib may need 
access to a virtual file’s contents after the API call which accepted the virtual file name, 
but never needs access to the contents after PDF_close(). Remember that calling PDF_
delete_pvf() does not free the actual file contents (unless the copy option has been sup-
plied), but only the corresponding data structures used for PVF file name administra-
tion. This gives rise to the following strategies:
>Minimize memory usage: it is recommended to call PDF_delete_pvf() immediately af-
ter the API call which accepted the virtual file name, and another time after PDF_
close(). The second call is required because PDFlib may still need access to the data so 
that the first call refuses to unlock the virtual file. However, in some cases the first 
call will already free the data, and the second call doesn’t do any harm. The client 
may free the file contents only when PDF_delete_pvf() succeeded.
>Optimize performance by reusing virtual files: some clients may wish to reuse some 
data (e.g., font definitions) within various output documents, and avoid multiple 
C# Word - Run Processing in C#.NET
The following demo code will show you how to create a run in current paragraph. The following demo code will show you how to operate this work.
generate pdf thumbnails; cannot view pdf thumbnails in
C# Word - Table Cell Processing in C#.NET
using RasterEdge.XDoc.Word; Create and Add Cells in Table. The following demo code will show how to create a table cell and add to table.
how to make a thumbnail of a pdf; pdf no thumbnail
3.1  General Programming g 47
create/delete cycles for the same file contents. In this case it is recommended not to 
call PDF_delete_pvf() as long as more PDF output documents using the virtual file 
will be generated.
>Lazy programming: if memory usage is not a concern the client may elect not to call 
PDF_delete_pvf() at all. In this case PDFlib will internally delete all pending virtual 
files in PDF_delete().
In all cases the client may free the corresponding data only when PDF_delete_pvf() re-
turned successfully, or after PDF_delete().
3.1.6Resource Configuration and File Searching
In most advanced applications PDFlib needs access to resources such as font file, encod-
ing definition, ICC color profiles, etc. In order to make PDFlib’s resource handling plat-
form-independent and customizable, a configuration file can be supplied for describing 
the available resources along with the names of their corresponding disk files. In addi-
tion to a static configuration file, dynamic configuration can be accomplished at run-
time by adding resources with PDF_set_parameter(). For the configuration file we dug 
out a simple text format called Unix PostScript Resource (UPR) which came to life in the 
era of Display PostScript, and is still in use on several systems. However, we extended 
the original UPR format for our purposes. The UPR file format as used by PDFlib will be 
described below. There is a utility called makepsres (often distributed as part of the X 
Window System) which can be used to automatically generate UPR files from PostScript 
font outline and metrics files.
Resource categories. The resource categories supported by PDFlib are listed in Table 
3.3. Other resource categories may be present in the UPR file for compatibility with Dis-
play PostScript installations, but they will silently be ignored.
Redundant resource entries should be avoided. For example, do not include multiple 
entries for a certain font’s metrics data. Also, the font name as configured in the UPR file 
should exactly match the actual font name in order to avoid confusion (although 
PDFlib does not enforce this restriction).
Table 3.3 3 Resource categories supported in PDFlib
resource category name
explanation
SearchPath
Relative or absolute path name of directories containing data files
FontAFM
PostScript font metrics file in AFM format
FontPFM
PostScript font metrics file in PFM format
FontOutline
PostScript, TrueType or OpenType font outline file
Encoding
text file containing an 8-bit encoding or code page table
HostFont
name of a font installed on the system. Resources in this category do not 
necessarily require any value. If a value is provided it can be encoded in 
ASCII or UTF-8 with initial BOM. The latter can be useful for localized host 
font names.
ICCProfile
name of an ICC color profile
1
StandardOutputIntent
name of a standard output condition for PDF/X
48
Chapter 3:  PDFlib Programming
In Mac OS Classic the colon character ’:’ must be used as a directory separator. The 
font names of resource-based PostScript Type 1 fonts (LWFN fonts) must be specified us-
ing the full path including volume name, for example:
Foo-Italic=Classic:Data:Fonts:FooIta
The UPR file format. UPR files are text files with a very simple structure that can easily 
be written in a text editor or generated automatically. To start with, let’s take a look at 
some syntactical issues:
>Lines can have a maximum of 255 characters.
>A backslash ’\’ escapes newline characters. This may be used to extend lines. 
>An isolated period character ’.’ serves as a section terminator.
>All entries are case-sensitive.
>Comment lines may be introduced with a percent ’%’ character, and terminated by 
the end of the line.
>Whitespace is ignored everywhere except in resource names and file names.
UPR files consist of the following components:
>A magic line for identifying the file. It has the following form:
PS-Resources-1.0
>A section listing all resource categories described in the file. Each line describes one 
resource category. The list is terminated by a line with a single period character. 
Available resource categories are described below.
>A section for each of the resource categories listed at the beginning of the file. Each 
section starts with a line showing the resource category, followed by an arbitrary 
number of lines describing available resources. The list is terminated by a line with a 
single period character. Each resource data line contains the name of the resource 
(equal signs have to be quoted). If the resource requires a file name, this name has to 
be added after an equal sign. The SearchPath (see below) will be applied when PDFlib 
searches for files listed in resource entries.
File searching and the SearchPath resource category. PDFlib reads a variety of data 
items, such as raster images, font outline and metrics information, encoding defini-
tions, PDF documents, and ICC color profiles from disk files. In addition to relative or ab-
solute path names you can also use file names without any path specification. The 
SearchPath resource category can be used to specify a list of path names for directories 
containing the required data files. When PDFlib must open a file it will first use the file 
name exactly as supplied and try to open the file. If this attempt fails PDFlib will try to 
open the file in the directories specified in the SearchPath resource category one after 
another until it succeeds. SearchPath entries can be accumulated, and will be searched in 
reverse order (paths set at a later point in time will searched before earlier ones). This 
feature can be used to separate the PDFlib application from platform-specific file sys-
tem schemes. In order to disable the search you can use a fully specified path name in 
the PDFlib functions.
On Windows PDFlib will initialize the SearchPath resource category with an entry 
read from the following registry entry:
HKLM\SOFTWARE\PDFlib\PDFlib\5.0.2\SearchPath
3.1  General Programming g 49
This registry entry may contain a list of path names separated by a semicolon ’;’ char-
acter.
On IBM iSeries the SearchPath resource category will be initialized with the following 
values:
/pdflib/5.0.2/fonts
/pdflib/5.0.2/bind/data
On MVS the SearchPath feature is not supported.
Sample UPR file. The following listing gives an example of a UPR configuration file as 
used by PDFlib. It describes some font metrics and outline files plus a custom encoding:
PS-Resources-1.0
SearchPath
FontAFM
FontPFM
FontOutline
Encoding
ICCProfile
.
SearchPath
/usr/local/lib/fonts
Classic:Data:Fonts
C:/psfonts/pfm
C:/psfonts
/users/kurt/my_images
.
FontAFM
Code-128=Code_128.afm
.
FontPFM
Foobar-Bold=foobb___.pfm
Mistral=c:/psfonts/pfm/mist____.pfm
.
FontOutline
Code-128=Code_128.pfa
ArialMT=Arial.ttf
.
Encoding
myencoding=myencoding.enc
.
ICCProfile
highspeedprinter=cmykhighspeed.icc
.
Searching for the UPR resource file. If only the built-in resources (e.g., PDF core font, 
built-in encodings, sRGB ICC profile) or system resources (host fonts) are to be used, a 
UPR configuration file is not required, since PDFlib will find all necessary resources 
without any additional configuration.
If other resources are to be used you can specify such resources via calls to PDF_set_
parameter() (see below) or in a UPR resource file. PDFlib reads this file automatically 
when the first resource is requested. The detailed process is as follows:
50
Chapter 3:  PDFlib Programming
>If the environment variable PDFLIBRESOURCE is defined PDFlib takes its value as the 
name of the UPR file to be read. If this file cannot be read an exception will be 
thrown.
>If the environment variable PDFLIBRESOURCE is not defined PDFlib tries to open a file 
with the following name:
upr (on MVS; a dataset is expected)
pdflib/<version>/fonts/pdflib.upr (on IBM eServer iSeries)
pdflib.upr (Windows, Unix, and all other systems)
If this file cannot be read no exception will be thrown.
>On Windows PDFlib will additionally try to read the registry entry
HKLM\SOFTWARE\PDFlib\PDFlib\5.0.2\resourcefile
The value of this entry (which will be created by the PDFlib installer, but can also be 
created by other means) will be taken as the name of the resource file to be used. If 
this file cannot be read an exception will be thrown.
>The client can force PDFlib to read a resource file at runtime by explicitly setting the 
resourcefile parameter:
PDF_set_parameter(p, "resourcefile", "/path/to/pdflib.upr");
This call can be repeated arbitrarily often; the resource entries will be accumulated.
Configuring resources at runtime. In addition to using a UPR file for the configuration, 
it is also possible to directly configure individual resources within the source code via 
the PDF_set_parameter()function. This function takes a category name and a corre-
sponding resource entry as it would appear in the respective section of this category in 
a UPR resource file, for example:
PDF_set_parameter(p, "FontAFM", "Foobar-Bold=foobb___.afm")
PDF_set_parameter(p, "FontOutline", "Foobar-Bold=foobb___.pfa")
3.1.7Generating PDF Documents in Memory
In addition to generating PDF documents on a file, PDFlib can also be instructed to gen-
erate the PDF directly in memory (in-core). This technique offers performance benefits 
since no disk-based I/O is involved, and the PDF document can, for example, directly be 
streamed via HTTP. Webmasters will be especially happy to hear that their server will 
not be cluttered with temporary PDF files. Unix users can write the generated PDF to the 
stdout channel and consume it in a pipe process by supplying »–« as filename for PDF_
open_file().
You may, at your option, periodically collect partial data (e.g., every time a page has 
been finished), or fetch the complete PDF document in one big chunk at the end (after 
PDF_close()). Interleaving production and consumption of the PDF data has several ad-
vantages. Firstly, since not all data must be kept in memory, the memory requirements 
are reduced. Secondly, such a scheme can boost performance since the first chunk of 
data can be transmitted over a slow link while the next chunk is still being generated. 
However, the total length of the generated data will only be known when the complete 
document is finished.
Documents you may be interested
Documents you may be interested