c# asp.net pdf viewer : Add page break to pdf SDK software project winforms wpf html UWP sg24625031-part1966

Chapter 14. End-to-end example 
293
FONT(416 12) 
RMTLOCNAME('127.0.0.1') 
USRDFNOBJ(QGPL/PDF *PSFCFG) 
TEXT('Device Description for PDF email') 
The DEVD, DEVCLS, TYPE, MODEL, LANATTACH, AFP, and FONT parameters 
are assigned values as if you were setting up an IPDS printer on your local area 
network: 
• PORT: Use a unique four-digit number to use as a TCP/IP Port number for 
each PDF virtual printer.
• RMTLOCNAM (Remote Location Name): Specify a loopback address or a 
name for a loopback address. A valid loopback address must have 127 as the 
first octet.
• USRDFNOBJ (User Defined Object): Specify the name and library of a PSF 
configuration object. The object type is *PSFCFG. If PSF configuration object 
does not exist when you create the device description, you receive a warning 
message. This is not a problem provided you create the object before you 
attempt to start the writer.
CRTPSFCFG  PSFCFG(QGPL/PDF) 
PDFGEN(*MAIL) 
PDFDEVTYPE(*IP40300)
PDFMULT(*YES)
PDFSENDER(MSHNIER)
PDFDTAQ(QGPL/PDFDTAQ) 
PDFMAPPGM(QGPL/EMAIL) 
TEXT('PSFconfiguration for PDF email')
• PSFCFG: PSF configuration object name. This name is referenced by the 
PDF device.
• PDFGEN (PDF Generation): This parameter tells the PDF Generation 
subsystem that you want to e-mail the PDF files.
• PDFDEVTYPE (PDF Device Type): This tells the PDF subsystem to use 
functions available on an IBM Infoprint 40, at 300 dots per inch. This is the 
recommended setting for this parameter.
• PDFMULT (Generate multiple PDF files): This tells the PDF subsystem to look 
for the embedded tag records and to generate multiple PDF e-mails 
accordingly.
• PDFSENDER (PDF Sender): This parameter identifies the user that is sending 
the e-mails. This user must be enrolled in the iSeries Directory. 
• PDFDTAQ (PDF Data Queue): Specifies the name of the data queue where 
PSF/400 will log the IPDS to PDF transformation completion notifications. This 
parameter is optional. See 14.6.1, “Using the PDF data queue” on page301, 
for additional information.
• PDFMAPPGM (PDF Mapping Program): This tells the PDF subsystem to run 
the user to obtain the valid e-mail addresses.
This step is done as part of the one-time setup.
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 page to pdf preview; add page numbers to a pdf in preview
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 pdf; add page number to pdf document
294
iSeries Printing VI: Delivering the Output of e-business
14.5.3  Creating an e-mail exit program 
As described in 14.3.5, “Running the CRTAFPDTA command” on page289, the 
CRTAFPDTA command causes index records that contain the customer number 
for each invoice to be inserted into the spooled file at the appropriate places. The 
e-mail exit program that is named in the PSF configuration object for the PDF 
transform uses this information to do a lookup on an iSeries database file that 
contains customer information, including their e-mail address.
You can find a description of the requirements for the input and output parameters 
and data structures for this program in AppendixE, “Supplemental Infoprint 
Server information” on page343.
As an experienced RPG programmer at the hypothetical Super Sun Seeds 
Company, you choose to write the e-mail exit program in RPGLE. A sample 
program listing can be found in AppendixE.1, “E-mail exit program” on page343. 
A sample C language program is also included in the
 Infoprint Server for iSeries 
User’s Guide
, G544-5775. 
Note that the e-mail Address field in the e-mail output information buffer may be 
defined as any length up to 16M. A length of 255 characters is adequate for the 
sample program. If you are sending each e-mail to multiple destinations you may 
need to make that field longer. 
The customer number that is found in the index records is passed into the 
program as the first six characters of the MAILTAG field. The program extracts 
those characters and performs a CHAIN operation to the LOOKUP file to retrieve 
the corresponding e-mail address. 
Figure186 shows an example of the DDS used to create the LOOKUP physical 
file. 
Figure 186.  DDS for e-mail LOOKUP file
Figure187 shows a sample of a few records from the e-mail LOOKUP file. Note 
that the e-mail addresses are surrounded by single quotes.
A                                      UNIQUE                      
A          R EMAILR                                                
A            CUSTNO         6A         COLHDG('CUSTOMER' 'NUMBER') 
A            COMP 
25A         COLHDG('COMPANY' 'NAME')    
A            PERSON        25A         COLHDG('CONTACT')           
A            EADDR
80A         COLHDG('E-MAIL' 'ADDRESS') 
A          K CUSTNO 
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 to pdf in preview; adding a page to a pdf in preview
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
adding a page to a pdf in reader; add a page to a pdf in reader
Chapter 14. End-to-end example 
295
Figure 187.  Sample records in e-mail LOOKUP file
If the CHAIN operation to the LOOKUP file is successful, the Disposition 
(DISPOSTN) field is assigned a value of 1, indicating that the e-mail should be 
sent. The e-mail address from the LOOKUP file (EADDR) is moved into the 
ADDRESS field. A short message is built, including the company name and the 
contact person, and is moved into the MSGTEXT field. The program ends and 
these values are returned to the PDF writer and are used to generate the 
electronic mail and attachment.
If the lookup fails, control is transferred to the RPGLE subroutine called 
“Not_Found”. The disposition field is set to “0”, indicating that the e-mail is not to 
be sent. A CL program, NOTFOUND, is called. This program performs two 
actions:
1. It sends a message to a user that contains the customer number that failed 
and the name of the PDF file that contains that customer’s invoice.
2. It copies the PDF file from the temporary location in QDLS to a user-specified 
folder in the IFS.
This second step must be done because the e-mail PDF process cleans up all 
of the temporary files at the end of the job, regardless of whether they are 
successfully sent.
You can find a listing for the NOTFOUND program in E.1.2, “NOTFOUND program 
called by e-mail” on page344. Figure188 illustrates a sample message that is 
issued by the NOTFOUND program. Note the structure of the PDFFILE name. 
The syntax for this name is described in the 
Infoprint Server for iSeries User’s 
Guide
, G544-5775.
Figure 188.  Sample message issued by the NOTFOUND program
Display Physical File Member                               
File . . . . . . :   LOOKUP              Library  . . . . :   QGPL                
Member . . . . . :   LOOKUP              Record . . . . . :   1                   
Control  . . . . .                       Column . . . . . :   1                   
Find . . . . . . .                                                                
*...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8..
100Improved Printing Corp   Simon Hodkin             'simon_h@uk.ibm.com'   
136Organic Garden Supplies  Jacques Hofstetter       'jacques_h@ch.ibm.com' 
141Los Arboles Del Mundo    Mira Shnier              'mira_s@ca.ibm.com' 
154The Last Leaf            Bill Shaffer             'bill_s@us.ibm.com.'  
****** END OF DATA ****** 
Display Physical File Member                               
File . . . . . . :   LOOKUP              Library  . . . . :   QGPL                  
Member . . . . . :   LOOKUP              Record . . . . . :   1                     
Control  . . . . .                       Column . . . . . :   1                     
Find . . . . . . .                                                                  
*...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8....
100Improved Printing Corp   Simon Hodkin             'simon_h@improved_prt.uk'   
136Organic Garden Supplies  Jacques Hofstetter       'jacques_h@organic.ch' 
141Los Arboles Del Mundo    Mira Shnier              'mira_s@los_arboles.ca' 
154The Last Leaf            Bill Shaffer             'bill_s@last_leaf.com.'  
****** END OF DATA ****** 
Display Messages                              
System:   BLDASL1       
Queue . . . . . :   MSHNIER                 Program . . . . :   WSMSGQ        
Library . . . :     QUSRSYS                 Library . . . :     AFP         
Severity  . . . :   00                      Delivery  . . . :   *HOLD         
Type reply (if required), press Enter.                                        
From  . . . :   QSPLJOB        06/17/01   17:48:37                          
Cannot find e-mail address for customer number    136 .  File              
/QDLS/PSF/092962/QPRTJOB/066591/MSHNIER/000004/OUTPUTMR/
06172001/000002.PDF not sent. 
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 numbers to pdf using preview; add page number to pdf
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:
adding pages to a pdf document in preview; add pages to pdf reader
296
iSeries Printing VI: Delivering the Output of e-business
This step is done as part of the one-time setup.
14.5.3.1  Using USRDTA in the e-mail exit program
In this example, the exit program looks up the e-mail addresses based on the 
customer number passed to it in the index records. You may also find a similar 
exit program can be used to e-mail individual spooled files. 
The USRDFNDTA parameter in the printer file can be used to specify an e-mail 
address by entering a value for MAILTAG. This is described in Chapter4, “Using 
the Infoprint Server for iSeries PDF transform” on page103. However, this 
parameter may only be set when the printer file is created with CRTPRTF or by 
using an override printer file (OVRRPRTF). If the spooled file already exists, you 
cannot use the Change Spooled File Attributes (CHGSPLFA) command to 
change the value of USERDFNDTA. 
One solution is to change the USRDTA field for the spooled file. This field is 
passed as input to the e-mail exit program and can easily be set up as the search 
key for a lookup function to find the associated e-mail address.
14.5.4  Sending the spooled file as a PDF
You are now ready to send the spooled file as an e-mail. Move the spooled file to 
the output queue associated with the PDF device description and start the writer. 
Once the file arrives in the output queue for the PDF writer, all the conversion and 
e-mail tasks are done as defined in the PSF configuration object for that output 
queue. See 14.5.2, “Configuring a PDF device and PSF configuration object” on 
page292.
Figure189 shows an example of the file as it appears in the mailbox of a Lotus 
Notes user. 
Figure 189.  Sample Lotus Notes e-mail with PDF attachment
When you open the attached PDF file with Adobe Acrobat, you see the invoice 
from Super Sun Seeds as shown in Figure190.
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)
adding a page to a pdf; adding page to pdf in preview
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
add pdf pages to word document; add page to a pdf
Chapter 14. End-to-end example 
297
Figure 190.  Opening the PDF attachment with Adobe Acrobat
Moving the spooled files to the output queue is a step that is included in the job 
that processes each spooled file.
14.5.5  Checking for non-delivery messages
The e-mail function of Infoprint Server for iSeries uses the Send Distribution 
(SNDDST) command to do the mailing. SNDDST in itself was originally designed 
for distribution using SNA Distribution Services (SNADS). However, its functions 
are mapped to TCP/IP Simple Mail Transfer Protocol (SMTP) and e-mail 
addressing. 
When an e-mail document is sent, and either the destination user name or the 
domain name is incorrect, a message is returned to the sender. The SNDDST 
command does not have a specific vehicle to check for these incoming 
messages, but they are accessible and should be monitored. 
The non-delivery messages are directed to the user who is designated as the 
sender of the e-mails. The sender name can be specified with the PDFSENDER 
parameter in the PSF configuration object used for the PDF function. Or it may be 
set in the USRDFNDTA in the spooled file itself by specifying a value for 
MAILSENDER. The spooled file setting overrides the PSF configuration object. 
One way to set up the sender to receive the non-delivery messages is to set up a 
Post Office Protocol Version 3 (POP3) client associated with their user ID. This is 
done by mapping the sender’s entry in the iSeries server directory to an SMTP 
address. An SMTP address is the address you see on the Internet 
(myname@domain)There are three steps: 
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 remove pages from pdf; add page to pdf reader
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 break to pdf; add page numbers pdf file
298
iSeries Printing VI: Delivering the Output of e-business
1. Enroll the sender in the system directory.
2. Associate the sender’s user ID with an SMTP user ID.
3. Configure a client to receive e-mail for that user.
Be aware that you are dealing with three different types of user identification 
here. There is the iSeries server user profile that is created with the CRTUSRPRF 
command. There is the SNADS user ID in the iSeries server directory that is 
created using ADDIRE. Finally there is the SMTP address used for Internet mail 
that is created using the WRKNAMSMTP command. To avoid confusion, we 
recommend you make all three of these names the same.
14.5.5.1  Enrolling the sender in the system directory
The sender’s user ID must be added to the iSeries server directory for the e-mail 
function to work. To direct the non-delivery messages to a POP3 client for the 
sender, use the Add Directory Entry (ADDDIRE) or Change Directory Entry 
(CHGDIRE) command. Then select option 
2
(System message store) for Mail 
service level and option 
3
(SMTP name) for Preferred address as shown in the 
example in Figure191.
Figure 191.  CHGDIRE for sender to receive non-delivery notices
14.5.5.2  Associating the sender’s user ID with an SMTP address
The SMTP address for e-mail must be associated with the user’s SNADS address 
name that is in the system directory. While you are enrolling the user in the 
system directory, press F19 from the CHGDIRE panel as shown in Figure191, 
which takes you to the Change Name for SMTP panel. An alternative is to enter 
WRKNAMSMTP on the command line. The panel shown in Figure192 should 
appear the same either way.
Change Directory Entry         
User ID/Address . . . . :   MSHNIER   BLDASL1 
Type changes, press Enter.                                                     
Mail service level  . .   2                1=User index                
2=System message store      
4=Lotus Domino              
9=Other mail service        
For choice 9=Other mail service:                                           
Field name  . . . .                    F4 for list                 
Preferred address . . .   3                1=User ID/Address           
2=O/R name                  
3=SMTP name                 
9=Other preferred address   
Address type  . . . .                    F4 for list                 
For choice 9=Other preferred address:                                      
Field name  . . . .                    F4 for list                 
More... 
F3=Exit F4=Prompt F5=Refresh F12=Cancel F18=Display location details   
F19=Change name for SMTP           F22=Remove name for SMTP 
Chapter 14. End-to-end example 
299
Figure 192.  Associating an SMTP address to a user ID using WRKNAMSMTP
14.5.5.3  Configuring a POP3 client to receive the messages
There are many software products that can be used to act as a client to the 
iSeries POP3 server. These include clients such as Eudora or Netscape. The 
configuration steps naturally depend on each product’s individual interface. 
However, the information you must provide is basically the same. 
This example uses Netscape Mail. Identify the incoming mail server by selecting 
Edit-> Preferences-> Mail & Newsgroups-> Mail Servers. Then you see the 
Preferences panel (Figure193).
Figure 193.  Netscape Mail Server Preferences
Click Add to define the incoming mail server to the address you previously 
defined for the e-mail sender. Figure194 shows an example of the Mail Server 
Properties panel that appears.
Add Name for SMTP                              
System:   BLDASL1 
User ID/Address . . . . . :   MSHNIER   BLDASL1                                 
SMTP user ID  . . . . . . :   MSHNIER                                          
SMTP domain . . . . . . . :   BLDASL1.PENN.BOULDER.IBM.COM                     
SMTP route  . . . . . . . :                                                    
Press Enter to continue.                                                       
F3=Exit   F12=Cancel                 
300
iSeries Printing VI: Delivering the Output of e-business
Figure 194.  Netscape Mail Server Properties
The user name you enter here should match the iSeries user ID. When the 
sender retrieves mail, they are prompted for the iSeries password for that user ID. 
If you use this client to send electronic mail to other destinations via the iSeries 
server, you must set up the outgoing mail server information and other 
identification information. 
Figure195 shows a portion of a returned e-mail that was sent to an incorrect 
domain. The format is slightly different if the domain name is correct, but the user 
name is wrong. Not shown here is the fact that the original e-mail is contained in 
this message further down the page, including the PDF attachment. 
Figure 195.  Returned e-mail message in Netscape
You should give some thought as to how you set up and manage the sender user 
ID for the PDF distribution function. If you set up your PSF Configuration object 
with the default value of PDFSENDER(*SPLFOWN), you may have to enroll many 
different users so they can monitor for the non-delivery messages. For 
business-critical applications, consider setting up a special user ID for the sender 
function and have one individual responsible for checking for messages and 
taking appropriate action, such as contacting the intended recipient and 
re-sending the document.
Chapter 14. End-to-end example 
301
For more information on using the iSeries server as an e-mail server, go to the 
iSeries Information Center on the Internet at: 
http://publib.boulder.ibm.com/pubs/html/as400/infocenter.html
Select V5R1-> Networking-> TCP/IP-> E-mail.
The configuration of the sender to send and receive e-mail is done only once 
during setup. 
14.6  Other maintenance tasks
The example provided in this chapter involves only the basic minimum coding 
required to produce the desired electronic mail. To implement this as a robust 
business solution, additional tasks must be included in the application. Some of 
these include:
• Building CL programs to automate the process
• Checking the data queue for the status of each of the PDF files
• Maintenance routines to add, change, and delete records in the LOOKUP file
• Cleanup of any temporary files created in the IFS or standard library structure 
14.6.1  Using the PDF data queue 
The IPDS to PDF process creates entries in a data queue object if you specify 
one in the PDFDTAQ parameter in the PSF configuration object. To use this 
function, the data queue must exist and have a minimum length of 752 
characters. Use the iSeries QRCVDTAQ API to read the entries. For more 
information on QRCVDTAQ, see the iSeries Information Center on the Internet 
(see the Web address in the previous section).
Using the data queue helps you identify other types of problems that may occur. 
For example, if you forget the single quotes on the e-mail address in the LOOKUP 
table, it is treated as an invalid address and the file is not sent. A return value of 
‘05’ is logged in the data queue.
The layout of the fields in the data queue are listed in E.2, “PDF data queue 
structure” on page346.
14.7  An alternative to e-mail
There are situations for which it is more appropriate to post the PDF files on a 
Web site for users to retrieve rather than to have the files e-mailed directly. This 
approach is sometimes referred to as having the end user “Pull” the information 
rather than you “Push” it to them. 
In this case, you may choose to follow most of the steps described in this 
document. However, rather than e-mailing the final documents, you store them in 
the system IFS as stream files by specifying PDFGEN(*STMF). A Web server 
application posts the files as required. In this situation, the information in the data 
queue is useful. It can be used to match up the index information in the Mail Tag 
field to the path and name of the PDF file that is created in the IFS. 
302
iSeries Printing VI: Delivering the Output of e-business
You may also choose to store the files as stream files if you plan on using a 
different method to e-mail the PDF files. For example, you may want to integrate 
the PDF stream files in a Domino-based application.
14.8  One-time setup versus ongoing tasks
This chapter describes a number of steps that are needed to complete the task of 
converting an iSeries applications from a spooled file to an e-mail containing a 
PDF attachment. These tasks can be divided into two categories:
• One-time setup tasks
• Tasks to be repeated for each spooled file
To help in planning, the two types are summarized here.
14.8.1  One-time setup
You perform the following tasks once as part of the one-time setup of the e-mail 
function:
• Create or modify the Infoprint Designer project.
• Modify the printer file or change the CL to use the new form definition, page 
definition, and overlay.
• Modify the application program (if necessary) to generate data that can be 
used by the CRTAFPDTA index function.
• Modify the ICODED.FNT file in AFP Viewer if necessary.
• Check the output using the AFP Viewer.
• Enable OS/400 to send e-mail.
• Create the PDF printer device description and PSF Configuration object.
• Create the e-mail exit program.
• Enroll the sender in the iSeries server directory and create an SMTP address.
• Configure a POP3 client to receive the non-delivery messages.
• Create a data queue to capture status messages.
14.8.2  Repeated tasks
It is likely that you will want to build a CL program to manage the steps that will be 
repeated for each spooled file you are mailing using this process. The steps to 
incorporate in the program include:
• Creating a physical file to receive the output from the CRTAFPDTA command.
• Setting the default target directory for the CRTAFPDTA command using the 
CHGCURDIR command.
• Running the CRTAFPDTA command.
• Changing the OUTPUTMRG member name to a more meaningful name.
• Re-spooling the output using the PRTAFPDTA command.
• Moving the output to the PDF output queue.
• Monitoring for files not sent.
• Cleaning up any temporary files created during this process.
Documents you may be interested
Documents you may be interested