c# : winform : pdf viewer : Add page break to pdf software control cloud windows azure asp.net class RV010.Haworth1-part1457

11 
To solve this problem, you can provide a visual clue for the reader by changing the text color of the hyperlink to blue, 
the typical color used for hyperlinks. To do that, add a second escape sequence that sets the color of the text for the 
web site address to blue, as in the code below. 
ODS RTF TEXT='^S={URL="http://www.myweb.com"}Source: 
^S={FOREGROUND=blue}www.myweb.com'; 
The revised output is shown in the figure below. Now the web site address looks like a standard hyperlink because it 
appears in blue (like a web page hyperlink), which should prompt the user to click on the link.  
Add page break to pdf - insert pages into PDF file in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Guide C# Users to Insert (Empty) PDF Page or Pages from a Supported File Format
add a blank page to a pdf; add page to pdf acrobat
Add page break to pdf - VB.NET PDF Page Insert Library: insert pages into PDF file in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Easy to Use VB.NET APIs to Add a New Blank Page to PDF Document
add page number to pdf print; add or remove pages from pdf
12 
ADDING A TABLE OF CONTENTS TO RTF OUTPUT  
Starting with SAS 9, you can direct ODS to specify a table of contents in the RTF document that it creates. It does 
this by inserting control words in your RTF document that your word processing software can use to build a table of 
contents. In SAS 8, you had to insert the RTF control words yourself or build the table of contents manually from 
inside the word processing software.  
In SAS 9.2, you add the CONTENTS=  and TOC_DATA options to the ODS RTF statement to request a table of 
contents in the output.  
ODS RTF FILE='PayrollTOC.rtf' CONTENTS=yes TOC_DATA; 
This causes SAS to insert a table of contents as the first page of the report, as shown in the first output below, and to 
insert control words that support the table of contents in the pages of the report. The second output below shows 
these control words in a typical report page. 
The program that created this output follows. The ODS PROCLABEL statement replaces the procedure title with the 
text specified on the statement. Note that the labels for the page dimension in the PROC TABULATE step become 
references in the table of contents.  
ODS RTF FILE='PayrollTOC.rtf' CONTENTS=yes TOC_DATA; 
ODS PROCLABEL 'Human Resources Report on Salary and Hours'; 
C# PDF Convert: How to Convert Jpeg, Png, Bmp, & Gif Raster Images
Add necessary references to your C# project: Console.WriteLine("Fail: can not convert to PDF, file type unsupport"); break; case ConvertResult
add page numbers pdf files; adding pages to a pdf document
C# Image Convert: How to Convert Word to Jpeg, Png, Bmp, and Gif
Add necessary references to your C# project: a document"); default: Console.WriteLine(" Fail: unknown error"); break; }. code just convert first word page to Png
add blank page to pdf; add pages to an existing pdf
13 
proc tabulate data=hr; 
class department category; 
var annualsalary hoursweek; 
table department='Annual Salary Statistics for '  
all='Annual Salary Statistics in All Departments and Categories', 
(category all='All Categories in Department'), 
annualsalary*( (n mean min median max)*f=dollar8.); 
table department='Hours per Week Statistics for ' all= 
'Hours per Week Statistics for All Departments and Categories', 
(category all='All Categories in Department'), 
hoursweek*( (n mean min median max)*f=3.); 
run; 
ODS RTF CLOSE;  
Warning: when you run this code, and open the resulting file, the table of contents will not automatically appear. When 
you first open the RTF output file in Microsoft Word, it looks as though ODS has failed you because it displays a front 
page with the header, "Table of Contents" but no actual table of contents. The reason for this is that ODS does not 
determine pagination, but instead hands this task off to the word processor. ODS does not build a table of contents 
because it does not know the page numbers to insert into the table. 
You must direct your word processing software to complete the table of contents. To do this after opening the RTF 
file, click the Show/Hide paragraph marker (¶) to turn on formatting markers if they are not already displayed. Next 
position your cursor at the edge of the section break following the table of contents header, right mouse click, and 
select “Update Field”, which is shown in the figure below. This causes Microsoft Word, to build and insert the table of 
contents.  
If you add text or page breaks after the table of contents is initially built, you can follow these same steps to update 
the page numbers or to rebuild the table. 
C# PDF File Split Library: Split, seperate PDF into multiple files
Support to break a large PDF file into smaller files. is set as 1, then the two output PDF files will contains the first page and the Add necessary references:
add page number to pdf in preview; add page numbers pdf file
VB.NET PDF File Split Library: Split, seperate PDF into multiple
Support to break a large PDF file into smaller files in .NET can split target multi-page PDF document file to one-page PDF files or Add necessary references:
add and remove pages from pdf file online; add page numbers to pdf in preview
14 
ENHANCING RTF OUTPUT BY USING RTF CONTROL WORDS AND FIELD CODES 
Another method, which is described below, is to place RTF control words and field codes directly in the TITLE or 
FOOTNOTE statements in the program that creates your RTF document. There are so many control words, that we 
show only a selection here. The table below lists selected RTF control words that you might find useful.   
Style 
RTF 
Control 
Word(s) 
Quoted String in TITLE or FOOTNOTE Statement 
Bold 
Italicize 
\b 
\i  
"\b\i0 Bold \b0 \i Italicize" 
Bullet 
\bullet 
"\Bullet Bullet" 
Double strike  
\striked1  
"\striked1 Double Strike \striked0 Regular Words" 
Double 
underline  
\dul  
"\uldb Double Underline \uldb0" 
Engrave 
\impr  
"\impr Engrave" 
Subscript 
\sub  
"Subscript \sub 1" 
Superscript 
\super  
"Superscript \super 2" 
Outline 
\outl  
"\outl Outline" 
Shadow 
\shad  
"\shad Shadow" 
Foreground 
color  
\cfn  
"\cf1 Foreground1 \cf2 Foreground2 \cf3 Foreground3" 
Wave underline  \ulw  
"\ulwave Wave underline"; 
Thick underline  \ulth  
"\ulth Thick Underline" 
Font size in half 
points 
\fs24 
"\fs48 Font Size in half points size 48 will be 24pt 
in the document" 
The syntax starts with the escape character. Next curly braces enclose the keyword “raw” followed by the control 
words and text to be formatted.  This entire specification is enclosed in double quotation marks.  In the sample TITLE 
statement, all you have to do is substitute your control words and text where we show <string>. The RTF control 
words won’t change unless Microsoft changes them. 
title "^{raw <string>}"; 
There is an alternate ESCAPECHAR method, which involves using the RTF control word directly without using 
^{raw}. This alternate syntax assumes that you are only going to send the RTF control words to an open RTF 
destination and in this case, all you need to do is set PROTECTSPECIALCHARS= to OFF. This is the method most 
often used in SAS 9.1.3.:  
title "^S={protectspecialchars=off}<string>"; 
The two outputs below show the result of using these control words in a series of ten TITLE and three FOOTNOTE 
statements. Because the code is so lengthy, refer to the book’s companion web site for complete program code. 
C# TWAIN - Query & Set Device Abilities in C#
properties using C# TWAIN image acquiring library add-on step by device. TwainTransferMode = method; break; } if (method == TwainTransferMethod.TWSX_FILE)
add pages to pdf in preview; add contents page to pdf
C# TWAIN - Install, Deploy and Distribute XImage.Twain Control
are three parts on this page, including system Add the following C# demo code to device.TwainTransferMode = method; break; } if (method == TwainTransferMethod
adding page numbers to a pdf file; add page break to pdf
15 
CREATING BOOKMARKS IN YOUR PDF FILE 
With ODS HTML output, you can generate a table of contents to help you find the results you want in a lengthy report. 
You also get a table of contents with ODS PDF output. 
The PDF format supports the creation of bookmarks, which are displayed by Acrobat Reader in a window to the left of 
the main PDF file. By clicking on a bookmark, you can jump directly to the correct output page. The PDF bookmarks 
created by ODS are basically the same as the headings and subheadings created in an ODS HTML table of contents. 
The following code illustrates this feature. It produces a two-page output file with several tables, which are 
bookmarked in the PDF output. 
title 'Analysis of Consumer Complaints'; 
ODS PDF FILE='ComplaintAnalysis.pdf'; 
proc glm data=Complaints; 
class product location; 
model NumComplaints=Product Location; 
run; 
ODS PDF CLOSE; 
The resulting PDF file is shown in the output below. Notice the window on the left with the bookmark tab. It displays a 
tree view of the structure of the output file. It has two top-level bookmarks: one for the "Data" component of the output 
and one for the “Analysis of Variance” component of the output. Below each of these bookmarks are links to the 
tables within each component. If you click on one of the links, the page with that section or table will be displayed in 
the window on the right.  
If the bookmarks do not appear when you open the PDF file, you may need to click on the bookmarks icon or 
bookmarks arrow to display them. This example is shown in Adobe Acrobat version 9. Your version of Adobe may 
have different options to display bookmarks.  
As with HTML output, if you use the ODS PROCLABEL statement to assign a new label to the procedure, that label 
will be displayed in the bookmarks. For example, the same text used in the TITLE statement of our example could 
also be used to generate a procedure label by adding the following ODS PROCLABEL statement to the program 
above. 
ODS PROCLABEL ’Analysis of Consumer Complaints’; 
The output below shows the new results. Notice how the top label has changed from “The GLM Procedure” to 
“Analysis of Consumer Complaints”. 
C# TWAIN - Acquire or Save Image to File
RasterEdge.XDoc.PDF.dll. acquire image to file using our C#.NET TWAIN Add-On Group4) device.Compression = TwainCompressionMode.Group3; break; } } acq.FileTranfer
add pages to pdf acrobat; adding page numbers to a pdf document
C# TWAIN - Specify Size and Location to Scan
be found at this tutorial page of how TWAIN image scanning control add-on owns TwainStaticFrameSizeType.LetterUS) { this.device.FrameSize = frame; break; } } }.
add page number pdf; add pdf pages together
16 
17 
CREATING PDF FILES THAT INCLUDE HYPERLINKS AND ANNOTATIONS 
The PDF file format is a lot more than just a convenient way to share electronic documents. ODS can also add 
interactive features to your PDF files. You can add a hyperlink to a PDF document, allowing the viewer to link to a 
related web site.  We have already seen the use of LINK= in the SAS TITLE statement. That feature of ODS works 
with PDF in the same manner as it works for HTML and RTF.  So, we want to illustrate another method of performing 
linking and adding annotations to PDF files. 
You can add annotations that create pop-up notes with added details. To access these features, you use the STYLE= 
option and the URL= and FLYOVER= attributes.  The STYLE= option is currently supported for the PRINT, REPORT, 
and TABULATE procedures. In this example, hyperlinks will be added to two column headings, and an annotation will 
be added to a third column heading. The hyperlinks allow the report to be linked to web sites with information about 
the artists and media described in the table. The annotation explains that the prices are in US dollars. The code is 
shown below. 
ODS PDF FILE='AnnotatedReport.pdf'; 
proc report data=gallery nowd; 
column artist medium price; 
define artist / group STYLE(Header)= 
{URL="http://www.artistlookupwebsite.com/"}; 
define medium / group STYLE(Header)= 
{URL="http://www.artistmediumlookup.com"}; 
define price / analysis mean STYLE(Header)= 
{FLYOVER="Prices listed in US$"}; 
run; 
ODS PDF CLOSE; 
The STYLE= option is applied to each column separately since each column has a different link or flyover note. In the 
first two columns, the URL= attribute specifies a link to a related web site. In the third column, the FLYOVER= 
attribute specifies the text for the annotation.  
The resulting PDF is shown in the output below. The first two column headings are surrounded by blue boxes, 
indicating that they are hyperlinks. Clicking on or in a blue-outlined box links the viewer to the appropriate web site. 
The icon in the third column indicates that it has an annotation.  
Double-clicking on the icon brings up the note, as shown the output below. 
18 
ANOTHER MEANS OF ADDING HYPERLINKS AND ANNOTATIONS TO PDF OUTPUT 
The previous technique works great if you want to add hyperlinks or annotations to PDF output from the PRINT, 
REPORT, or TABULATE procedures. However, if you want to use a different procedure, you don’t have access to the 
STYLE= option (except in a modified Table template), so you can’t apply the URL= or FLYOVER= attributes. Also, 
you might want to put a hyperlink or annotation somewhere else in your output, not just in the table.  
There is another way control style attributes, using the escape character ^{STYLE} method (new for SAS 9.2). You 
can use an escape sequence almost anywhere in your output where you can add text: titles, footnotes, labels, etc. 
The following example uses an escape sequence to create a hyperlink on one of the words in the table footnote, as 
shown in the example below.  
ODS ESCAPECHAR='^'; 
ODS PDF FILE='HyperlinkedReport.pdf'; 
footnote '^{style[URL="http://threeartgalleries.info"]Click for more gallery 
info}'; 
proc tabulate data=gallery; 
class gallery; 
var price; 
tables gallery,price*(n*f=5. (mean min max)*f=dollar8.); 
run; 
ODS PDF CLOSE;   
This could also be done using the TEXT= option on an ODS PDF statement. This statement would be inserted into 
the code following the PROC UNIVARIATE step, and the FOOTNOTE statement would be omitted from the program. 
This approach has the added advantage of creating a "footnote" much closer to the table itself, as shown in the output 
below.  
ODS PDF TEXT= '^{style[just=c URL="http://threeartgalleries.info"]Click
for 
more gallery info}'; 
Annotations can be added to titles, footnotes, or text in the same way by using the FLYOVER= option. Hyperlinks and 
annotations can also be embedded in format values. The following PROC FORMAT code creates annotations for 
each value of variable GALLERY. 
19 
proc format; 
value $galft  
'East Side'='^{style[FLYOVER="130 East 23rd"]East side}'  
'Downtown'='^{style[FLYOVER="10 Elm Street"]Downtown}' 
'Mall'='^{style[FLYOVER="Southside Mall Blvd"]Mall}'; 
run;  
Applying format $GALFT to variable GALLERY generates annotations in the PDF output with the address for each 
gallery location, as shown in the output below. The same technique can add annotations to variable labels and values 
of character variables.   
20 
ADDING “PAGE X OF Y” NUMBERS TO PDF OUTPUT 
In an ODS RTF example, we defined an ODS escape character (ODS ESCAPECHAR=) so that we could code a 
special sequence to insert page numbers into the document in the form “Page X of Y”. This capability is also available 
when creating PDF output with ODS. The ESCAPECHAR functions to use with ODS PDF output are “thispage” for 
the “X” position and “lastpage” for the “Y” position. Each ESCAPECHAR function is enclosed in curly braces and 
preceded by the escape character. In the code below, the ODS escape character is set to the caret '^'.   
Consider the following set of FOOTNOTE statements: 
ODS ESCAPECHAR='^'; 
ODS PDF FILE="Footnotes.pdf"; 
footnote justify=left 'Page ^{thispage} of ^{lastpage}'; 
footnote2 'Page -^{thispage}-' ; 
footnote3 'Total Pages: ^{lastpage}'; 
footnote5 justify=left 'Seite ^{thispage} von ^{lastpage}'; 
footnote7 justify=left 'Página ^{thispage} de ^{lastpage}'; 
footnote8 '^{pageof}'; 
proc print data=gallery(obs=20); 
run; 
ODS PDF CLOSE; 
They produce the output shown in the output below. Note that the {pageof} function when used with PDF does NOT 
produce the same results as when used with the ODS RTF destination. The {pageof} escape character function is 
available only when sending output to the RTF destination. 
CONCLUSION 
These are just a sampling of some of the more advanced things that can be done with ODS. Other topics worth 
exploring: tagsets, style templates, ODS LAYOUT, and ODS DOCUMENT. 
ACKNOWLEDGMENTS 
The examples in this paper were co-written with Cynthia Zender, Curriculum Manager for the Report Writing and 
Output Delivery System curriculum at SAS, and Michele Burlew, owner of Episystems, Inc.. 
CONTACT INFORMATION 
Your comments and questions are valued and encouraged.  Contact the author at: info@laurenhaworth.com
.  
SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS 
Institute Inc. in the USA and other countries. ® indicates USA registration.   
Other brand and product names are trademarks of their respective companies.  
Documents you may be interested
Documents you may be interested