c# adobe pdf reader : Add document to pdf pages Library software component .net windows asp.net mvc Pro_Silverlight_5_in_CSharp_4th_edition84-part153

CHAPTER 22  FILE ACCESS 
841 
IsolatedStorageSettings.ApplicationSettings["LastRunDate"] = DateTime.Now; 
And here’s an example that stores a Person object under the key name CurrentUser: 
IsolatedStorageSettings.ApplicationSettings["CurrentUser"] = new Person(...); 
Retrieving it is just as easy, although you need to cast the object to the right type: 
DateTime date = (DateTime
IsolatedStorageSettings.ApplicationSettings["LastRunDate"]; 
Person person = (Person)IsolatedStorageSettings.ApplicationSettings["CurrentUser"]; 
You can also use the Contains() method to check whether a key exists in the ApplicationSettings 
collection, and you can use the Remove() method to delete an existing piece of information. 
The ApplicationSettings class stores all the information it contains automatically when the 
Silverlight application shuts down (for example, when the user navigates to a new page). Thus, the 
information will be present in the ApplicationSettings collection the next time the user runs the 
application. The IsolatedStorageSettings class also provides a SiteSettings collection that works in much 
the same way—it’s an untyped collection that can hold any type of serializable data—but is scoped to 
the current website domain. That means any Silverlight applications running at that domain have access 
to these settings. 
The ApplicationSettings collection and SiteSettings collection are really just niceties that simplify 
what you can already do directly with isolated storage. However, they’re a convenient place to store 
small scraps of configuration information without needing to build a more complex data model for your 
application. 
Accessing Files Outside of Isolated Storage 
As you’ve seen, Silverlight applications aren’t allowed to browse the file system. But you can use several 
back doors to read and write individual files—provided the user selects them first. These back doors are 
the OpenFileDialog and SaveFileDialog classes and the drag-and-drop feature. 
The OpenFileDialog and SaveFileDialog classes allow you to show a standard Open and Save dialog 
box in response to a user-initiated action (like a button click). The user then selects a file in the dialog 
box, which is returned to your code as a stream. If you show the Open dialog box, you get given a read-
only stream for accessing the file. If you show the Save dialog box, you get a writeable stream. Either way, 
the OpenFileDialog and SaveFileDialog classes give you access to a single specific file, while walling off 
everything else. 
 Note  For security reasons, Silverlight does not support the OpenFileDialog and SaveFileDialog classes in full-
screen mode. Although Silverlight’s standard behavior is to switch out of full-screen mode as soon as you show 
either one, it’s better for your code to set explicitly set Application.Current.Host.Content.IsFullScreen to false to 
avoid any possible problems on different browsers and operating systems. 
Silverlight’s drag-and-drop feature is similar to the OpenFileDialog. It allows your application to 
access one or more files in read-only mode, provided the user explicitly drags these files onto an element 
in your application. The advantage of the drag-and-drop feature is that the file selection requires fewer 
user steps. It’s particularly convenient if the user needs to select a large number of files at once. 
www.it-ebooks.info
Add document to pdf pages - 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 document to pdf pages; add page number to pdf document
Add document to pdf pages - 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
adding page numbers to pdf document; add page number to pdf file
CHAPTER 22  FILE ACCESS 
842 
In the following sections, you’ll learn how to use all these approaches. You’ll also consider a realistic 
application that uploads user-selected files to a web service. 
Reading Files with OpenFileDialog 
OpenFileDialog allows you to show the ordinary Open File dialog box. After the user chooses a file, it’s 
made available to your application for reading only. No restrictions are placed on the OpenFileDialog, so 
it’s possible for the user to choose any file. However, there’s no way for you to access any file without the 
user explicitly choosing it and clicking Open, which is considered to be a high enough bar for security. 
To use OpenFileDialog, you first create a new instance and then set the Filter and FilterIndex 
properties to configure what file types the user sees. The Filter property determines what appears in the 
file-type list. 
You need to indicate the text that should appear in the file-type list and the corresponding 
expression that the OpenFileDialog box will use to filter files. For example, if you want to allow the user 
to open text files, you can show the text “Text Files (*.txt)” and use the filter expression *.txt to find all 
files with the .txt extension. Here’s how you then set the Filter property: 
OpenFileDialog dialog = new OpenFileDialog(); 
dialog.Filter = "Text Files (*.txt)|*.txt"
You use the pipe (|) character to separate the display text from the filter expression in the filter 
string. If you have multiple file types, string them one after the other, separated by additional pipe 
characters. For example, if you want to let the user see different types of images, you can write a filter 
string like this: 
dialog.Filter = "Bitmaps (*.bmp)|*.bmp|JPEGs (*.jpg)|*.jpg|All files (*.*)|*.*"
You can also create a filter expression that matches several file types, by separating them with 
semicolons: 
dialog.Filter = "Image Files (*.bmp;*.jpg;*.gif)|*.bmp;*.jpg;*.gif"
After you’ve configured the OpenFileDialog, you then show the dialog box by calling ShowDialog(). 
The ShowDialog() method returns a DialogResult value that indicates what the user selected. If the result 
is true, the user picked a file, and you can go ahead and open it: 
if (dialog.ShowDialog() == true
{ ... } 
The file is exposed through the OpenFileDialog.File property, which is a FileInfo object. The FileInfo 
is a relatively simple class that exposes a small set of useful members, including a Name property that 
returns the file name, an OpenRead() method that returns a FileStream object in read-only mode, and 
an OpenText() method that creates the FileStream and returns a StreamReader for it: 
if (dialog.ShowDialog() == true
using (StreamReader reader = dlg.File.OpenText()) 
string data = reader.ReadToEnd(); 
Obviously, the OpenText() method is a good shortcut if you’re dealing with text data, and 
OpenRead() is a better choice if you need to create a BinaryReader or use the FileStream.Read() method 
directly to pull out a block of bytes. 
www.it-ebooks.info
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
pageIndexes.Add(3); // The 4th page. Create the new document with 3 String outputFilePath = Program.RootPath + "\\" Output.pdf"; newDoc.Save(outputFilePath
add remove pages from pdf; add pages to pdf document
VB.NET PDF Page Extract Library: copy, paste, cut PDF pages in vb.
pageIndexes.Add(3) ' The 4th page Create the new document with 3 Dim outputFilePath As String = Program.RootPath + "\\" Output.pdf" newDoc.Save(outputFilePath
adding page numbers in pdf file; add page number to pdf online
CHAPTER 22  FILE ACCESS 
843 
 Tipall 
ShowDialog(). Then, retrieve all the selected files through the OpenFileDialog.Files property. 
One interesting way to use OpenFileDialog is to copy a selected file from the local hard drive to 
isolated storage so the application can manipulate it later. Here’s an example that performs this trick: 
OpenFileDialog dialog = new OpenFileDialog(); 
dialog.Filter = "All files (*.*)|*.*"
dialog.Multiselect = true
// Show the dialog box. 
if (dialog.ShowDialog() == true
// Copy all the selected files to isolated storage. 
using (IsolatedStorageFile store =  
IsolatedStorageFile.GetUserStoreForApplication()) 
foreach (FileInfo file in dialog.Files) 
using (Stream fileStream = file.OpenRead()) 
// Check for free space. 
if (fileStream.Length > store.AvailableFreeSpace) 
using (IsolatedStorageFileStream storeStream = 
store.CreateFile(file.Name)) 
// Write 1 KB block at a time. 
byte[] buffer = new byte[1024]; 
int count = 0; 
do 
if (count > 0) storeStream.Write(buffer, 0, count); 
while (count > 0); 
Writing Files with SaveFileDialog 
When you’ve mastered OpenFileDialog, the SaveFileDialog class will seem straightforward. Like 
OpenFileDialog, it allows the user to hunt around the hard drive and choose a file that is exposed to your 
www.it-ebooks.info
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
Add necessary references: RasterEdge.Imaging.Basic.dll. This is a VB .NET example for how to delete a range of pages from a PDF document.
adding a page to a pdf in preview; add blank page to pdf preview
C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
options, including setting a single page, a series of pages, and random pages to be C#.NET Project DLLs for Deleting PDF Document Page. Add necessary references
adding page numbers to pdf in preview; add page numbers to pdf document in preview
CHAPTER 22  FILE ACCESS 
844 
application. You can’t retrieve any details about where this file is located or what other files exist in the 
same folder. Instead, SaveFileDialog gives you a stream into which you can write data. 
To use the SaveFileDialog class, begin by creating an instance and setting the file-type filter. Then, 
show the dialog box (using the familiar ShowDialog() method), and grab the stream for the selected file 
(using the OpenFile() method). Here’s a simple code routine that demonstrates these steps by copying 
text out of a text box into a user-designated file: 
SaveFileDialog saveDialog = new SaveFileDialog(); 
saveDialog.Filter = "Text Files (*.txt)|*.txt";  
if (saveDialog.ShowDialog() == true
using (Stream stream = saveDialog.OpenFile()) 
using (StreamWriter writer = new StreamWriter(stream)) 
writer.Write(txtData.Text); 
You can also use the DefaultExt property to set a default file extension and the DefaultFileName 
property to set a recommended file name. Of course, the user is free to change the name before actually 
saving the file. 
saveDialog.DefaultExt = "txt";  
saveDialog.DefaultFileName = "NewDocument1.txt";  
SaveFileDialog adds the default extension to the file name the user types in, unless the file name 
already includes the same extension. If the user includes a different extension (for example, the 
DefaultExt is txt and the user enters myfile.test), the default extension is still added to the end (for 
example, making the file myfile.test.txt). 
If the user picks a file that already exists, a confirmation message appears asking whether the user 
wants to overwrite the existing file. This will happen when the user selects an existing file from the 
displayed list or if the user types in a file name that, with the addition of the default extension, matches 
an existing file. Either way, the user must confirm the operation to close the dialog box and continue. 
Finally, after ShowDialog() returns, you can retrieve the file name the user selected, without any 
folder or path information, from the SafeFileName property. 
Transmitting Files with a Web Service 
With the combination of OpenFileDialog and SaveFileDialog, it’s possible to build an application that 
copies server content to the local computer or uploads local files to a location on the web server. In fact, 
building an application like this is easy—all you need is a back-end web service that manages the files. 
Figure 22-5 shows a simple example that demonstrates the concept. When this application first 
starts, it requests from the server a list of available files. The user can then choose to upload new files or 
download one of the existing ones. In a more sophisticated example, the web server could require some 
form of authentication and give each user access to a different collection of files. 
www.it-ebooks.info
VB.NET PDF insert image library: insert images into PDF in vb.net
VB.NET PDF - Add Image to PDF Page in VB.NET. Guide VB.NET Programmers How to Add Images in PDF Document Using XDoc.PDF SDK for VB.NET.
add or remove pages from pdf; adding page numbers to pdf documents
C# PDF Password Library: add, remove, edit PDF file password in C#
in C#.NET framework. Support to add password to PDF document online or in C#.NET WinForms for PDF file protection. Able to create a
add page numbers to pdf online; add page number pdf file
CHAPTER 22  FILE ACCESS 
845 
Figure 22-5. A Silverlight-based file uploader 
You can try this complete example with the downloadable code for this chapter. In the following 
sections, you’ll walk through all the essential code. 
The File Service 
The backbone of this example is a set of server-side methods that allows the Silverlight application to do 
three things: retrieve a list of files, download an existing file, and upload a new file. In this example, a 
single service named FileService takes care of all three tasks. 
FileService provides access to the files in a predefined location. In this case, files are stored in a 
subfolder on the server named Files. Here’s the basic outline of the web service code: 
[ServiceContract(Namespace = "")] 
[AspNetCompatibilityRequirements(RequirementsMode = 
AspNetCompatibilityRequirementsMode.Allowed)] 
public class FileService 
private string filePath; 
public FileService() 
filePath = HttpContext.Current.Server.MapPath("Files"); 
[OperationContract
public string[] GetFileList() 
... 
www.it-ebooks.info
C# PDF insert image Library: insert images into PDF in C#.net, ASP
Create high resolution PDF file without image quality losing in ASP.NET application. Add multiple images to multipage PDF document in .NET WinForms.
add pages to pdf preview; add and remove pages from a pdf
C# PDF File & Page Process Library SDK for C#.net, ASP.NET, MVC
Document Protect. Password: Set File Permissions. Password: Open Document. Edit Digital Highlight Text. Add Text. Add Text Box. Drawing Markups. PDF Print. Work
add page to pdf in preview; adding page numbers pdf file
CHAPTER 22  FILE ACCESS 
846 
[OperationContract
public void UploadFile(string fileName, byte[] data) 
... 
[OperationContract
public byte[] DownloadFile(string fileName) 
... 
When handling file names, the server code takes great care to remove the path information so that 
no sensitive details are passed back to the client. You can see this in the GetFileList() method, which uses 
the System.IO.Path class to strip the path information out of each of the file names: 
[OperationContract
public string[] GetFileList() 
// Scan the folder for files. 
string[] files = Directory.GetFiles(filePath); 
// Trim out path information. 
for (int i = 0; i < files.Count(); i++) 
files[i] = Path.GetFileName(files[i]); 
// Return the file list. 
return files; 
The DownloadFile() method needs to take similar care but for a different reason. It makes sure to 
strip any path information out of the caller-supplied file name. This prevents malicious callers from 
passing in relative paths such as ../../../Windows/System/somefile.dll, which could otherwise trick the 
application into returning a sensitive file. 
Once the DownloadFile() code has safely filtered out the file name, it opens the file, copies its 
contents to a byte array, and returns the data: 
[OperationContract
public byte[] DownloadFile(string fileName) 
// Make sure the filename has no path information. 
string file = Path.Combine(filePath, Path.GetFileName(fileName)); 
using (FileStream fs = new FileStream(file, FileMode.Open)) 
byte[] data = new byte[fs.Length]; 
fs.Read(data, 0, (int)fs.Length); 
www.it-ebooks.info
CHAPTER 22  FILE ACCESS 
847 
return data; 
 Note  The file transfer technique used in DownloadFile() requires loading the contents of the file into memory. 
Thus, this approach isn’t suitable for extremely large files, and it’s a good idea to add a safeguard that checks the 
file length before attempting to create the byte array. When dealing with larger files, you’ll probably want to pass a 
URI to the client and let the client download the file from that URI. To keep your files fairly private, you can use a 
randomly generated file name that incorporates a globally unique identifier (GUID) using the System.Guid class. 
Finally, the web service allows the user to submit a block of data that will be blindly written to the 
Files folder. The user gets to choose the file name, and once again, any path information is stripped out 
before the file is created. 
[OperationContract
public void UploadFile(string fileName, byte[] data) 
// Make sure the filename has no path information. 
string file = Path.Combine(filePath, Path.GetFileName(fileName)); 
using (FileStream fs = new FileStream(file, FileMode.Create)) 
fs.Write(data, 0, (int)data.Length);             
You might think the UploadFile() method is a logical place to check the size of the byte[] array so 
that a malicious user can’t pass extremely large files that will consume the hard drive. However, WCF 
already clamps down on this ability by restricting the maximum message size it accepts and the 
maximum size of transmitted arrays in that message. These limits are meant to stop denial-of-service 
attacks by making it impossible for an attacker to tie the server up with huge or complex messages that 
are time-consuming to process. 
If you actually do want to build a web service that accepts large amounts of data, you’ll need to 
perform a fair bit of tweaking in both the web.config file on the web server and the 
ServiceReferences.ClientConfig in the client. Although these configuration changes are outside the 
scope of this book, you can get the full details at http://tinyurl.com/nc8xkn. You can also see them at 
work with the downloadable code for this chapter, which is configured to allow large file uploads and 
downloads. 
The Silverlight Client 
The code for the client is fairly straightforward. All web service calls go through a single FileServiceClient 
instance, which is stored as a field in the page class. When the page first loads, the code attaches all the 
event handlers it will use for the various completed events and then calls the GetFileListAsync() method 
to fetch the list of files for the list box. 
www.it-ebooks.info
CHAPTER 22  FILE ACCESS 
848 
private FileServiceClient client = new FileServiceClient(); 
private void Page_Loaded(object sender, RoutedEventArgs e) 
// Attach these event handlers for uploads and downloads. 
client.DownloadFileCompleted += client_DownloadFileCompleted; 
client.UploadFileCompleted += client_UploadFileCompleted; 
// Get the initial file list. 
client.GetFileListCompleted += client_GetFileListCompleted; 
client.GetFileListAsync(); 
private void client_GetFileListCompleted(object sender, 
GetFileListCompletedEventArgs e) 
try 
lstFiles.ItemsSource = e.Result; 
catch 
lblStatus.Text = "Error contacting web service."
When the user selects a file and clicks the Download button, the application shows the 
SaveFileDialog so the user can pick the downloaded location. You can’t show SaveFileDialog after, when 
the DownloadFileCompleted event occurs, because this event isn’t user-initiated. (If you try, you’ll 
receive a SecurityException.) 
However, even though the code starts by showing the SaveFileDialog, it doesn’t attempt to open the 
FileStream right away. Doing so would leave the file open while the download is underway. Instead, the 
code passes the SaveFileDialog object to DownloadFileCompleted event as a state object, using the 
optional second argument that’s available with all web service methods. 
private void cmdDownload_Click(object sender, RoutedEventArgs e) 
if (lstFiles.SelectedIndex != -1) 
{     
SaveFileDialog saveDialog = new SaveFileDialog(); 
if (saveDialog.ShowDialog() == true
saveDialog); 
lblStatus.Text = "Download started."
The DownloadFileCompleted event retrieves the SaveFileDialog object and uses it to create the 
FileStream. It then copies the data from the byte array into this file. 
private void client_DownloadFileCompleted(object sender, 
DownloadFileCompletedEventArgs e) 
www.it-ebooks.info
CHAPTER 22  FILE ACCESS 
849 
if (e.Error == null
{    
lblStatus.Text = "Download completed."
// Get the SaveFileDialog that was passed in with the call. 
SaveFileDialog saveDialog = (SaveFileDialog)e.UserState; 
using (Stream stream = saveDialog.OpenFile()) 
lblStatus.Text = "File saved to " + saveDialog.SafeFileName; 
}             
else 
lblStatus.Text = "Download failed."
A nice side effect of this approach is that this code allows the user to start multiple simultaneous 
downloads. Each one has its own SaveFileDialog object, and so each one can be saved to the appropriate 
file when the download is complete. 
The uploading code is similar, but it shows the OpenFileDialog and retrieves the data from the file 
as soon as the user selects the file. The data is placed in a byte array and passed to the UploadFileAsync() 
method. The code the Silverlight client uses to accomplish this task is almost the same as the code the 
web service uses to open a file in the DownloadFile() method. 
private void cmdUpload_Click(object sender, RoutedEventArgs e) 
OpenFileDialog openDialog = new OpenFileDialog(); 
if (openDialog.ShowDialog() == true
try 
using (Stream stream = openDialog.File.OpenRead()) 
// Don't allow really big files (more than 5 MB). 
if (stream.Length < 5120000) 
byte[] data = new byte[stream.Length]; 
stream.Read(data, 0, (int)stream.Length); 
lblStatus.Text = "Upload started."
else 
lblStatus.Text = "Files must be less than 5 MB."
www.it-ebooks.info
CHAPTER 22  FILE ACCESS 
850 
catch 
lblStatus.Text = "Error reading file."
}             
private void client_UploadFileCompleted(object sender, 
System.ComponentModel.AsyncCompletedEventArgs e) 
if (e.Error == null
lblStatus.Text = "Upload succeeded."
// Refresh the file list. 
client.GetFileListAsync(); 
else 
lblStatus.Text = "Upload failed."
This completes the example and gives you a fully functional client that can transfer content to and 
from the web server. 
Dragging and Dropping Files 
The OpenFileDialog class provides the most practical way for a Silverlight application to access a file that 
isn’t in isolated storage. However, Silverlight offers one more approach. If a selects one or more files (for 
example, in Windows Explorer or on the desktop), drags these files over your Silverlight application, and 
then drops them onto an element, your application can read these files. Web-based uploading tools (for 
example, with SharePoint and Microsoft’s SkyDrive service) often include this sort of feature to make it 
easier to upload an entire batch of files at once. 
Figure 22-6 shows a Silverlight application that uses this feature. First, the user drags one or more 
image files and drops them on the large shaded rectangle. Then, the application reads the image data 
from all the files and adds a thumbnail for each one in the list on the right.  
www.it-ebooks.info
Documents you may be interested
Documents you may be interested