asp.net pdf viewer disable save : Generate pdf thumbnails SDK Library API .net wpf azure sharepoint PDFlib-7-tutorial4-part396

2.11  RPG Binding g 41
2.11RPG Binding
PDFlib provides a /copy module that defines all prototypes and some useful constants 
needed to compile ILE-RPG programs with embedded PDFlib functions.
Function names. All PDFlib functions have been renamed for RPG binding. Instead of 
the PDF_ prefix you must use RPDF_ as prefix for all function names. However, the origi-
nal function names as provided in PDFlib versions earlier than 7 are still available (with-
out Unicode treatment of string parameters).
Unicode string handling. Since all functions provided by PDFlib use Unicode strings 
with variable length as parameters, you have to use the %UCS2 builtin function to con-
vert a single-byte string to a Unicode string. All strings returned by PDFlib functions are 
Unicode strings with variable length. Use the %CHAR builtin function to convert these 
Unicode strings to single-byte strings.
Note The %CHAR and %UCS2 functions use the current job’s CCSID to convert strings from and to 
Unicode. The examples provided with PDFlib are based on CCSID 37 (US EBCDIC). Some special 
characters in option lists (e.g. {[]} ) may not be translated correctly if you run the examples 
under other codepages.
Since all strings are passed as variable length strings you must not pass the length pa-
rameters in various functions which expect explicit string lengths (the length of a vari-
able length string is stored in the first two bytes of the string).
Compiling and Binding RPG Programs for PDFlib. Using PDFlib functions from RPG re-
quires the compiled PDFLIB and PDFLIB_RPG service programs. To include the PDFlib 
definitions at compile time you have to specify the name of the /copy member in the D 
specs of your ILE-RPG program:
d/copy QRPGLESRC,PDFLIB
If the PDFlib source file library is not on top of your library list you have to specify the li-
brary as well:
d/copy PDFsrclib/QRPGLESRC,PDFLIB
Before you start compiling your ILE-RPG program you have to create a binding directory 
that includes the PDFLIB and PDFLIB_RPG service programs shipped with PDFlib. The 
following example assumes that you want to create a binding directory called PDFLIB in 
the library PDFLIB:
CRTBNDDIR BNDDIR(PDFLIB/PDFLIB) TEXT('PDFlib Binding Directory')
After creating the binding directory you need to add the PDFLIB and PDFLIB_RPG service 
programs to your binding directory. The following example assumes that you want to 
add the service program PDFLIB in the library PDFLIB to the binding directory created 
earlier.
ADDBNDDIRE BNDDIR(PDFLIB/PDFLIB) OBJ((PDFLIB/PDFLIB *SRVPGM))
ADDBNDDIRE BNDDIR(PDFLIB/PDFLIB) OBJ((PDFLIB/PDFLIB_RPG *SRVPGM))
Generate pdf thumbnails - Draw thumbnail images for PDF in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Thumbnail Generation with Various Options for Quick PDF Navigation
pdf files thumbnail preview; no pdf thumbnails in
Generate pdf thumbnails - 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
can't see pdf thumbnails; disable pdf thumbnails
42
Chapter 2:  PDFlib Language Bindings
Now you can compile your program using the CRTBNDRPG command (or option 14 in 
PDM):
CRTBNDRPG PGM(PDFLIB/HELLO) SRCFILE(PDFLIB/QRPGLESRC) SRCMBR(*PGM) DFTACTGRP(*NO)  
BNDDIR(PDFLIB/PDFLIB)
Error Handling in RPG. PDFlib clients written in ILE-RPG can use the monitor/on-error/
endmon error handling mechanism that ILE-RPG provides. Another way to monitor for 
exceptions is to use the *PSSR global error handling subroutine in ILE-RPG. If an excep-
tion occurs, the job log shows the error number, the function that failed and the reason 
for the exception. PDFlib sends an escape message to the calling program.
c
eval      p=PDF_new
*
c
monitor
*
c
eval      doc=PDF_begin_document(p:%ucs2(’/tmp/my.pdf’):docoptlist)
:
:
*
Error Handling
c
on-error
*
Do something with this error
*
don’t forget to free the PDFlib object
c
callp     PDF_delete(p)
c
endmon
C# PDF - Read Barcode on PDF in C#.NET
File: Compress PDF. Page: Create Thumbnails. Page: Insert PDF void ReadBarcodeFromPDF( string filename, int pageIndex) { // generate PDF document PDFDocument doc
create pdf thumbnail; .pdf printing in thumbnail size
C# PDF - Create Barcode on PDF in C#.NET
File: Compress PDF. Page: Create Thumbnails. Page: Insert PDF Pages. Page: Delete Existing PDF Generate over 20 linear and 2d barcodes on PDF document page
pdf thumbnails; pdf file thumbnail preview
2.12  Ruby Binding g 43
2.12Ruby Binding
Installing the PDFlib Ruby Edition. The Ruby
1
extension mechanism works by loading 
a shared library at runtime. For the PDFlib binding to work, the Ruby interpreter must 
have access to the PDFlib extension library for Ruby. This library (on Windows/Linux/
Unix: PDFlib.so; on Mac OS X: PDFlib.bundle) will usually be installed in the site_ruby 
branch of the local ruby installation directory, i.e. in a directory with a name similar to 
the following:
/usr/local/lib/ruby/site_ruby/<rubyversion>/
However, Ruby will search other directories for extensions as well. In order to retrieve a 
list of these directories you can use the following ruby call:
ruby -e "puts $:"
This list will usually include the current directory, so for testing purposes you can sim-
ply place the PDFlib extension library and the scripts in the same directory.
Error Handling in Ruby. The Ruby binding installs a special error handler which trans-
lates PDFlib exceptions to native Ruby exceptions. The Ruby exceptions can be dealt 
with by the usual rescue technique:
begin
...some PDFlib instructions...
rescue  PDFlibException => pe
print "PDFlib exception occurred in hello sample:\n"
print "[" + pe.get_errnum.to_s + "] " + pe.get_apiname + ": " + pe.get_errmsg + "\n"
Ruby on Rails. Ruby on Rails
2
is an open-source framework which facilitates Web de-
velopment with Ruby. The PDFlib extension for Ruby can be used with Ruby on Rails; 
examples are included in the package. Follow these steps to run the PDFlib examples for 
Ruby on Rails:
>Install Ruby.
>Install Ruby on Rails.
>Unpack the PDFlib package for Ruby which contains samples for Ruby on Rails.
>Change to the bind/ruby/RubyOnRails directory and start the Ruby web server:
ruby script/server
>Point your browser to http://localhost:3000.
The code for the PDFlib samples can be found in app/controllers/pdflib_controller.rb.
Local PDFlib installation. If you want to use PDFlib only with Ruby on Rails, but cannot 
install it globally for general use with Ruby, you can install PDFlib locally in the vendors 
directory within the Rails tree. This is particularly useful if you do not have permission 
to install Ruby extensions for general use, but want to work with PDFlib in Rails never-
theless.
1. See www.ruby-lang.org/en 
2. See www.rubyonrails.org 
C# Image: Tutorial for Document Viewing & Displaying in ASP.NET
To connect the Viewer with the Thumbnails, type WebAnnotationViewer1 into the dedicated to provide powerful & profession imaging controls, PDF document, tiff
create thumbnail from pdf; view pdf thumbnails
Process Images in Web Image Viewer | Online Tutorials
Also can change the order of images & file pages by dragging & dropping thumbnails; Commonly used document types are supported, including PDF, multi-page TIFF
create thumbnails from pdf files; pdf thumbnails in
44
Chapter 2:  PDFlib Language Bindings
2.13Tcl Binding
Installing the PDFlib Tcl Edition. The Tcl 
1
extension mechanism works by loading 
shared libraries at runtime. For the PDFlib binding to work, the Tcl shell must have ac-
cess to the PDFlib Tcl wrapper shared library and the package index file pkgIndex.tcl. You 
can use the following idiom in your script to make the library available from a certain 
directory (this may be useful if you want to deploy PDFlib on a machine where you 
don’t have root privilege for installing PDFlib):
lappend auto_path /path/to/pdflib
Unix: the library pdflib_tcl.so (on Mac OS X: pdflib_tcl.dylib) must be placed in one of the 
default locations for shared libraries, or in an appropriately configured directory. Usual-
ly both pkgIndex.tcl and pdflib_tcl.so will be placed in the directory
/usr/lib/tcl8.4/pdflib
Windows: the files pkgIndex.tcl and pdflib_tcl.dll will be searched for in the directories
C:\Program Files\Tcl\lib\pdflib
C:\Program Files\Tcl\lib\tcl8.3\pdflib
Error Handling in Tcl. The Tcl binding installs a special error handler which translates 
PDFlib errors to native Tcl exceptions. The Tcl exceptions can be dealt with by the usual 
try/catch technique:
if [ catch { ...some PDFlib instructions... } result ] {
puts stderr "Exception caught!"
puts stderr $result
}
1. See www.tcl.tk 
C# Image: Create C#.NET Windows Document Image Viewer | Online
Support displaying and viewing multiple document & image formats (PDF, MS Word, Tiff Easy to create high-quality image thumbnails & automatic navigation from
show pdf thumbnail in; print pdf thumbnails
VB.NET PDF Library SDK to view, edit, convert, process PDF file
See this VB.NET guide to learn how to use RasterEdge PDF SDK for .NET to perform quick file navigation. You may easily generate thumbnail image from PDF.
thumbnail pdf preview; create pdf thumbnail image
3.1  General Programming g 45
3PDFlib Programming
3.1General Programming
Cookbook Code samples regarding general programming issues can be found in the general category of 
the PDFlib Cookbook.
3.1.1Exception 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 (i.e. 
special error return codes such as -1) for function calls which may often fail, 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 PDFlib Reference. This error code must be checked by the 
application developer for all functions which are documented to return -1 on error.
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 
negative radius), or supplying wrong options.
When PDFlib detects such a situation, an exception will be thrown instead of passing a 
special error return value to the caller. It is important to understand that the generated 
PDF document cannot be finished when an exception occurred. The only methods 
which can safely be called after an exception are PDF_delete(), PDF_get_apiname(), PDF_
get_errnum(), and PDF_get_errmsg(). Calling any other PDFlib method after an exception 
may lead to unexpected results. The exception will contain the following information:
>A unique error number;
>The name of the PDFlib API function which caused the exception;
>A descriptive text containing details of the problem.
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 the program flow or sup-
plying different data. For example, when a particular font cannot be loaded most clients 
will give up the document, while others may prefer to work with a different font. In this 
case it may be desirable to retrieve an error message which describes the problem in 
more detail. In this situation the functions PDF_get_errnum(), PDF_get_errmsg(), and 
PDF_get_apiname() can be called immediately after a failed function call, i.e., a function 
call which returned a -1 (in PHP: 0) error value.
C# PDF Library SDK to view, edit, convert, process PDF file for C#
See this C# guide to learn how to use RasterEdge PDF SDK for .NET to perform quick file navigation. You may easily generate thumbnail image from PDF.
generate thumbnail from pdf; how to create a thumbnail of a pdf document
How to C#: Basic SDK Concept of XDoc.PDF for .NET
Thumbnail. You can generate thumbnail image(s) from PDF file for quick viewing and further manipulating. Class: PDFDocument. How to C#: XDoc.PDF Classes Usage.
enable pdf thumbnail preview; show pdf thumbnail in html
46
Chapter 3:  PDFlib Programming
Error policies. When PDFlib detects an error condition, it will react according to one of 
several strategies which can be configured with the errorpolicy parameter. All functions 
which can return error codes also support an errorpolicy option. The following error pol-
icies are supported:
>errorpolicy=legacy: this setting ensures behavior which is compatible to earlier ver-
sions of PDFlib, where exceptions and error return values are controlled by parame-
ters and options such as fontwarning, imagewarning, etc. This is only recommended 
for applications which require source code compatibility with PDFlib 6. It should not 
be used for new applications. The legacy setting is the default error policy.
>errorpolicy=return: when an error condition is detected, the respective function will 
return with a -1 (in PHP: 0) error value regardless of any warning parameters or op-
tions. The application developer must check the return value to identify problems, 
and must react on the problem in whatever way is appropriate for the application. 
This is the recommended approach since it allows a unified approach to error han-
dling.
>errorpolicy=exception: an exception will be thrown when an error condition is detect-
ed. However, the output document will be unusable after an exception. This can be 
used for lazy programming without any error conditionals at the expense of sacrific-
ing the output document even for problems which may be fixable by the applica-
tion.
The following code fragments demonstrate different strategies with respect to excep-
tion handling. The examples try to load a font which may or may not be available.
If errorpolicy=return the return value must be checked for an error. If it indicates fail-
ure, the reason of the failure can be queried in order to properly deal with the situation:
font = p.load_font("MyFontName", "unicode", "errorpolicy=return");
if (font == -1)
{
/* font handle is invalid; find out what happened. */
errmsg = p.get_errmsg());
/* Try a different font or give up */
...
}
/* font handle is valid; continue */
If errorpolicy=exception the document must be abandoned if an error occurs:
font = p.load_font("MyFontName", "unicode", "errorpolicy=exception");
/* Unless an exception was thrown the font handle is valid;
* if an exception occurred, the PDF output cannot be continued
*/
Cookbook A full code sample can be found in the Cookbook topic general/error_handling.
Warnings. Some problem conditions can be detected by PDFlib internally, but do not 
justify interrupting the program flow by throwing an exception. While earlier versions 
of PDFlib supported the concept of non-fatal exceptions which can be disabled, PDFlib7 
never throws an exception for non-fatal conditions. Instead, a description of the condi-
tion will be logged (if logging is enabled). Logging can be enabled as follows:
p.set_parameter("logging", "filename=private.log");
3.1  General Programming g 47
We recommend the following approach with respect to warnings:
>Enable warning logging in the development phase, and carefully study any warning 
messages in the log file. They may point to potential problems in your code or data, 
and you should try to understand or eliminate the reason for those warnings.
>Disable warning logging in the production phase, and re-enable it only in case of 
problems.
3.1.2The PDFlib Virtual File System (PVF)
Cookbook A full code sample can be found in the Cookbook topic general/starter_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-
48
Chapter 3:  PDFlib Programming
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 
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.3Resource 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.1. Other resource categories will be ignored. The values are treated as name strings; 
they can be encoded in ASCII or UTF-8 (with BOM). Unicode values may be useful for lo-
calized font names with the HostFont resource.
Table 3.1 1 Resource categories supported in PDFlib
category
format
explanation
SearchPath
value
Relative or absolute path name of directories containing data files
CMap
key=value
CMap file for CJK encoding
FontAFM
key=value
PostScript font metrics file in AFM format
FontPFM
key=value
PostScript font metrics file in PFM format
FontOutline
key=value
PostScript, TrueType or OpenType font outline file
3.1  General Programming g 49
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).
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. Use two 
backslashes in order to create a single literal backslash.
>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. A preceding backslash can be used to create literal percent charac-
ters which do not start a comment.
>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
>An optional section listing all resource categories described in the file. Each line de-
scribes 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 
Encoding
key=value
text file containing an 8-bit encoding or code page table
HostFont
key=value
Name of a font installed on the system
ICCProfile
key=value
name of an ICC color profile
StandardOutputIntent
key=value
name of a standard output condition for PDF/X (in addition to those which are al-
ready built into PDFlib, see PDFlib Reference for a complete list)
Table 3.1 1 Resource categories supported in PDFlib
category
format
explanation
50
Chapter 3:  PDFlib Programming
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 free PDFlib applications from platform-specific file system 
schemes. You can set search path entries as follows:
p.set_parameter("SearchPath", "/path/to/dir1");
p.set_parameter("SearchPath", "/path/to/dir2");
In order to disable the search you can use a fully specified path name in the PDFlib func-
tions. Note the following platform-specific features of the SearchPath resource category:
>On Windows PDFlib will initialize the SearchPath with an entry from the registry. The 
following registry entry may contain a list of path names separated by a semicolon 
’;’ character:
HKLM\SOFTWARE\PDFlib\PDFlib\7.0.5\SearchPath
>On IBM iSeries the SearchPath resource category will be initialized with the following 
values:
/pdflib/7.0.5/fonts
/pdflib/7.0.5/bind/data
>On IBM zSeries systems with MVS the SearchPath feature is not supported.
>On OpenVMS logical names can be supplied as SearchPath.
Sample UPR file. The following listing gives an example of a UPR configuration file:
PS-Resources-1.0
SearchPath
/usr/local/lib/fonts
C:/psfonts/pfm
C:/psfonts
/users/kurt/my_images
.
FontAFM
Code-128=Code_128.afm
.
FontPFM
Corporate-Bold=corpb___.pfm
Mistral=c:/psfonts/pfm/mist____.pfm
.
FontOutline
Code-128=Code_128.pfa
ArialMT=Arial.ttf
.
HostFont
Wingdings=Wingdings
.
Encoding
myencoding=myencoding.enc
.
ICCProfile
highspeedprinter=cmykhighspeed.icc
.
Documents you may be interested
Documents you may be interested