©2002-2016,   Ido Millet,   ido@MilletSoftware.com
Page 31 
Embedding HTML Export in Email Message Body 
Imagine you need to export a report to HTML but you wish to embed the resulting content 
(including charts and images) inside the email message body.  To do this you need to observe the 
following simple rules: 
3.  The email message body must be left completely blank. 
4.  The first attached file name must be the html file to embed as the HTML email message 
(typically, it’s the report export to HTML).  That file name must 
end with .htm  or .html 
5.  For the Crystal 9 or 11 version of Visual CUT, use HTML 40 as the export format 
6.  For the Crystal 8.5 version of Visual CUT, use HTML 32 as the export format 
Limitations:  
email clients typically corrupt the formatting of complex HTML messages when users 
attempt to Reply to or Forward the email message.   
Outlook 2007 is very limited in rendering HTML content. Use an older version of Outlook 
if you need HTML embedding in email messages or instruct Outlook 2007 users to open 
HTML emails in a full window (double click), and then click the "Other actions" toolbar 
button and choose "View in browser." 
To avoid these limitations, a different method of sending report content as HTML is described 
in the following sections: 
Sending Message Text as HTML 
Embedding Images inside the HTML email body 
Dynamic Tables inside HTML Email Messages 
Using Cascading Style Sheets (CSS) in HTML messages 
Pdf fillable forms - C# PDF Form Data fill-in Library: auto fill-in PDF form data in C#.net, ASP.NET, MVC, WinForms, WPF
Online C# Tutorial to Automatically Fill in Field Data to PDF
create pdf fillable form; pdf fillable forms
Pdf fillable forms - VB.NET PDF Form Data fill-in library: auto fill-in PDF form data in vb.net, ASP.NET, MVC, WinForms, WPF
VB.NET PDF Form Data fill-in library: auto fill-in PDF form data in vb.net, ASP.NET, MVC, WinForms, WPF
convert word form to fillable pdf form; convert pdf to pdf form fillable
©2002-2016,   Ido Millet,   ido@MilletSoftware.com
Page 32 
Embedding TEXT Export in Email Message Body 
Imagine you need to export a report to Text but you wish to embed the resulting content inside 
the email message body.  To do this you need to observe the following simple rules: 
1.  The email message body must be left completely blank. 
2.  The text file (probably the file exported by Visual CUT, but it can be any other file as 
well) to embed in the message body  must be either the only specified attachment or the 
first file in the attachment list (reminder: multiple file attachments are separated by a ";" 
without spaces). 
3.  The text file name must end with .txt, .prn, or .text 
Embedding File(s) Content in Email Message Body 
Imagine you need to insert a standard header and footer into the email message body, or you 
wish to give the user an easy way to modify the content of a specific paragraph by editing a text 
file, or you are specifying the email body via a command line and wish to refer to the body 
content via a file rather than by including the full content in the command line itself.  To do any 
of the above, you can embed within the message a references to a file using the following 
structure:  
<<Insert_File:File_Path_and_Name>> 
For example,
<<Insert_File:c:\temp\MyFile.htm>>
1.  For HTML email messages, you should use 
[[Insert_File:
… ]]
 
2.  When Visual CUT encounters such a "file token" it replaces it with the content of the 
specified file (if such a file exists). 
3. References to report fields/formulas are replaced with their dynamic content
4.  You can use as many file tokens as you wish within a single message body. 
5.  You can use a Crystal formula that results in such a token and embed the reference to 
that formula in the message body.  Visual CUT would first resolve the formula reference 
into the token and then replace the token with the file content. A typical use for this 
would be to embed a different paragraph in an email message depending on the number 
of days an account is overdue. 
6.  If an inserted file has embedded file tokens, they would be replaced as well  
(the process is recursive).  
C# Create PDF Library SDK to convert PDF from other file formats
Free PDF creator SDK for Visual Studio .NET. Batch create adobe PDF from multiple forms. Create fillable PDF document with fields.
convert pdf fillable forms; convert excel to fillable pdf form
C# PDF Field Edit Library: insert, delete, update pdf form field
provide best ways to create PDF forms and delete PDF forms in C#.NET framework project. A professional PDF form creator supports to create fillable PDF form in
create fillable forms in pdf; create a fillable pdf form from a pdf
©2002-2016,   Ido Millet,   ido@MilletSoftware.com
Page 33 
Sending Message Text as HTML 
Visual CUT ensures that e-mail message text that starts with <HTML> and ends with </HTML> 
is interpreted as HTML when received as e-mail by the recipients. This allows you to use HTML 
tags to create a message that displays with a variety of nice formatting effects.  
You can use the integrated HTML editor to create the message and drag and drop dynamic 
content into appropriate locations within the resulting HTML text. 
The message body above resulted in the following e-mail message body: 
<html> 
<b>Hi, </b>&nbsp;<br> 
<br> 
Here's your <big><font color="#990000"><b>annual sales report</b></font></big> 
for <big><b><i><font color="#3333ff">{Product_Type.Product Type 
Name}</font></i></b></big> 
products.<br> 
<br> 
Please Contact Ido Millet (814 898-6262) if you have any questions.<br> 
<br> 
Regards,<br> 
- TCW (The Crystal Wizard) 
</html> 
C# Create PDF from OpenOffice to convert odt, odp files to PDF in
An advanced .NET control to change ODT, ODS, ODP forms to fillable PDF formats in Visual C# .NET. Online source code for C#.NET class.
create pdf fill in form; convert an existing form into a fillable pdf form
VB.NET Create PDF from OpenOffice to convert odt, odp files to PDF
Export PDF document from OpenOffice Presentation. Turn ODT, ODS, ODP forms into fillable PDF formats. Quick integrate online source code to VB.NET class project
convert pdf to form fill; acrobat fill in pdf forms
©2002-2016,   Ido Millet,   ido@MilletSoftware.com
Page 34 
Integrated HTML Editor 
Just to the left of the email message body, you can click on button to start an integrated 
HTML editor. If the message is not already in HTML syntax, clicking the button will add 
the necessary HTML syntax including a few useful cascading style sheet options 
(defaulting the message body text as well as any Table text to Verdana).  
The editor allows you to easily change formatting, insert tables, images and links, check spelling, 
and edit the text, all from an intuitive word processing interface. It also allows you to preview 
the resulting email messages with dynamic values substituted for Crystal field/formula 
references.  
You can copy and paste content into the HTML editor while preserving formatting from 
other software such as Microsoft Word or Excel. If you copy content from excel, it becomes an 
HTML table, so instead of starting a table from scratch, you can create it in Excel, and then copy 
into the Visual CUT integrated HTML editor. 
Embedding Images inside the HTML email body (old email engine 
no longer available) 
In order to include an image as an embedded file, the HTML syntax of your message would 
include something like: 
<p><font color="#000080"><img border="0" 
src="file:///C:/Program%20Files/Visual%20CUT/logo.gif"  
width="211" height="69"></font></p> 
You would need to attach that file to the email message.   
The attachment would be specified as something like 
C:\Program Files\Visual CUT\logo.gif  
(separated from other attachment by ";") 
You don't need to attach the image if it is a reference to an image available on the web. 
Embedding Images inside the HTML email body (2009 email engine) 
If you are using the GUI HTML editor for the email message body, just insert an image and 
Visual CUT would take care of embedding it in the email message.  
If you are manually creating the reference to the image, use the following structure:  
<IMG src="file:///image_file_path_and_name"> 
For example,  <IMG src="file:///C:/Pictures/My_Logo.jpg"> 
The path and name of the image file must point to an existing file.  Of course, it may include a 
dynamic reference to a Crystal field or formula.  For example: 
<IMG src="file:///C:/Pictures/{Product_Type.Picture_Path}.jpg"> 
You should not specify the image file as an attachment. 
VB.NET Create PDF Library SDK to convert PDF from other file
Batch create adobe PDF document from multiple forms in VB.NET. Create fillable PDF document with fields in Visual Basic .NET application.
asp.net fill pdf form; convert word to fillable pdf form
C# PDF Text Box Edit Library: add, delete, update PDF text box in
Able to create a fillable and editable text box to PDF Since RasterEdge XDoc.PDF SDK is based on .NET framework ASP.NET web service and Windows Forms for any
create a pdf with fields to fill in; convert pdf fillable form to word
©2002-2016,   Ido Millet,   ido@MilletSoftware.com
Page 35 
Dynamic Tables inside HTML Email Messages 
See Video demonstration.  
HTML tables are very useful, particularly when sending email messages to mobile devices. 
Because the width of an HTML table and its columns can be specified as percentages of the 
available screen width, the information would adapt itself to the device displaying the message. 
It is very easy to create static HTML tables (use the integrated HTML editor). However, this 
section describes a powerful technique for using Crystal formulas to create dynamic 
HTML tables (with information from your Crystal report).  You can then embed the 
formula containing the full table syntax in the email message body.   
The general idea is to use: 
1) one formula (in a Report or Group header section) to set the value of a string variable to the 
table header syntax (<Table>
….
2) 
another formula (in a Detail or Group section) would repeatedly append table rows 
3) a final formula (in a Report or Group Footer section) would provide the table footer and close  
the table syntax (using 
</Table>)     
The Visual CUT 11.rpt sample report demonstrates this technique (and email bursting) using: 
HTML_Table_1_GH1 (formula placed in GH1)
// In order to capture multi-section detail into an HTML table string  
// (called HTML_Table), this report uses 3 Formulas: 
// HTML_Table_1_GH1 sets the variable to the Table Header info  
// HTML_Table_2_GF2 appends a row of data (for each Group Footer level 2)  
// HTML_Table_3_GF1 Closes the Table  
// Place this formula in GH1 to set formatting, column names, widths, etc. 
WhilePrintingRecords; 
Stringvar HTML_Table; 
// Reset the string variable only if this is not a repeated group header 
IF NOT InRepeatedGroupHeader THEN  
HTML_Table := "<table width=""100% "" border=""1"" cellpadding=""5"" cellspacing=""0"" 
bordercolor=""#0033CC"">" +  
"<tr bgcolor=""#66CCFF"">" +  
"<td width=""60% "" align=""left""><strong><big>Product</big></strong></td>" +  
+  
"<td width=""20% "" align=""right""><strong><big>Revenue</big></strong></td>" + 
" + 
"<td width=""20% "" align=""center""><strong><big>Days<br>To Ship</big></strong></td>" +  
" +  
"</tr>" 
©2002-2016,   Ido Millet,   ido@MilletSoftware.com
Page 36 
HTML_Table_2_GF2 (placed in GF2)
// Place this formula in GF2 to append Table Row Information 
WhilePrintingRecords; 
Stringvar HTML_Table; 
HTML_Table := HTML_Table +  
"<tr>" + 
// Here we add the Product Name column  
// (note that where we need to have " we must specify "")  
)  
"<td><div align=""left"">" +  
+  
{Product.Product Name}  
"</div></td>" + 
// Here we add the total Revenue column: 
"<td><div align=""right"">" + 
"<b>$" + ToText(Sum ({@value}, {Product.Product Name}),0) + "</b>" + 
" + 
"</div></td>" +  
// Here we add the Average Days to Ship: 
"<td><div align=""center"">" + 
IF Average ({@Days_To_Ship}, {Product.Product Name}) > 5 THEN 
// Slow shipping, so format as Red 
"<b style=""color: rgb(255, 0, 0);"">" +  
+  
ToText(Average ({@Days_To_Ship}, {Product.Product Name}),1)  
"</b>"   
ELSE IF Average ({@Days_To_Ship}, {Product.Product Name}) < 3 THEN 
// Fast shipping, so format as Green 
"<b style=""color: rgb(4, 180, 4);"">" +  
+  
ToText(Average ({@Days_To_Ship}, {Product.Product Name}),1)  
"</b>"  
ELSE 
// Intermediate level of performance. Format as Blue 
"<b style=""color: rgb(0, 0, 255);"">" +  
+  
ToText(Average ({@Days_To_Ship}, {Product.Product Name}),1)  
"</b>"  
)  + 
"</div></td>" +   
"</tr>" 
©2002-2016,   Ido Millet,   ido@MilletSoftware.com
Page 37 
HTML_Table_3_GF1 (used in Visual CUT to embed the HTML Table in email body)
In Visual CUT, the report is set to burst and the {@HTML_Table_3_GF1} formula (because it 
was placed in a GF1 section) is available for drag & drop into an email message body: 
The resulting email message provides the dynamic content with an embedded HTML table: 
// Place this formula in GF1 to "close" the HTML Table 
le 
WhilePrintingRecords; 
Stringvar HTML_Table; 
HTML_Table := HTML_Table + "</table>" 
<HTML> 
Here is {@Year_Parameter} sales data for {Product_Type.Product Type Name}:<br><br> 
{@HTML_Table_3_GF1}<br><br> 
Cheers,<br> 
- Ido 
</HTML> 
©2002-2016,   Ido Millet,   ido@MilletSoftware.com
Page 38 
Applying Alternating Row Color 
To create an alternating background color effect to the HTML table rows, use the bgcolor 
attribute of the tr (table row) html tag.  
For example, the following HTML email message used the same approach described in the 
previous section, except that instead of a static "<tr>" to start each data row (GH2 formula), a 
string variable called ls_alternating_color_TR  is used to alternate between "<tr>"  (no color) 
and  "<tr bgcolor=""#E0FFFF"">" (a light blue background color):  
WhilePrintingRecords; 
Stringvar HTML_Table; 
// instaed of using "<tr>" to start each row, alternate row colors between "<tr>" and "<tr 
bgcolor=""#E0FFFF"">"  
Stringvar ls_alternating_color_TR; 
IF ls_alternating_color_TR  = "<tr>" THEN 
ls_alternating_color_TR := "<tr bgcolor=""#E0FFFF"">" 
ELSE 
ls_alternating_color_TR := "<tr>" ;   
HTML_Table := HTML_Table +  
Chr(10) + ls_alternating_color_TR  
+ …
©2002-2016,   Ido Millet,   ido@MilletSoftware.com
Page 39 
Embedding Hyperlinks to Reports/Files inside HTML Email Messages 
Instead of attaching reports to email messages, you can use the email message to provide 
hyperlinks to the report files located on shared or web folders.  
Visual CUT would export the reports directly to shared folders or upload them to web folders 
using FTP_Upload or SFTP_Upload arguments. Then, instead of attaching the files to the 
outgoing email message, you can use Visual CUT’s HTML email message editor to embed a 
hyperlink to the report file.  The hyperlink can be simple text or an icon of your choice. 
Here is an email example of combining this approach with the HTML table technique described 
in the previous section. The pdf and excel icons act as hyperlinks for opening report files 
If you’d like me to send you a sample report demonstrating how Crystal formulas 
can 
dynamically construct the hyperlinks and the references to the icons, please send me an email 
request. I can also send you the pdf and excel icons used in this example.   
©2002-2016,   Ido Millet,   ido@MilletSoftware.com
Page 40 
Using Cascading Style Sheets (CSS) in HTML messages 
Just like any other HTML document, you can use CSS directives by embedding them in the 
header section of the HTML document.   
For example, assume you are embedding dynamic HTML tables inside the email message (see 
previous section for a detailed description of that technique. You may wish to control the font 
type and font size of table element (identified as 
td
in HTML). 
Here is an example of using CSS to achieve this: 
<html> 
<head> 
<title>Reseller Balance Report for (@Product_Param}</title>                                           
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> 
-1"> 
<style type='text/css'> 
td{font-family:Verdana; font-size:8pt;} 
;} 
</style>
</head> 
<body> 
<font face="Verdana, Arial, Helvetica, sans-serif" size="2"> 
Hi {Reseller.First_Name},<br><br> 
This message shows your <b>{@Product_Param} </b>purchases, transfers,  
and balance as of {@Nice_Date}. <br>  <br> 
<hr width="100%" size="2"> 
<b><big>Your Purchases:</big></b><br><br> 
{@HTML_Table_Sub}<br><br> 
<hr width="100%" size="2"> 
<b><big>License Transfers and Balance:</big></b><br><br> 
{@HTML_Table_3_GF1}<br><br> 
</font>    
</body> 
</html> 
Documents you may be interested
Documents you may be interested