HANDLE.NET (Ver. 8.1) Technical Manual 
(This assumes that your intranet uses 192.168.x.x IP addresses.) 
Activate the new account: pg_ctl restart -D /
var/lib/pgsql/data
(You may, depending on your configuration, have to replace /var/lib/pgsql/data here and above with 
something else.) 
As an alternative to pg_ctl restart you may use: /etc/init.d/postgresql restart 
Create the database and make sure that it uses Unicode: createdb -O handleserver -E unicode 
handlesystem 
Now use the psql shell to create the tables, etc.: 
psql -h yourservername -U handleserver -d handlesystem  
create table nas (na bytea not null, primary key(na));  
create table handles (handle bytea not null, idx int4 not  
null, type bytea, data bytea, ttl_type int2, ttl int4, timestamp int4, refs text, admin_read bool, 
admin_write bool, pub_read bool,  
pub_write bool, primary key(handle, idx));  
create index dataindex on handles ( data );  
create index handleindex on handles ( handle );  
grant all on nas,handles to handleserver;  
grant select on nas,handles to public;  
\q 
The \q leaves psql. Note that many columns are bytes, not text.  
To backup and restore your handle database, use: 
to backup: pg_dump handlesystem -F t | gzip -c > handletable.tgz  
to list: zcat handletable.tgz | pg_restore -F t -l  
to restore: zcat handletable.tgz | pg_restore -F t 
(With "ddlutils", you can also backup / restore between various databases and XML files, which might 
be useful for some people.) 
To get a description of a database or table, in psql, use: 
\d (describes the whole database)  
\d tablename (describes one table) 
(As usual, use \q to leave psql again. Note that psql also has nice features like history (cursor 
up/down) and tab completion.) 
51 
Pdf thumbnail generator - software control dll:C# PDF Thumbnail Create SDK: Draw thumbnail images for PDF in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Thumbnail Generation with Various Options for Quick PDF Navigation
www.rasteredge.com
Pdf thumbnail generator - software control dll: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
www.rasteredge.com
HANDLE.NET (Ver. 8.1) Technical Manual 
To "defragment" and auto-tune for the current contents, use in psql: vacuum analyze handles; 
Do this from time to time, especially after larger writes, to gain speed. 
The config.dct section for a PostgreSQL database: 
"storage_type" = "sql"  
"sql_settings" = {  
"sql_url" = "jdbc:postgresql://YourServerIPAddress/handlesystem"  
"sql_driver" = "org.postgresql.Driver"  
"sql_login" = "handleserver"  
"sql_passwd" = "yourpassword"  
"sql_read_only" = "no"  
When you start the handle server, you must have the JDBC for your database in your classpath.   You 
can place the jar file (e.g. postgresql8jdbc3.jar) in the "lib" subdirectory of the unzipped Handle.Net 
distribution. 
For the GUI, as usual: 
bin/hdl-admintool 
On Windows:  bin\hdl-admintool.bat 
Note: These instructions are included courtesy of handle users at the Max Planck Institute for
Psycholinguistics
and Lund University Libraries NetLab
. It is possible that your settings may differ 
slightly from those in the examples above.  
52 
software control dll:How to C#: Generate Thumbnail for Word
VB.NET How-to, VB.NET PDF, VB.NET Word, VB.NET Excel NET Twain, VB.NET Barcode Read, VB.NET Barcode Generator, view less. How to C#: Generate Thumbnail for Word.
www.rasteredge.com
software control dll:How to C#: Set Image Thumbnail in C#.NET
VB.NET How-to, VB.NET PDF, VB.NET Word, VB.NET Excel NET Twain, VB.NET Barcode Read, VB.NET Barcode Generator, view less. How to C#: Set Image Thumbnail in C#.NET
www.rasteredge.com
HANDLE.NET (Ver. 8.1) Technical Manual 
9 Handle Clients & the Client Library (Java Version) 
The Handle.Net software includes a Client Library for Java development.  Developers wishing to 
produce applications incorporating handle clients but not using Java may wish to consider the HTTP 
REST API; see Chapter 14. 
Communicating with the Handle System is accomplished by sending requests to servers which then 
return a response. To resolve a handle, a ResolutionRequest is sent to a server. To create a handle, a 
CreateHandleRequest is sent. To modify, remove, or add values to (or from) a handle, a 
ModifyValueRequest, RemoveValueRequest, or AddValueRequest is sent to a server.  
There is an object for each of these requests in the net.handle.hdllib java package. One way to send 
these messages to a server is to use a HandleResolver object which is located in the net.handle.hdllib 
package. For most messages, the HandleResolver object will locate the server that your messages 
should go to, send them, and return the response that was sent by the server. The following is an 
example that shows one way of programmatically resolving a handle:  
import net.handle.hdllib.*; 
... 
// Get the UTF8 encoding of the desired handle. 
byte someHandle[] = Util.encodeString("45678/1"); 
 
// Create a resolution request. 
// (without specifying any types, indexes, or authentication info)  
ResolutionRequest request = new ResolutionRequest(someHandle, null, null, null);  
 
HandleResolver resolver = new HandleResolver(); 
  
// Create a resolver that will send the request and return the response.  
AbstractResponse response = resolver.processRequest(request); 
  
// Check the response to see if the operation was successful.  
if(response.responseCode == AbstractMessage.RC_SUCCESS) {  
 
// The resolution was successful, so we'll cast the response  
// and get the handle values.  
HandleValue values[] =((ResolutionResponse)response).getHandleValues();  
for (int i=0; i < values.length; i++) { 
System.out.println(String.valueOf(values[i])); 
 
To simply resolve a handle, the much simpler resolveHandle method of the HandleResolver can be 
used, as shown below. 
import net.handle.hdllib.*; 
... 
HandleValue values[] = new HandleResolver().resolveHandle("12345/1", null, null);  
 
for (int i=0; i < values.length; i++){ 
System.out.println(String.valueOf(values[i]));  
53 
software control dll:How to C#: Generate Thumbnail for PowerPoint
VB.NET How-to, VB.NET PDF, VB.NET Word, VB.NET NET Twain, VB.NET Barcode Read, VB.NET Barcode Generator, view less. How to C#: Generate Thumbnail for PowerPoint.
www.rasteredge.com
software control dll:VB.NET Image: Program for Creating Thumbnail from Documents and
language. It empowers VB developers to create thumbnail from multiple document and image formats, such as PDF, TIFF, GIF, BMP, etc. It
www.rasteredge.com
HANDLE.NET (Ver. 8.1) Technical Manual 
The Handle.Net software distribution include a "simple" package with command line tools to create, 
delete, and list handles. It also includes programs to home a prefix and trace handle resolution. These 
programs provide a good starting point and simple guide to developing Java-based custom handle 
client software with the API. Each example program includes steps needed to form a handle request 
to send to a handle server. The programs are run from the command line and require certain 
arguments. The following commands should be run from the directory containing the "bin" directory.  
(1)  Create Handle:  
Simple tool for handle creation. It uses public key authentication.   
bin/hdl-create <auth handle> <auth index> <privkey> <handle> 
On Windows: 
bin\hdl-create.bat <auth handle> <auth index> <privkey> <handle> 
(2)  Delete Handle:  
Simple tool for handle deletion. It uses public key authentication.  
bin/hdl-delete <auth handle> <privkey> <filename_of_file_with_handles_to_delete> 
On Windows:
bin\hdl-delete.bat <auth handle> <auth index> <privkey> <handle> 
(3)  List Handles:  
Simple tool for listing handles. It uses public key authentication.  
bin/hdl-list <auth handle> <auth index> <privkey> <prefix> 
On Windows: 
bin\hdl-list.bat <auth handle> <auth index> <privkey> <prefix> 
(4)  Trace handle:  
Simple tool for resolving a handle.  
bin/hdl-trace <handle> 
On Windows: 
bin\hdl-trace.bat <handle> 
(5)  Home Prefixes:  
Simple tool for homing Prefixes. It uses public key authentication. 
bin/hdl-home-na <auth hdl> <privkey> <server ip> <NA handle>  
On Windows: 
bin\hdl-home-na.bat <auth hdl> <privkey> <server ip> <NA handle> 
54 
software control dll:How to C#: Generate Thumbnail for Raster
VB.NET How-to, VB.NET PDF, VB.NET Word, VB.NET Excel NET Twain, VB.NET Barcode Read, VB.NET Barcode Generator, view less. How to C#: Generate Thumbnail for Raster
www.rasteredge.com
software control dll:Create Thumbnail in Web Image Viewer | Online Tutorials
PDF Generator. PDF Reader. Twain Scanning. DICOM Reading. Here are some functions for image and documents thumbnail creating in HTML Document Image Viewers:
www.rasteredge.com
HANDLE.NET (Ver. 8.1) Technical Manual 
10 Configuring an Independent Handle Service 
An independent or private handle service (such as a service maintained behind a firewall that is not 
publicly accessible) operates without contacting the Global Handle Registry.  Configuring an 
independent service requires changes to the client for resolution to occur, and to the server for 
enabling authentication, homing and administrative tasks to be performed without the GHR. 
Resolution Service Providers who wish to operate an independent handle service must notify their 
prefix administrator in advance.  
10.1 Client Configuration Details 
This section explains how to configure the java client software to resolve handles locally, either 
through a resolution/caching server, or by directing specific prefixes to a certain service/site. 
To specify a local handle server that should be used to process all resolution requests, follow these 
instructions: 
Copy the siteinfo.json file that describes the site/server where all resolution should be performed into 
a file called "resolver_site" in the ".handle" sub-directory of the user’s "home" directory. This will 
cause all non-administrative requests to be sent through the site described by siteinfo.json. This 
should make resolution faster for organizations that can use the resolution server as a shared cache.  
By default, no administrative messages are sent through this site (because administration must be 
done directly with the site that is responsible for each prefix and cannot be "tunneled"). To force all 
messages (including administration messages) to go to the local resolution server described above, 
the user must specify the prefixes that are "homed" on the resolution server. All other prefixes will 
bypass the local resolution server. To specify the prefixes, do the following: 
Create a file called "local_nas" in the ".handle" sub-directory of the users home directory. This file 
should contain one prefix handle on each line (e.g., "0.NA/11234"), encoded in UTF8  (ASCII is OK as 
long as there are no special characters).  Every request for a handle having a prefix contained in this 
file will be sent to the local resolution site. If no resolver_site file is provided, the local_nas file is 
ignored. 
A line containing a single asterisk * in the local_nas file will indicate that requests for all
handles 
should be sent to the local resolution site. 
If there is more than one local handle gateway the methods described in the previous sections will not 
work.  The following is an advanced technique.  In this case a local_info or local_info.json file must be 
placed in the .handle directory on each local client machine.  The local_info file can be given in JSON 
format, as a JSON array, each element of which is an object indicating which naming authorities are 
managed by a site.  Those objects have two properties: "nas", a JSON array of strings, each of which is 
the prefix handle of a naming authority; and "site", a JSON object representing a site.  The format of 
55 
software control dll:Create Thumbnail Winforms | Online Tutorials
PDF Generator. PDF Reader. Twain Scanning. It is easy to integrate robust thumbnail creating & viewing capabilities into your Windows Forms applications.
www.rasteredge.com
software control dll:How to C#: Overview of Using XImage.Raster
Empower to navigate image(s) content quickly via thumbnail. Able to support text extract with OCR. You may edit the tiff document easily. Create Thumbnail.
www.rasteredge.com
HANDLE.NET (Ver. 8.1) Technical Manual 
the site object is the same as that used by the siteinfo.json file. The script "hdl-convert-siteinfo" can 
be used to convert siteinfo between binary format (as it is stored in handle values) and JSON format. 
In previous versions, the local_info file could only use a binary format. The binary format continues to 
function.  A script "hdl-convert-localinfo" has been provided to convert between the binary format 
and the JSON format. 
Here is an example of a local_info.json file.  One site is used for handles under 0.NA/1, a different site 
is used for handles under 0.NA/3, and both sites are used for handles under 0.NA/2. 
  { 
    "nas": [ "0.NA/1", "0.NA/2" ], 
    "site": { 
      "version": 1, "protocolVersion": "2.1", "serialNumber": 3, 
      "primarySite": false, "multiPrimary": false, 
      "servers": [ 
        { 
          "serverId": 1, 
          "address": "132.151.20.9", 
          "publicKey": { 
            "format": "base64", 
            "value": 
"AAAAC0RTQV9QVUJfS0VZAAAAAAAVAJdgUI8VIwvMspK5gqLrhAvwWBz1AAAAgQD9f1OBHXUSKVLfSpwu7OTn9hG3UjzvR
ADDHj+AtlEmaUVdQCJR+1k9jVj6v8X1ujD2y5tVbNeBO4AdNG/yZmC3a5lQpaSfn+gEexAiwk+7qdf+t8Yb+DtX58aophU
PBPuD9tPFHsMCNVQTWhaRMvZ1864rYdcq7/IiAxmd0UgBxwAAAIEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0Hg
mdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqh
RkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoAAACAWEDRKsfiT3pY+zhrq6bROhVJ+H9ezrs0yjKjweWwklXsQ2HA2XyCh
c0J9eHkL3bLwsG1FpM+vIQ9jG+M3qtASX91oV+je1B3RxmAdnsRbcZ3UsXVn7/LW2K1nABchzTqCV6FqPodufxzj6Rp9ht
8Njc99eMwmnjdxHjZAHONwSI=" 
          }, 
          "interfaces": [ 
            { "query": true, "admin": true, "protocol": "TCP", "port": 2641 }, 
            { "query": false, "admin": false, "protocol": "UDP", "port": 2641 }, 
            { "query": true,  "admin": true, "protocol": "HTTP", "port": 8000 } 
          ] 
        } 
      ] 
    } 
  }, 
  { 
    "nas": [ "0.NA/2", "0.NA/3" ], 
    "site": { 
      "version": 1, "protocolVersion": "2.1", "serialNumber": 5, 
      "primarySite": false, "multiPrimary": false, 
      "servers": [ 
        { 
          "serverId": 1, 
          "address": "132.151.1.179", 
          "publicKey": { 
            "format": "base64", 
            "value": 
"AAAAC0RTQV9QVUJfS0VZAAAAAAAVAJdgUI8VIwvMspK5gqLrhAvwWBz1AAAAgQD9f1OBHXUSKVLfSpwu7OTn9hG3UjzvR
ADDHj+AtlEmaUVdQCJR+1k9jVj6v8X1ujD2y5tVbNeBO4AdNG/yZmC3a5lQpaSfn+gEexAiwk+7qdf+t8Yb+DtX58aophU
PBPuD9tPFHsMCNVQTWhaRMvZ1864rYdcq7/IiAxmd0UgBxwAAAIEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0Hg
56 
HANDLE.NET (Ver. 8.1) Technical Manual 
mdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqh
RkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoAAACBAI4u2BolfvcyIPPtuSaRFtG6NVvqF4BONxHznO3Cg8gtCOG+nt81e
/AFrc3XLA7en+iXMt8LCaZnoxC0XhLa/2vh74MynSoG8iYRHv6D2mTYKltsyR41VavyikoOZ5df6tDHMsibEcQ1htdGO02
gAUIj63cVcTO0Nh8MSfd5ODBu" 
          }, 
          "interfaces": [ 
            { "query": true, "admin": true, "protocol": "TCP", "port": 2641 }, 
            { "query": false, "admin": false, "protocol": "UDP", "port": 2641 }, 
            { "query": true,  "admin": true, "protocol": "HTTP", "port": 8000 } 
          ] 
        } 
      ] 
    } 
  } 
 
 
10.2 Server Side Configuration 
By default, authentication, homing, and administering handles on a handle server require your handle 
server to communicate with the Global Handle Registry. This section describes how to configure your 
handle server so that administration of handles can be done without communicating with the Global 
Handle Registry. 
(1) Modify the config.dct file: 
"server_admin_full_access" = "yes" 
"allow_na_admins" = "no" 
(2) To home a prefix on your handle server without contacting the Global Handle Registry, add the 
prefix to the handle storage using the "auto_homed_prefixes" configuration option, or else the 
DBTool (See Section 6.1, DBTool
).  
(3) Once a prefix has been homed, create a new admin handle for it. (The default admin handle is the 
prefix itself. This default value cannot be used because it requires communication with the Global 
Handle Registry.) Create the new admin handle using the DBTool, and associate a secret key 
(password) with it at index 300. For example, if your prefix is 1234, add 0.NA/1234 to the homed 
prefixes using the DBTool, then create the new admin handle 1234/ADMIN (use upper case when 
using the DBTool) with a secret key at index 300.  
(4) Edit the config.dct file to change the "server_admins" entry to the new admin handle. 
(5) Restart the server. 
57 
HANDLE.NET (Ver. 8.1) Technical Manual 
11 Template Handles 
A single template handle can be created as a base that will allow any number of extensions to that 
base to be resolved as full handles, according to a pattern, without each such handle being 
individually registered. This would allow, for example, the use of handles to reference an unlimited 
number of ranges within a video without each potential range having to be registered with a separate 
handle. If the pattern needs to be changed, e.g., the video moves or a different kind of server is used 
to deliver the video clips, only the single base handle needs to be changed to allow an unlimited 
number of previously constructed extensions to continue to resolve properly. 
When a server receives a resolution request for a handle which is not in its database, it tries to 
determine if there is template for constructing the handle values.  
11.1 The Template Delimiter 
First, it looks for a template delimiter
, which is a string dividing the original handle into a base
and an 
extension
. The delimiter is generally defined in an HS_NAMESPACE value of the prefix handle 
0.NA/prefix.  
An example:  
<namespace> 
<template delimiter="@" /> 
</namespace> 
If there is no HS_NAMESPACE value, the server will use the "namespace" value in the "server_config" 
section of its config.dct configuration file. If there is no value, or if no template delimiter is defined in 
the information (either  from the prefix or the config file) the server will use the "template_delimiter" 
value in the "server_config" section of config.dct. 
If a delimiter is found, the server looks up the base handle (i.e., the part before the delimiter). For 
example, in cnri.test.1/weather@foo, with delimiter @, the base handle is cnri.test.1/weather and 
the extension is foo.  
A delimiter of "/" will enable an entire prefix to be templated. In this case the base handle is 
considered to have no values.  
11.2 Template construction 
Any HS_NAMESPACE value in the base handle will override any prefix HS_NAMESPACE info — in 
particular, templates can be put directly into the base handle.  
If there is a namespace, it is used to construct the values of the template handle. Each <template> 
element within the namespace is applied in order.  If no template is found at all, the server returns 
58 
HANDLE.NET (Ver. 8.1) Technical Manual 
"handle not found".  
(1)The template XML itself will contain <value> tags defining the handle values of the eventual 
result. The <value> tags can specify index, type, and data using attributes. The values of these 
attributes can refer to the parameters "${handle}", "${base}" and "${extension}". Data can 
also be specified as the contents of the <value> tag, instead of as an attribute.  
(2)Some <value> tags may only be conditionally part of the constructed handle; these are 
enclosed in <if> tags. The only tests useable in an <if> are string equality and 
regular-expression matching. With a regular-expression match, various submatches can be 
referred to in enclosed values with syntax like "${extension[2]}". There is also an <else> tag.  
Details of <if> syntax:  
o
value attribute is some parameter name (e.g., handle, base, extension; inside of a 
<foreach>, index, type, or data). The syntax value="extension[2]" works inside a 
nested if.  
o
parameter attribute is the name of the parameter used to refer to submatches. 
Default is same as value.  
o
test attribute is "equals" or "matches"  
o
negate="true" negates the test  
o
expression is the string used for equality comparison or RE matching.  
(3)Any <notfound/> tag will cause the handle server to return "handle not found".  
(4)With <def parameter="param"> ... </def> a new parameter ${param} can be defined. The 
value of the parameter is obtained by processing the contents of the <def> tag as a template. 
The data of any constructed handle value if the definition of the parameter. The simplest 
example is <def parameter="param"><value data="foo"/></def> which defines ${param} to 
be foo.  
(5)Finally, it is possible to produce a value or values for each value already in the base handle. 
This is useful for having template handles which are identical to the base handle except 
perhaps for transforming the data of some particular handle value (e.g. a URL). Any values 
enclosed in a <foreach> tag will be constructed for each value of the base handle. Within the 
<foreach>, the parameters "${index}", "${type}", and "${data}" can be used to refer to the 
original handle value from the base handle. Within a <foreach>, <value> tags can omit type or 
data attributes, in which case the type or data from the original value will be used unchanged.  
Here is an example.  
<namespace> 
<template delimiter="@"> 
<foreach> 
<if value="type" test="equals" expression="URL"> 
59 
HANDLE.NET (Ver. 8.1) Technical Manual 
<if value="extension" test="matches"  
expression="box\(([^,]*),([^,]*),([^,]*),([^,]*)\)"  parameter="x"> 
<value data= 
"${data}?wh=${x[4]}&amp;ww=${x[3]}&amp;wy=${x[2]}&amp;wx=${x[1]}"/> 
</if> 
<else> 
<value data="${data}?${x}" /> 
</else> 
</if> 
<else> 
<value /> 
</else> 
</foreach> 
</template> 
</namespace> 
This example produces exactly one value for each value in the base handle. If the type of the original 
value is "URL", we produce a new value with changed data; the new data depends on the format of 
the extension. An extension of the form "box(#,#,#,#)" produces a new URL with the four values to be 
used as query parameters; any other extension is appended as written onto the original URL. If the 
type of the original value is not "URL", the original value is used unchanged.  
For example, suppose we have the above HS_NAMESPACE value in 0.NA/1234, and 1234/abc contains 
two handle values: 
1
URL
http://example.org/data/abc  
2
EMAIL
contact@example.org 
Then 1234/abc@box(10,20,30,40) resolves with two handle values: 
1
URL
http://example.org/data/abc?wh=40&ww=30&wy=20&wx=10 
2
EMAIL
contact@example.org 
For more on the RE language, see 
http://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html.  
11.3 Template handles by reference 
XML of the form  
<template ref="10:abc/def" /> 
will be taken to refer to the handle value of index 10 of handle "abc/def". The data of the handle 
value is parsed as XML and interpreted as above. Too much recursion, or a "handle not found" result, 
any resolution error, or failure to parse the referenced tag, all lead to a "handle not found" result.  
60 
Documents you may be interested
Documents you may be interested