mvc return pdf file : Convert pdf into html code software control project winforms web page asp.net UWP LyrisDocumentation45-part1453

451
immediately follow the Tcl tag delimiters. For example: 
%% init ; ... some message-level Tcl code ... %% 
or 
%% before ; ... some message-level Tcl code ... %% 
Both of these tag types will be processed once for the entire message before the 
recipients are mail-merged. At this stage in the send, no recipient-level data is 
accessible and any attempts to execute recipient-level procedures or merge recipient-
level columns will result in an error.  
They will be processed again at the beginning of processing any retries of the message. 
The only difference between init tags and before tags is that init tags always return an 
empty string and before tags function as normal merge scripts. In Tcl, whatever the last 
string to be manipulated was is the return string of the script. For example: 
%% before ; set variable "some value"%% 
will return "some value" as if we had done: 
%% before ; set variable "some value" ; return $variable%% 
For this reason, the init tag was created. Any message-level initialization that does not 
require a string to be returned should be done in init tags. This will help guard against 
the inadvertent merging of data. before tags should be used for mail-merging text that 
only needs to be set once for the entire message. 
Recipient-Level Scripts 
Scripts that may return different results for each user are referred to as "recipient-level 
scripts" and a recipient's data is referred to as "recipient-level" data. This data is 
generally data from the members table but could be any data that is available via a join 
from the members table to any other accessible table. This join is done by sending to a 
subset where the join criteria has been defined as part of the subset. A "recipient-level" 
script requires no special tags. For example: 
%% set variable [merge EmailAddr_] ; return $variable %% 
Send-Completion Scripts 
When the current message send is completed or goes into retry mode, scripts defined 
as "after" scripts are executed. These scripts never have any impact on the content of 
the message because the message has already been sent by the time that these are 
executed. 
Recipient-level scripts do not require any special keywords. In general, recipient-level 
scripts should only be used for scripts or merging fields that could change from recipient 
to recipient. Recipient-level scripts can execute message-level Tcl procedures or use 
message-level data. The reverse is not true. 
Scripts to be run when the message is completed should be run in scripts using the tag 
Convert pdf into html code - software application cloud:C# PDF Convert to HTML SDK: Convert PDF to html files in C#.net, ASP.NET MVC, WinForms, WPF application
How to Convert PDF to HTML Webpage with C# PDF Conversion SDK
www.rasteredge.com
Convert pdf into html code - software application cloud:VB.NET PDF Convert to HTML SDK: Convert PDF to html files in vb.net, ASP.NET MVC, WinForms, WPF application
PDF to HTML Webpage Converter SDK for VB.NET PDF to HTML Conversion
www.rasteredge.com
452
"after". For example: 
%% after ; sql tag execute "insert into results ..." %% 
Error Handling and Debugging 
Tcl scripting in email messages is much different from programming in standard 
programming environments; normally when you make a mistake programming, that 
mistake isn't emailed to all of your customers! For this reason, there are some special 
debugging features built into ListManager. Even with these debugging features, it is 
recommended that you test your Tcl scripts with a test list. 
errormode 
One of the most useful debugging features is the errormode procedure. The most 
common form of this procedure is: 
%%init ; errormode notify your@emailaddr.ess%% 
As described in the previous section, the init part of this script indicates that this script 
should only be evaluated once at the beginning of the message send and should 
always return an empty string. 
The errormode procedure tells the Tcl processor to abort the message send when an 
error occurs and to send an error notification to the specified email address. To see 
where this might be useful, consider the following message text: 
%%init ; errormode notify your@emailaddr.ess%% 
Dear %%merge members_.FullName_%%, 
... 
In this case, the argument to merge has an error in the table name. In a normal 
message send, this would generate an error but the message would still continue to be 
send and other scripts processed. The result of a script with an error is normally an 
empty string. However, since the errormode procedure was used to set a notification 
address, the Tcl processor will stop processing this message and send a notification to 
the specified email address. This notification includes an error string that indicates what 
the error was and includes a copy of the script in which the error occurred. 
Other error modes are documented in the section ListManager Tcl Procedures
redirect 
Another useful debugging feature is the redirect procedure. The argument to redirect is 
an email address which will always override the email address of the actual recipients. 
This means that you can send to your list as normal and have all of the messages go to 
the address you specified and not the list. For example: 
%% 
init ; 
errormode notify your@emailaddr.ess ; 
redirect your@emailaddr.ess ; 
%% 
software application cloud:VB.NET PDF File Split Library: Split, seperate PDF into multiple
outputOps). Divide PDF File into Two Demo Code Using VB.NET. This outputOps). Split PDF Document into Multiple PDF Files Demo Code in VB.NET. You
www.rasteredge.com
453
This is useful for determining whether scripts execute properly for each member and 
whether the fields you expect to have data actually do. The problem with this feature is 
that if you are sending to a big list, you will get a lot of mail. You can use redirect as-is 
for small test lists, but for large production lists, it is best used in conjunction with the 
skip procedure. 
skip 
The skip procedure tells ListManager not to send to the current recipient. Along with 
some simple mathematics and some other Tcl procedures, you can have ListManager 
only send to every 1000th recipient. For example: 
%% 
init ; 
errormode notify your@emailaddr.ess ; 
redirect your@emailaddr.ess ; 
%% 
%%if { [recipindex] % 1000 != 0 } { skip }%% 
This form of testing is only recommended for advanced users. Most users should only 
test their scripts on test lists. 
ListManager Tcl Commands 
General Tcl Commands 
The following Tcl commands can be used in either message or recipient-level Tcl 
scripts. 
sql 
The sql Tcl command allows an administrator to execute an SQL statement and obtain 
the results. For security reasons, the administrator must login first using the login 
command. The sql command can be used to execute an SQL statement that returns a 
single result set or no results. That result set can have multiple columns and rows. SQL 
statements that return multiple result sets are not currently supported. The syntax for 
the SQL command is: 
%%sql (tag) (function) (function arguments)%% 
The first argument to the sql command is a tag that is used to identify the query when 
executing a statement and retrieving results. It allows multiple queries to be 
distinguished within a message. 
It is important to note that queries that are done within a message-level Tcl script are in 
a different scope than those in a recipient-level script. Therefore, the tags that are used 
to identify them are also in different scopes. A tag used in a message-level script will be 
distinct from the same tag used in a recipient-level script. A tag can be any string. 
A message-level script is executed only once for the message and a recipient-level 
script is executed for each recipient. The results of SQL queries executed in each of 
these scopes are stored separately and cannot be accessed from a different scope. In 
other words, recipient-level scripts cannot access the results of queries performed in a 
software application cloud:C# PDF Page Insert Library: insert pages into PDF file in C#.net
from the ability to inserting a new PDF page into existing PDF page processing functions, such as how to merge PDF document files by C# code, how to
www.rasteredge.com
software application cloud:C# PDF Convert to Images SDK: Convert PDF to png, gif images in C#
An advanced .NET control able to batch convert PDF documents to image formats in C#.NET. Turn multipage PDF file into single image files respectively in
www.rasteredge.com
454
message-level script. The reverse is also true. Since the results of message-level 
queries might be required at the recipient level, they can be stored in variables and 
accessed for recipients without any command call overhead. 
The process_merge_tags TclMerge command is useful anytime you want to merge 
content from another source and have the merge tags evaluated.  This is very useful for 
HTML mailings.  This will most likely be used in mailings, but can apply to other 
documents, such as hello and goodbye documents as well.  The process_merge_tags 
TclMerge command will evaluate any %%-delimited merge tags in the argument passed 
to it and return the results. This is useful in cases where you want to perform a mail 
merge on text that is retrieved from the database or via http. Note that these tags are 
evaluated as straight Tcl and therefore any ListManager Tcl language extensions will 
not work in these tags. For example, the "init" and "before" modifiers will not be 
evaluated properly and line unwrapping is not done. Additionally, any special merge 
tags that are not handled as normal Tcl procedures such as %%MemberID_%% will 
result in errors. You must use the %%merge MemberID_%% convention for all merged 
data fields. 
Example: 
%%process_merge_args [httpget http://myserver/newsletter.html]%% 
The second argument to the "sql" command is the name of the function that will be 
executed. These functions and their arguments are: 
sql (tag) execute (sql statement) 
This function will execute the specified SQL statement. 
sql (tag) numrows 
This function will return the number of rows that were retrieved. 
sql (tag) numcolumns 
This function will return the number of columns that were retrieved 
sql (tag) columnname (column index) 
This function will return the name of the column at the specified index. The index 
must be between 1 and N where N is the number of columns retrieved. 
sql (tag) data (column index) (row index) 
This function will return the data that corresponds to the specified column and row 
indices. The row index must be between 1 and M where M is the number of rows 
retrieved. If the row index argument is omitted, it will default to 1. If both the 
column index and row index are omitted, they will both default to 1. 
Here is an example of how to return all of the names and e-mail addresses of 
everybody on the current list in the form: 
Name = Full Name, Email = email@address 
%%! 
init 
errormode debug 
login youradmin@email.addr yourpassword 
%% 
software application cloud:VB.NET PDF Convert to Word SDK: Convert PDF to Word library in vb.
In order to convert PDF document to Word file using VB.NET programming code, you have to integrate following assemblies into your VB.NET class application by
www.rasteredge.com
software application cloud:C# PDF Convert to Word SDK: Convert PDF to Word library in C#.net
with specified zoom value and save it into stream The magnification of the original PDF page size Description: Convert to DOCX/TIFF with specified resolution and
www.rasteredge.com
455
%%! 
sql listmembers execute "SELECT EmailAddr_, FullName_ FROM members_ WHERE 
List_='[list.name]'" 
set numrows [sql listmembers numrows] 
set results "" 
for { set row 1 } { $row <= $numrows } { incr row } { 
set Name [sql listmembers data 1 $row] 
set EmailAddr [sql listmembers data 2 $row] 
append results "Name = $Name, Email = $EmailAddr\n" 
return $results 
%% 
sendmessagelm 
This command is a simple method of sending a message using ListManager's standard 
message send system. This function takes four arguments: 
sendmessagelm (from) (to) (subject) (body) 
Due to the length of the subject and body, it may be more convenient to define these as 
variables to pass to this command. For example: 
%% after ; 
set From "me@myaddress.dom" ; 
set To "me@myaddress.dom" ; 
set Subject "message send has completed!" ; 
set Body << 
The message send for: 
[merge inmail_.HdrSubject_] 
is complete.>> ; 
sendmessagelm $From $To $Subject $Body 
%% 
Message Level Commands 
The following commands are valid only in message-level or send-completion scripts. 
login 
In order to use certain Tcl commands, the administrator must first log in. This is to keep 
someone from sending in a message containing malicious SQL or other hazardous 
code pretending to be an administrator by using the administrator's email address, a 
practice known as "spoofing". 
The "login" command is called with the administrator's email address and password. 
The syntax for this command is: 
%% init ; login (email address) (password) %% 
Since this command requires a database query to determine if this address and 
password are those of an administrator, it should only be used in message-level scripts 
-- Tcl scripts that begin with "%%init ;" or "%%before ;". Otherwise, the query will be 
done for each recipient, and it will slow down the send. 
software application cloud:C# PDF insert image Library: insert images into PDF in C#.net, ASP
Merge several images into PDF. Insert images into PDF form field. Access to freeware download and online C#.NET class source code.
www.rasteredge.com
software application cloud:C# PDF File Merge Library: Merge, append PDF files in C#.net, ASP.
C# Demo Code: Combine and Merge Multiple PDF Files into One in .NET. This part illustrates how to combine three PDF files into a new file in C# application.
www.rasteredge.com
456
redirect 
For testing purposes, it is advantageous to be able to preview what each recipient will 
see when their message is mail-merged. The "redirect" command will allow the 
administrator to redirect all messages to a specified email address. 
The syntax for this command is: 
%% init ; redirect (email address) %% 
errormode 
Since Tcl can be a tricky language to program, debugging message sends will almost 
certainly be required or desirable. In order to make sure that the Tcl in the message 
executes properly, the sender should turn on error handling so that if there is an error, 
the message send stops and the sender is notified. The following error modes are 
supported: notify, abort, replace, debug, and normal. 
The most helpful use of this command is the "notify" mode: 
%% init ; errormode notify user@domain.ext %% 
When this mode is set, any Tcl errors will cause the message send to stop and an email 
that details the error description and the tag in which it occurred will be sent to the 
specified email address. 
The "abort" error mode simply causes the message send to stop but no notification is 
sent. The error text can be found in the transaction log for the message. The syntax for 
this mode is:  
%% init ; errormode abort %% 
The "replace" error mode will cause the tag in which the error occurred to be replaced 
with the specified text. The syntax for this mode is: 
%% init ; errormode replace "replacement text" %% 
The "debug" error mode will replace the tag with the error string. This string indicates 
what the error was and the text of the script. 
The "normal" error mode replaces the tag with an empty string. This is equivalent to 
calling "errormode replace" with an empty string. This is the default behavior.  
mailtest 
This command, which takes no arguments and returns an empty string, tells 
ListManager to put this message into "mailtest" mode. This means that the send will 
proceed as normal and go through the standard SMTP transaction but will reset before 
the message data is sent to the server. Any messages sent in this mode will not reach 
the recipients. This should only be used for testing mail-merge and send speeds. Since 
messages sent this mode are otherwise indistinguishable from a standard send, bounce 
handling for bad or intermittent email addresses will still apply. 
Recipient Level Commands 
recipindex 
457
This command takes no arguments and returns a number that indicates the relative 
index of the current recipient during the current send. It is based on the range 1 to N 
where N is the total number of recipients to which the message is being sent. The 
ordering is based on the retrieval order from the database but isn't guaranteed to be in 
this order. 
numrecips 
This command takes no arguments and returns the number of total recipients that are 
being sent to. This number represents N in the range of results returned by the 
"recipindex" command. 
skip 
There are times when the sender of a message may want to not send to certain 
recipients that would be part of a normal send. For example, if the sender was testing a 
message with the "redirect" command but they were sending to a list with 100,000 
messages, they would receive 100,000 copies of the message. Or, the sender might 
want to do mail-merge for the entire send and verify that there were no errors before 
doing the actual send. 
Using the skip command, which takes no arguments and returns an empty string, the 
sender could send to every 1000th recipient and skip the rest using the following Tcl 
mail-merge tag: 
%% if { [recipindex] % 1000 != 0 } { skip } %% 
This means that if the index of this recipient as retrieved by the recipindex command is 
not evenly divisible by 1000 then it will be skipped. 
The sender could skip every recipient by simply adding the tag "%%skip%%" to the 
end of the message. 
When the "skip" command is executed, further processing of the current message is 
stopped so if you are testing the message to make sure that all the scripts are executed 
properly, call this command at the end of the message. Otherwise, call it at the 
beginning. 
abort 
This command terminates the sending of the current message. If the error mode was 
currently set "notify", then the notification will be sent. Otherwise, the error mode will be 
set to abort and an error will be generated causing the message send to stop. abort can 
be called with a text string argument which will be passed on as the error text. For 
example: 
%%abort "Terminating this message send."%% 
memberstable, emailaddrcolumn, and memberidcolumn 
The name of the members table and the column names of the email address and 
member ID are all configurable by the server administrator. These commands return 
these names. When writing custom Tcl commands for library code, use these 
commands in place of Members_, EmailAddr_, and MemberID_ 
memberidchar 
Each member in the ListManager database has a unique ID and for each ID, there is a 
458
special code character which is a single letter. The ID and code character are used in 
many places for the validation of confirmations and unsubscribes. The code character 
makes it harder to accidentally unsubscribe someone else by typing in the wrong ID. 
The memberidchar command returns the member ID and the code character as a string 
that can be used in your scripts. For example: 
To unsubscribe, click here: 
http://www.yourdomain.dom/cgi-bin/unsub.pl?id=%%memberidchar%% 
emailunsub 
The member unsubscribe address is fundamental to the operation of a mailing list and 
our failsafe unsubscribe feature makes it convenient and simple for a member to 
unsubscribe. The emailunsub command will return an unsubscribe address specific to 
the current member. This command is equivalent to the legacy subst tag version: 
$subst('email.unsub') which is also supported via the Tcl command "subst 
email.unsub". 
Legacy Subst Commands 
ListManager has always had some mail-merge capability using special subst tags of the 
form $subst('argument'). All of these commands are supported in the new mail-merge 
functionality.  Prior to 6.0h, the form of the tag was subst (argument), which conflicted 
with the Tcl subst command.  For 6.0h and higher, the form of the new tags is: 
lmsubst (argument) 
where (argument) is the same argument that was passed to the original $subst version. 
IMPORTANT NOTE:  When upgrading to ListManager 6.0h and higher, those who have 
created scripts using the ListManager subst command must update them to use 
lmsubst. 
Differences between ListManager Tcl and Standard Tcl 
The Tcl language used by ListManager is slightly different from normal Tcl 
implementations. The differences are subtle but important. There are also some 
important additions to the syntax that allow the user to get around some of the problems 
involved with using a scripting language in an email message. 
Line Wrapping 
The most important difference between ListManager Tcl and standard Tcl is in the way 
that line breaks are handled. Since most email clients automatically word-wrap outgoing 
mail, it is likely that Tcl scripts would be broken by these line breaks. In Tcl, the end of 
the line ends the current statement. Additionally a single semi-colon ( ; ) also ends the 
current statement. So, to avoid inadvertent line breaks, all line breaks in Tcl scripts are 
removed and replaced with a single space. This requires the user to end all statements 
with a semi-colon. 
For example, the Tcl script: 
for { set i 1 } { $i <= 3 } { incr i } { 
set j [expr 2 * i] 
459
set k [expr j * i] 
append result "$i, $j, $k\n" 
which is valid standard Tcl, will not be processed correctly by ListManager Tcl. This is 
because the line breaks after the 'set' procedure statements will be removed. Therefore, 
the user must always terminate statements with a semi-colon. 
For example: 
for { set i 1 } { $i <= 3 } { incr i } { 
set j [expr 2 * i] ; 
set k [expr j * i] ; 
append result "$i, $j, $k\n" ; 
Note that the semi-colon must always be preceded by a space and followed by a space 
or a line break. 
The importance of this feature is evident in scripts where a single command line 
exceeds the line-wrapping width of the email client's editor. Most editors only do line-
wrapping when the message is actually sent so that it is not possible to know exactly 
where the line will be wrapped. The process of removing line breaks is called 'line 
unwrapping' as opposed to 'line wrapping'. 
Line unwrapping is done before the Tcl script is evaluated and it does not make any 
distinctions between quoted text and Tcl code. For example, the following Tcl script: 
%%set result "The domain name for your email address [merge 
EmailAddr_] 
is [getdomain [merge EmailAddr_]]"%% 
has a line break in the middle of a string. In standard Tcl, this requires the use of a 
backslash ( \ ) at the break point as in: 
set result "The domain name for your email address [merge 
EmailAddr_]\ 
is [getdomain [merge EmailAddr_]]" ; 
In ListManager Tcl, the line break is turned into a single space. In standard Tcl, the use 
of the backslash at the point of the line break has additional functionality. All whitespace 
(i.e. non-printing characters such as line-breaks, tabs, and spaces) after the backslash 
is removed and replaced by a single space. This makes it possible to do the following: 
set result "The domain name for you email address [merge 
EmailAddr_]\ 
is [getdomain [merge EmailAddr_]]" ; 
In this case, the spaces at the beginning of the second line will be removed and the 
entire break will be replaced by a single space. If you do not end the line with a 
backslash, then all the spaces at the beginning of the next line will be included in the 
result.  
The backslash is also used in Tcl to continue Tcl code on the next line as in: 
460
for { set i 1 } { $i <= 3 } \ 
{ incr i } { ... 
This is not required in ListManager Tcl because lines are always wrapped. Extra 
whitespace is ignored. It is only noticeable when it is in a string because this is 
generally what is visible to the user. For consistency, it is recommended that you use 
the backslash when inserting new lines in Tcl scripts. 
There is another problem that cannot be solved automatically through line unwrapping. 
There are some strings that exceed the word-wrapping width of a mail-client that don't 
have any spaces. In this case, it cannot be safely broken at a space and is generally 
just broken at the wrap width. The most common case of this is long URL's. To get 
around this problem in Tcl, you can construct the string in pieces where each piece is 
less than the word wrapping width. For example: 
%% 
set mystring "" ; 
append mystring  
"http://www.somelongdomainname.com/cgi-bin/somescript.pl" 
"?someparameter=somevalue" 
"&someotherparameter=someothervalue" 
"&yetanotherparameter=yetanothervalue" ; 
return $mystring ; 
%% 
Make sure you set mystring to an empty string before you do append otherwise you will 
keep appending to the same string for each recipient. 
It is possible to disable the line unwrapping step by including an exclamation mark ( ! ) 
immediately after the first %% mail merge tag delimiter. Care must be taken to avoid 
any undesired line-wrapping when the message is sent. 
For example 
%%! 
for { set i 1 } { $i <= 3 } { incr i } {  
set j [expr 2 * i]  
set k [expr j * i]  
append result "$i, $j, $k\n"  
return $result 
%% 
Text Quoting 
Another important addition to ListManager Tcl is the inclusion of block-quoting 
delimiters '<<' and '>>'. Any line breaks that occur within these quotes are converted to 
"\r\n" sequences. These are special characters that are converted by Tcl into a line 
break within the string. Additionally, any normal quotes ( " ) are converted to 'escaped' 
quotes (i.e. \" sequences that represent a quote to Tcl) which allows them to be 
included in a Tcl string variable. The '<<' and '>>' characters are converted to normal 
quotes. 
Documents you may be interested
Documents you may be interested