selectpdf c# example : Convert excel to pdf with hyperlinks control software system azure windows .net console WATUsageGuide9-part895

Design Studio User's Guide
89
The Pattern Editor Window
In the Pattern Editor Window, you can enter a pattern and test whether it matches the test input text in
the "Input" panel. When you open the window, Design Studio will usually have set the test input text to
the text that the pattern will be matched against if the given step is executed on the current input robot
state. However, you can also edit the test input text yourself, to try the pattern on other inputs. To test the
pattern, click the "Test" button. The result of the matching will then be shown in the "Output" panel.
The "Symbol" button is very useful when you want to enter a special symbol in the pattern. When you
click it, a pop-up menu will be shown, from which you can choose the symbol to insert in the pattern. This
way, you don't have to memorize all the special symbols and their meanings.
For more  on  patterns,  consult  the reference  documentation  on  patterns  [../ref/robomaker/reference/
regularexpressions/RegularExpressions.html].
Expressions
An expression typically evaluates to a text. For example, the expression
"The author of the book " + Book.title + " is " + Book.author + "."
evaluates to the text "The author of the book Pet Sematary is Stephen King.", if the variables Book.title
and Book.author contain the texts "Pet Sematary" and "Stephen King", respectively.
You can also do numeric calculations within the expression. For example, if the variable Book.price
contains the price of a book, you can multiply this with 100 using the following expression:
Book.price * 100
The table below provides an overview of the most commonly used sub-expression types. For a complete
overview of all sub-expression types available, see the reference documentation on expressions [../ref/
robomaker/reference/expression/Expression.html].
Convert excel to pdf with hyperlinks - insert, remove PDF links in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Free C# example code is offered for users to edit PDF document hyperlink (url), like inserting and deleting
adding hyperlinks to a pdf; add hyperlink to pdf
Convert excel to pdf with hyperlinks - VB.NET PDF url edit library: insert, remove PDF links in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Help to Insert a Hyperlink to Specified PDF Document Page
add url link to pdf; add hyperlink to pdf acrobat
Design Studio User's Guide
90
Table 3. The Most Commonly Used Sub-Expression Types
Sub-Expression Type
Notation
Meaning
Text Constant
"text" or >>text<<
Evaluates to the specified text, e.g. "Stephen King",
or >>Stephen King<<.
Variables
variablename.attributename
Evaluates to the value of the specified variable, e.g.
"Book.author" might evaluate to "Stephen King".
Current URL
URL
Evaluates to the URL of the current page.
Subpattern Match
$n
Evaluates to the text matched by subpattern n in an
associated pattern (if any). For example, this is used
in the Advanced Extract data converter, as shown
below. $0 evaluates to the text matched by the entire
pattern.
Function
func(args)
Evaluates the specified function by passing it the
specified arguments and converting its result to a
text.
Note that you can specify a text constant using either the quote notation or the >>text<< notation, for
example "Stephen King" or >>Stephen King<<. If you use the quote notation, and you want a quote
character to appear inside the text, you have to write it as two quote characters. For example, write "This
is some ""quoted"" text" to get the text "This is some "quoted" text". If you use the >>text<< notation,
anything can appear inside the text, except ">>" and "<<". Thus, you can write quotes directly, as in
>>This is some "quoted" text<<. The >>text<< notation is useful for long texts that contain many quote
characters, such as HTML.
The following table shows the most commonly used functions in expressions. For a complete overview
of all functions available, see the reference documentation on expressions [../ref/robomaker/reference/
expression/Expression.html].
Table 4. The Most Commonly Used Sub-Expression Functions
Function
Meaning
toLowerCase(arg)
Converts the argument to lower case.
round(arg)
Rounds the argument to the nearest integer
Example: The expression "The discount is " + round((Item.oldPrice - Item.newPrice) / Item.oldPrice) +
"%."
evaluates to "The discount is 10%." when the item's old price is $99.95 and the new price is $89.95.
It is recommended that you experiment with expressions on your own. The best way to experiment with
expressions is to launch Design Studio, select the Extract action for the current step, and then add an
Advanced Extract data converter. Click the  icon to configure the data converter. This opens the Advanced
Extract Configuration Window shown below.
VB.NET PDF Convert to HTML SDK: Convert PDF to html files in vb.
Embed PDF hyperlinks to HTML links in VB.NET. Available zoom setting (fit page, fit width). .NET component to convert adobe PDF file to html viewer.
pdf link; clickable pdf links
C# PDF Convert to HTML SDK: Convert PDF to html files in C#.net
Embed PDF hyperlinks to HTML links. Our PDF to HTML converter library control is a 100% clean .NET which is designed to help .NET developers convert PDF to HTML
adding a link to a pdf; adding hyperlinks to pdf documents
Design Studio User's Guide
91
The Advanced Extract Configuration Window
In the example shown, note the use of the $n notation to extract parts of the input text. Try to type your
own input text into the text area to the left, your own pattern into the "Pattern" property, and your own
expression into the "Output Expression" property. You can follow the result in the right area, while typing
the expression.
VB.NET PDF Page Replace Library: replace PDF pages in C#.net, ASP.
to svg, C#.NET convert PDF to text, C#.NET convert PDF to images to, VB.NET PDF, VB.NET Word, VB.NET Excel, VB.NET Able to replace all PDF page contents in VB.NET
pdf link to attached file; pdf edit hyperlink
VB.NET PDF Thumbnail Create SDK: Draw thumbnail images for PDF in
svg, C#.NET convert PDF to text, C#.NET convert PDF to images VB.NET PDF, VB.NET Word, VB.NET Excel, VB.NET an easy work and gives quick access to PDF page and
add hyperlink pdf document; add a link to a pdf
Design Studio User's Guide
92
Also, try to click the "Edit..." button to the right of the expression field. This opens the Expression Editor
Window shown below.
The Expression Editor Window
In the Expression Editor Window, you can enter an expression and test what it evaluates to. If the
expression is associated with a pattern, as in the Advanced Extract data converter, the result of matching
the pattern against the current input text will be shown in the "Input" panel. You can see whether the pattern
matches, and if so, what subpattern matches your expression can refer to using the $n notation. Note that
the testing functionality is not available everywhere in Design Studio.
Click the "Expression" button to open a useful pop-up menu, from which you can choose among the
available sub-expression types and functions. This way, you don't have to memorize all of these.
For more on expressions, consult the reference documentation [../ref/robomaker/reference/expression/
Expression.html].
Working with Projects and Libraries
When you are working in Design Studio you are always working with projects and you may have any
number of projects open at any time. The purpose of a project is to develop a library containing a collection
of robots and the files required by these robots. Typically, you create a project for each separate usage
of robots, for example one project for each application in your company that uses robots. Two projects
cannot share files, e.g. a type always belongs to one project or in other words the scope of a type is the
project it belongs to.
A project is a folder located anywhere in the file system. The project folder can have any name you want,
but must contain the following sub-folder:
Library — this folder contains the library of the project
.NET PDF SDK | Read & Processing PDF files
Able to convert PDF documents into other formats (multipage TIFF, JPEG, etc Include extraction of text, hyperlinks, bookmarks and metadata; Advanced document
add links pdf document; add link to pdf file
PDF Image Viewer| What is PDF
with advanced capabilities, such as text extraction, hyperlinks, bookmarks and easy-to-use interface enabling you to quickly convert your PDF images into
add hyperlink to pdf online; add url pdf
Design Studio User's Guide
93
In the Library folder, you should place all robot files, type files, and other files used by the robots, such
as files that are loaded from the robot library. You can organize the files in the Library folder in any
way you want, using sub-folders as appropriate.
The example below shows a project folder named NewsAndStocksProject for a project that develops
a robot library for extracting news from news sites and stock quotes from stock sites.
Table 5. An Example of a Project for News Extraction
NewsAndStockProject/
Library/
News/
CNN.robot
Reuters.robot
News.type
Stocks/
Nasdaq.robot
NYSE.robot
Stocks.type
As you can see, the project has a Library folder with robot and type files divided into News and Stocks
sub-folders.
When you close Design Studio it will remember which projects and files were open and the next time you
open Design Studio it will open these again.
Current Project
In Design Studio you can work with many projects, but the other applications in Kapow Katalyst, e.g.
RoboServer, always works on a specific project, referred to as the current project. When you install
Kapow Katalyst, a default project will be created for you and selected as current. If you open Design Studio
the first time this current project will be the only opened project. If you close all projects before you close
Design Studio then the next time you open Design Studio again it will open the selected current project.
You can change the current project selection by opening the Settings application, specifying the path to
your new project folder in the Current Project Folder property in the "Project" tab, and then clicking OK
to close Settings.
Manipulating Robot Projects
To create a new project you simply choose the "New Project..." from the File menu. This will open the
New Project dialog as shown below. Here you enter a name and location for your new project. When you
press Finish on the dialog a new project will be created in the location you specified where the name of
the project folder will be the name you gave for the project. If you entered the name MyProject and the
location: C:/KapowProjects then the following folders will be created:
c:/KapowProjects/MyProject
c:/KapowProjects/MyProject/Library
To open an existing choose the "Open Project..." from the File menu and choose the project folder of your
existing project in the Open Project dialog that opens up.
To close a project again right click on the project in the Projects View and choose Close from the popup
menu. You can also close all projects from the File menu.
Design Studio User's Guide
94
Robot Library Files
When you want to distribute and deploy your robot library in a runtime environment, such as RoboServer,
you can pack the robot library into a single file called a robot library file. You can do this by choosing
Create Robot Library File from the Tools menu in Design Studio. This will pack together all files contained
in the robot library of the file in the current editor and save the result as a single file having a name that you
choose. Note that you should save all your open files, such as robots and types, before doing this, to get the
latest changes into the robot library file. You can then make the robot library file available to RoboServer
and execute robots from the robot library. See the RoboServer User's Guide for more information on how
to do this.
As mentioned, a robot library may contain files used by the robots. You can load a page from a file in
the robot library that the robot belongs to. This is done using the special non-standard protocol named
library. For example, if the file MyPage.html is located in the folder MyFolder in the robot library
folder, you can load from that file using this URL:
library:/MyFolder/MyPage.html
This will work no matter whether the robot library is represented as a folder or has been packed into a
robot library file.
Interacting with Databases
Interaction with databases is often required. The following subsections explains when and how that is done
from Design Studio
Database Mappings
Robots may need to access databases through various database accessing steps (e.g. "Store In Database"),
and in order for them to do so, a reference to a named database must be provided for these steps. The
named databases used by a robot must be accessible from the RoboServers in order for the robot to be
executed successfully on RoboServers.
While designing robots in Design Studio, however, it is often convenient to use local databases that will
not be available from the RoboServers. Rather than having to remember to change the named databases
on the various database accessing steps before deploying a robot, Design Studio has an extra layer of
abstraction to help overcome this problem; the database mapping. A database mapping maps a named
database in a database accessing step of a robot to a Design Studio database. As long as the robot is executed
from within Design Studio the named databases of the database accessing steps are mapped to the Design
Studio databases specified by the mappings. The user of Design Studio can thus use local databases while
designing and testing robots without having to change the referenced named databases of the database
accessing steps before deploying the robots.
Using database mappings also makes it easy for the user of Design Studio to make the robot store values
in a different database - it is simply a matter of reconfiguring the mapping to make it point to a different
database.
Generally, working with database mappings in Design Studio is quite simple, but there are a few things
which are nice to know.
A database mapping is a small configuration file defining simply which database to map to as well as
whether Design Studio should display various warnings helping the user correctly configure the mapping
and the referenced database. The name of the mapping is the file name of the configuration file. This means
Design Studio User's Guide
95
that if you create a mapping with the file name "objectdb", the database that the mapping points to will
be accessible under the name "objectdb" in robots.
You can create a database mapping in several ways:
• In the File menu, select "New Database Mapping". This will open a wizard which prompts for a name
for the mapping file and displays the mapping configuration options. When the wizard is finished, the
mapping will be created in the selected project and folder and will now be usable in robots.
• In the database view, right-click the database that you wish to associate with a project, select "Add to
Project" and simply select the project to add the database to. This will prompt you for a name to use for
the database mapping (the mapping file name and the name that the database will be accessible under).
Notice that a name is suggested. This is the default database name, and the name used to access this
database in other Kapow Katalyst applications than Design Studio.
• Through the database warning system. When, in Design Studio, you open a robot using a database that
you do not have a mapping for, a warning will be displayed informing you of this and asking whether
you want to create a mapping with the name of the database referenced in the robot. This allows you
to, for instance quickly run robots sent to you from other developers who have other databases defined
- without modifying the robots.
Types and Databases
If your robot outputs the values of variables to a database, the types of these variables need to define which
attributes must be part of the key that is used when storing the values in the database. The Database Key
for the value is calculated as a secure hash of the attributes that are marked to be part of the Database Key.
You may also specify a Storage Name as part of your attribute definition. This is an optional different
name to use when storing the attribute.
When saving values to database storage using the Store in Database action, it is necessary that the
appropriate database table exists in an available database. This means that it is a requirement that the table
contains columns matching the attributes of the type.
See Creating and Deleting Database Tables for more information on how Design Studio can assist you
in setting up the appropriate database tables. Consult the Settings in Design Studio section for more
information on setting up database connections in Design Studio.
Database Warnings
Database warnings help you configure the database mappings, the robots and the referenced databases
correctly. The warning system automatically monitors for potential problems such as type validation issues,
missing tables, or missing database mappings and if an issue arises, a warning message is displayed in a
status bar (see figure below).
Design Studio User's Guide
96
Invalid Type in the Type Editor
Also, the warning system will monitor which databases names are used in robots and assist in creating any
missing mappings. The system also perform a shallow monitoring of the databases which means that it
does not constantly ping the databases to see if they are online, but rather updates the information when
it needs it. This means that the system caches the table structures of the relevant database tables and uses
this cache to compute any warnings in order to prevent an excessive number of database queries. The
cache will be re-created when Design Studio knows something has happened that requires it. Any external
modifications of the database tables or the database availability are not monitored. There is, however, the
option of re-building the database cache for a single database or for all databases. This option is available
through the database view, and through some warnings when relevant. For instance, to re-create the cache
for a database, right-click it in the Database View and select "Refresh".
Creating and Deleting Database Tables
If you want to store your extracted variable values in a database, you should create matching tables in the
database. Design Studio can assist you in creating these tables. It does so by examining the types you have
created, and generating SQL that is appropriate for creating a new database table. Thus, when storing the
value from a variable of some type, tables representing that type must be present in the database.
In the Tools menu, select Create Database Table () to open a window where you can choose the name of
your database, the type of database, and the type(s) that you want to create the table(s) for. By clicking
Generate SQL, you will be shown a suggestion for an SQL statement for creating the table(s), which you
then have the option to modify as well as execute or save.
The SQL shown is a recommended suggestion — you can change the statement to fit your needs,
if  required.  For  example,  you  might  change  the  column  type  for  a  Short  Text  attribute  from
Design Studio User's Guide
97
"VARCHAR(255)" to "VARCHAR(50)" in order to conserve database space, or you could add an auto-
incrementing primary key. However, under normal circumstances, you should not modify the table name
or any of the column names, nor remove any of the columns.
Note: If the database table already exists, it will be dropped from the database when executing the SQL
(because of the "DROP TABLE" statement at the beginning).
Storing Data in Databases
This section explains how the database storage of Kapow Katalyst works.
ObjectKey
The tables you create for a type in a database will have a column for each of the attributes in your
type, plus an additional 7 house-hold fields, named: ObjectKey, RobotName, ExecutionId, FirstExtracted,
LastExtracted, ExtractedInLastRun, and LastUpdated. The most important of these is the ObjectKey, as
it is the primary key for the table.
Note: The reason for the name 'ObjectKey' is to be found in the terminology previously used in Kapow
Katalyst. Previously, types and variables were called 'objects'. Refer to this upgrade guide for more
information. To adhere to the new terminology, 'ObjectKey' should be called 'ValueKey'. Renaming it
would cause quite a lot of backward compatibility problems, though, and therefore it has been allowed
to keep its old name.
The ObjectKey for a type is what uniquely identifies values extracted from variables of that type when
stored in a database. You therefore have to figure out what uniquely identifies values of the type. If you
are building a car repository, the VIN number may be enough to provide unique identification of each car.
If you are collecting baseball results, you may need the year, the team names, the ballpark, the date, to
uniquely identify each match.
As you build the type you can select how the ObjectKey is going to be calculated. This is done by checking
the "part of database key" option when creating a new attribute. For our car example the VIN number
would be the only attribute marked part of the database key, for the baseball match example, the attributes
year, team names, ballpark, date, would all be marked as part of database key.
The robot developer may also specify the Key directly on the Store in Database action, if he wishes to
override the default algorithm defined on the type.
The attributes which are not Part of Database Key are sometimes referred to as non-key fields. The car
could for example have a price attribute, but even if the price changed we would still consider it the same
car.
Store in Database
Kapow  Katalyst  provides  3  actions  for  managing  values  in  a  database:  Store  in
Database  [../ref/robomaker/reference/stepaction/StoreInDatabaseStepAction.html],  Find  in  Database
[../ref/robomaker/reference/stepaction/StoreInDatabaseStepAction.html], Delete  from  Database  [../ref/
robomaker/reference/stepaction/DeleteFromDatabaseStepAction.html]. The Find and Delete actions are
rather trivial, but Store in Database does more than just store the value.
Store in Database may either insert a new value (of some type) into the table, or update an existing value
which was previously stored. Here is a list of exactly what happens.
1. When storing the value of some variable, the ObjectKey is calculated based on the variable's values
of the attributes which in the variable's type are marked Part of Database Key, or, alternatively, if the
robot developer specifies a key on the action, this key is used instead.
Design Studio User's Guide
98
2. Using the calculated key, a check is made to see if the value already exists in the database.
3. If the value does not exist, a new row is inserted into the database (under this ObjectKey).
4. If the value already exists, it is updated, that is, all the non-key attributes are written to the table (under
this ObjectKey).
House-hold fields
Whenever a value is inserted all the 7 house-hold fields are updated. On update, only some of the fields
change. The table below provides an overview.
Table 6. The 7 house-hold fields, and when they change
Field
Description
Changed on
ObjectKey
The primary key for this value
Insert
RobotName
The name of the robot which stored this value
Insert and Update
ExecutionId
The execution id for the robot execution which stored this
value
Insert and Update
FirstExtracted
The first time the value was stored.
Insert
LastExtracted
The last time the value was stored.
Insert and Update
LastUpdated
The date when the value was last updated.
Update*
ExtractedInLastRun
If the value was extracted in the latest run (uses 'y' and 'n'). Insert and Update*
After each robot execution (in which the robot used Store in Database), all values that have previously
been collected by this robot, but have not been stored during this run will have ExtractedInLastRun set to
'n' and LastUpdated set to now, indicating that the value was not found on the website during the latest run.
Note: If a value was found in the previous run, but no non-key fields have changed, then LastUpdated
will not be updated. However, if the value was not found in the previous run, but in a run prior to that,
LastUpdated will be updated even if the non-key fields have not changed, as this means that the value was
deleted from the site and then reappeared again later.
Harvest Tables
The tables created by Kapow Katalyst are often referred to as harvest tables, as the robots are harvesting
data into these tables.
To find out what information was available on a website the last time the robot was run you can use SQL
like:
SELECT * FROM table WHERE ExtractedInLastRun = 'y'
However if you are running queries against a table at the same time as a robot is storing data into the table,
the result will be comprised of data from the previous run, mixed with whatever data the executing robot
has stored so far. Kapow therefore recommends that you copy the data out of the harvest tables, and into
a different set of production tables, so you can run your queries against a stable data set.
There are many solution where robots are used to store data in a database, but most of them fall under
one of the 3 scenarios listed below.
Documents you may be interested
Documents you may be interested