c# adobe pdf reader : Add pdf pages to word application Library tool html asp.net azure online Pro_Silverlight_5_in_CSharp_4th_edition85-part154

CHAPTER 22  FILE ACCESS 
851 
Figure 22-6. Dragging and dropping image files 
 Note  The most practical applications of the drag and drop usually involve uploading content to a web server. 
For example, you could easily duplicate the multiple-document uploading feature in SharePoint or SkyDrive using a 
combination of the Silverlight drag-and-drop feature and a file-uploading web service (like the one described 
earlier in the section “Transmitting Files with a Web Service.”) 
DRAG-AND-DROP FEATURE ON A MAC 
The drag-and-drop feature works seamlessly on a Windows computer but not on a Mac. The problem is 
that Mac web browsers, like Safari, have a slightly different plug-in model. The key difference is that they 
www.it-ebooks.info
Add pdf pages to word - 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 and remove pages from pdf file online; add a page to a pdf file
Add pdf pages to word - 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 and delete pages in pdf online; add or remove pages from pdf
CHAPTER 22  FILE ACCESS 
852 
don’t provide HTML DOM events to the plug-ins that are hosted in a web page. As a result, when you drop 
a file onto a Silverlight content region on a Mac, the web page receives the event, but the Silverlight 
application does not. 
Currently, there is a Mac workaround that solves this issue on Safari web browsers but not on Firefox. It 
involves adding a small section of JavaScript to the hosting web page, which will then manually forward 
drag-and-drop events to the Silverlight application. For the full details, refer to the documentation at 
http://msdn.microsoft.com/library/ee670998.aspx
. Unfortunately, at the time of this writing, Mac 
users running Firefox won’t be able to drag files onto Silverlight applications, even using the workaround. 
It’s fairly easy to build the application shown in Figure 22-6. The first step is to add the element that 
will receive the dropped data. Often, this is displayed a large rectangular area, so it makes sense to use a 
Border or a simple Rectangle (although any element supports the drag-and-drop feature). You must 
then set the AllowDrop property to true, as shown here:  
<Rectangle x:Name="rectDropSurface" Margin="5" Fill="LightSteelBlue" 
Stroke="SteelBlue" StrokeThickness="1" AllowDrop="True" 
</Rectangle
Now you simply need to handle the right events. Optionally, you can respond to the DragEnter, 
DragLeave, and DragOver events to provide some sort of status information as the drag is in progress. 
More importantly, you must handle the Drop event to receive the dropped data: 
<Rectangle x:Name="rectDropSurface" Margin="5" Fill="LightSteelBlue" 
Stroke="SteelBlue" StrokeThickness="1" AllowDrop="True" 
DragEnter="rectDropSurface_DragEnter" DragLeave="rectDropSurface_DragLeave" 
Drop="rectDropSurface_Drop"> 
</Rectangle
In the example shown in Figure 22-6, the DragEnter and DragLeave event handlers simply update a 
label in the display: 
private void rectDropSurface_DragEnter(object sender, DragEventArgs e) 
lblResults.Text = "You are dragging an object over the drop area."
private void rectDropSurface_DragLeave(object sender, DragEventArgs e) 
lblResults.Text = ""
The Drop event is more interesting. It checks what data has been dropped using the 
DrageEventArgs.GetDataPresent() method. When calling this method, you need to specify the type of 
data you want to read using a value from the DataFormats enumeration. Currently, Silverlight supports 
just one value: DataFormats.FileDrop. That means it isn’t possible to drag a text selection from Microsoft 
Word or a chart object from Microsoft Excel and drop it into a Silverlight application. However, it’s still 
considered good form to explicitly test the type of data, because future versions of Silverlight may add 
support for other data types. 
private void rectDropSurface_Drop(object sender, DragEventArgs e) 
// Check if data is present and in the correct format. 
www.it-ebooks.info
VB.NET Create PDF from Word Library to convert docx, doc to PDF in
File: Split PDF; C# Page: Insert PDF pages; C# Page: Delete PDF pages; C# Read C# Read: PDF Image Extract; C# Write: Insert text into PDF; C# Write: Add Image to
adding pages to a pdf document in preview; add pages to pdf acrobat
C# PDF insert image Library: insert images into PDF in C#.net, ASP
C#.NET PDF SDK - Add Image to PDF Page in C#.NET. How to Insert & Add Image, Picture or Logo on PDF Page Using C#.NET. Add Image to PDF Page Using C#.NET.
adding page numbers to pdf in preview; add page numbers to pdf document in preview
CHAPTER 22  FILE ACCESS 
853 
if ((e.Data != null) && 
(e.Data.GetDataPresent(DataFormats.FileDrop))) 
... 
Once you’ve performed this check, you can call the DragEventArgs.GetData() method to actually 
retrieve the data. Silverlight provides the dropped-in files as an array of FileInfo objects: 
... 
FileInfo[] files = (FileInfo[])e.Data.GetData(DataFormats.FileDrop); 
... 
It’s important to note that you can’t use FileInfo properties such as DirectoryName and FullPath to 
get the full path information for dropped files. Doing so causes a SecurityException to be thrown. (The 
exception is if you’re running an elevated trust application, as described in Chapter 21). However, you 
can use the Name property to get the file name with no path information, and you can use the Length 
property to get the file size in bytes. 
The following code uses the Name property to extract the file extension. If the file is a recognized 
image type, it carries ahead, opening a FileStream, reading the data, and loading the image content into 
an ImageSource object. The ImageSource is then added to a list. 
... 
foreach (FileInfo file in files) 
string ext = System.IO.Path.GetExtension(file.Name); 
// Check if it's an image. 
switch (ext.ToLower()) 
case ".jpg"
case ".gif"
case ".png"
case ".bmp"
try 
// add it to the list. 
using (FileStream fs = file.OpenRead()) 
BitmapImage source = new BitmapImage(); 
source.SetSource(fs); 
lstImages.Items.Add(source); 
catch (Exception err) 
lblResults.Text = "Error reading file: " + err.Message; 
break
default
lblResults.Text = 
"The dropped file was not recognized as a supported image type."
www.it-ebooks.info
C# PDF File & Page Process Library SDK for C#.net, ASP.NET, MVC
File: Split PDF; C# Page: Insert PDF pages; C# Page: Delete PDF pages; C# Read C# Read: PDF Image Extract; C# Write: Insert text into PDF; C# Write: Add Image to
add page number to pdf in preview; add page numbers to pdf preview
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
In order to run the sample code, the following steps would be necessary. Add necessary references: How to VB.NET: Delete Consecutive Pages from PDF.
add page numbers pdf; add page to pdf
CHAPTER 22  FILE ACCESS 
854 
break
lblResults.Text = files.Count().ToString() + 
" files successfully dropped."
}             
}    
Finally, the list box converts the ImageSource objects into a list of images, using this straightforward 
template: 
<ListBox Grid.Column="1" Margin="5" x:Name="lstImages"> 
<ListBox.ItemTemplate> 
<DataTemplate> 
<Image Margin="1" 
Source="{Binding}" Width="95" /> 
</DataTemplate> 
</ListBox.ItemTemplate> 
</ListBox> 
File Access in Elevated Trust Applications 
In Chapter 18, you learned how to create an out-of-browser application that runs with elevated trust 
(provided the user installs it or the client computer is explicitly configured to trust it). Along with their 
many useful features, elevated trust applications automatically gain the full file-reading and file-writing 
permissions of the current user. 
In fact, not only can elevated trust applications read and write files almost anywhere on the user’s 
hard drive, they can also perform a host of other file system operations. These include tasks such as 
creating a new directory or tunneling down through a directory tree to perform a file search. In the 
following sections, you’ll get an overview of all these capabilities. 
SILVERLIGHT AND UAC 
count Control (UAC), which 
locks down administrator privileges. This affects the way file system access works. 
For example, imagine there’s a file named c:\AdminLog.doc that is restricted to administrators. Even if the 
current user is logged on as an administrator, the file won’t be accessible unless Windows performs a 
permission elevation. (That’s the moment when the screen goes dark and Windows presents a 
confirmation dialog box asking the user to confirm the operation.) Silverlight applications won’t perform 
permission elevation automatically, so Silverlight applications will never get administrator privileges or 
have the ability to access a file or directory that requires them. 
However, there are exceptions. For example, the user may change the UAC settings on the current 
computer or explicitly start an application in administrator mode—say, by right-clicking its shortcut and 
choosing “Run as administrator.” In this latter case, the confirmation box will appear, the user can accept 
www.it-ebooks.info
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
add page number to pdf online; adding page numbers to a pdf in preview
VB.NET PDF Convert to Word SDK: Convert PDF to Word library in vb.
All PDF pages can be converted to separate Word files within a short time in In order to convert PDF document to Word file using VB.NET Add necessary references
add remove pages from pdf; adding page numbers to pdf in
CHAPTER 22  FILE ACCESS 
855 
it, and the Silverlight application will gain the ability to access parts of the file system that require 
administrator privileges. Of course, this technique isn’t encouraged. 
Accessing User Files 
One of the most useful places to store any sort of content are user-specific document folders on the 
Windows operating system. They include the following: 
• My Documents 
• My Music 
• My Pictures 
• My Videos 
You get the physical path to these locations using the Environment.GetFolderPath() method and 
passing in one of the values from the Environment.SpecialFolder enumeration. Here’s an example: 
string documentPath = Environment.GetFolderPath( 
Environment.SpecialFolder.MyDocuments); 
 Note  The Environment.SpecialFolder enumeration provides values for additional paths besides the “My” folders 
listed earlier. For example, it includes a path for the desktop, program files directory, Internet cache, Start menu 
folder, and so on. Using these paths, you can perform other practical tasks, such as creating a desktop shortcut. 
Once you’ve retrieved the path to a “My” folder, you can create, modify, and delete files and 
directories in it. The most convenient way to perform file and directory process is to use the static 
methods of the File and Directory classes, which are transplants from the full .NET Framework. For 
example, you can write an entire file in one step using methods such as WriteAllText(), WriteAllBytes(), 
or WriteAllLines(), and you can read a file in one step using ReadAllText(), ReadText(), or ReadLines(). 
Here’s an example that writes a file in the My Documents folder: 
string documentPath = Environment.GetFolderPath( 
Environment.SpecialFolder.MyDocuments); 
string fileName = System.IO.Path.Combine(documentPath, "TestFile.txt"); 
File.WriteAllText(fileName, "This is a test."); 
And here’s the complementary code that reads the file: 
string documentPath = Environment.GetFolderPath( 
Environment.SpecialFolder.MyDocuments); 
string fileName = System.IO.Path.Combine(documentPath, "TestFile.txt"); 
if (File.Exists(fileName)) 
string contents = File.ReadAllText(fileName); 
www.it-ebooks.info
VB.NET PDF Password Library: add, remove, edit PDF file password
VB: Add Password to PDF with Permission Settings Applied. This VB.NET example shows how to add PDF file password with access permission setting.
add page pdf reader; add and remove pages from a pdf
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 page to pdf in preview; add page numbers to pdf files
CHAPTER 22  FILE ACCESS 
856 
lblResults.Text = contents; 
If you don’t want to write or read the contents of a file in one chunk, you can open a FileStream for 
the file and then wrap it in a StreamReader or StreamWriter. Here’s an example that writes to a file 
through a StreamWriter, in much the same way as if you called File.WriteAllText(): 
string documentPath = Environment.GetFolderPath( 
Environment.SpecialFolder.MyDocuments); 
string fileName = System.IO.Path.Combine(documentPath, "TestFile.txt"); 
using (FileStream fs = new FileStream(fileName, FileMode.Create)) 
StreamWriter writer = new StreamWriter(fs); 
writer.Write("This is a test with FileStream."); 
writer.Close(); 
No matter which approach you use, you should wrap your file access code in an exception handling 
block to deal with potential errors, as you saw earlier. 
Managing Directories and Files 
The FileStream, StreamWriter, and StreamReader classes allow you to write to and read from any file. 
Add the File class and Directory classes, and you can perform a whole host of file management tasks. 
The Directory class is the place to go for most file management tasks. It provides the pile of useful 
methods, detailed in Table 22-2. Most of these are the same as in .NET, although the .NET standbys 
GetDirectories() and GetFiles() have been replaced with the LINQ-powered equivalents 
EnumerateDirectories() and EnumerateFiles(). 
Table 22-2. Static Methods of the Directory Class 
Method 
Description 
CreateDirectory() 
Creates a new directory. If you specify a directory inside another 
nonexistent directory, Silverlight will thoughtfully create all the 
required directories. 
Delete () 
Deletes the empty directory you specify. To delete a directory along 
with its contents (subdirectories and files), add the optional second 
parameter of true. 
EnumerateDirectories 
Returns an IEnumerable collection of strings, one for each directory 
name inside the directory you specify. (The key idea here is that the 
objects are not retrieved from the file system when the collection is 
created, but when you iterate over the collection, potentially improving 
performance. Chapter 20 describes the IEnumerable interface in more 
detail.) You can also use an overloaded version of this method that 
filters names using a search expression. 
www.it-ebooks.info
CHAPTER 22  FILE ACCESS 
857 
Method 
Description 
EnumerateFiles 
Returns an IEnumerable collection of strings, one for each file inside 
the directory you specify. You can also use an overloaded version of this 
method that filters names using a search expression. 
EnumerateFileSystemEntries Returns the combined result of EnumerateDirectories and 
EnumerateFile, which is an IEnumerable collection with the names of 
all directories and files. 
Exists() 
Returns true or false to indicate whether the specified directory exists, 
much like the File.Exists() method does for files. 
GetCreationTime(), 
GetLastAccessTime(), and 
GetLastWriteTime() 
Returns a DateTime object that represents the time the directory was 
created, accessed, or written to. 
GetCurrentDirectory() and 
SetCurrentDirectory() 
Allows you to set or retrieve the current directory, which is useful if you 
need to use relative paths instead of full paths. Generally, these 
functions aren’t necessary. 
Move() 
Accepts two parameters: the source path and the destination path. The 
directory and all its contents can be moved to any path, as long as it’s 
located on the same drive. (If you need to move files from one drive to 
another, you’ll need to pair up a copy operation and a delete operation 
instead.) 
For example, here’s how you might use the Directory class to create a folder, place a file in it, and 
then delete the folder: 
string newDir = @"c:\TestPath"
Directory.CreateDirectory(newDir); 
string newFile = "testFile.txt"
// System.Windows.Shapes.Path.             
string filePath = System.IO.Path.Combine(newDir, newFile); 
File.WriteAllText(filePath, "This is a test file in a new directory!"); 
MessageBox.Show("When you click OK, the new file and new directory will be deleted."); 
Directory.Delete(newDir, true); 
Silverlight also includes the DirectoryInfo and FileInfo classes found in  .NET, which mirror much of 
the functionality from the Directory and File classes but use instance methods. If you want to work with 
a particular directory for a longer period of time, it may be cleaner or more efficient to create a dedicated 
DirectoryInfo object and use that instead of the Directory class, like this: 
www.it-ebooks.info
CHAPTER 22  FILE ACCESS 
858 
DirectoryInfo dir = new DirectoryInfo(@"c:\TestPath"); 
dir.Create(); 
string filePath = System.IO.Path.Combine(dir.FullName, "testFile.txt"); 
FileInfo file = new FileInfo(filePath); 
StreamWriter writer = file.CreateText(); 
writer.Write("This is a test file in a new directory!"); 
writer.Close(); 
string newFile = "testFile.txt"
MessageBox.Show("When you click OK, the new file and new directory will be deleted."); 
dir.Delete(); 
The DirectoryInfo and FileInfo objects also allow you to set file and directory attributes, and they are 
particularly convenient if you want to walk through a portion of the directory tree, as demonstrated in 
the next example. 
Creating a Directory Tree 
Figure 22-7 shows a simple file browser running in a Silverlight application. In a traditional desktop 
application, this example would be a passing interest at best. But in a partially sandboxed, web-deployed 
Silverlight application, it shows just how far you can stretch the boundaries of the browser. 
www.it-ebooks.info
CHAPTER 22  FILE ACCESS 
859 
Figure 22-7. Browsing the local hard drive 
Creating this example is surprisingly easy, provided you’re running an elevated-trust application 
that can use the FileInfo and DirectoryInfo classes. The first step is to define the markup, which is a 
simple pairing of a TreeView (on the left) and ListBox (on the right): 
<Grid x:Name="LayoutRoot" Background="White" Margin="3">   
<Grid.ColumnDefinitions> 
<ColumnDefinition Width="2*"></ColumnDefinition> 
<ColumnDefinition></ColumnDefinition> 
</Grid.ColumnDefinitions> 
 
<controls:TreeView x:Name="treeFileSystem" Margin="5"> 
</controls:TreeView>         
<ListBox Margin="0,5,5,5" Grid.Column="1" x:Name="lstFiles"></ListBox> 
</Grid> 
www.it-ebooks.info
CHAPTER 22  FILE ACCESS 
860 
To ensure good performance, this example only constructs the portions of the tree that are 
expanded. Initially, all that appears is the root c:\ directory. Expand that, and the application queries the 
first level of subdirectories. Expand one of them to see more subdirectories, and so on. 
Most of the work is done through a custom method named AddItem(). The AddItem() method needs 
two details: the DirectoryInfo it’s supposed to add to the tree and the collection TreeViewItem objects 
where the directory should be placed. For example, here’s the code that adds the root directory when the 
window first loads: 
DirectoryInfo rootDir = new DirectoryInfo(@"c:\"); 
// Place the root folder in the first level of the TreeView. 
AddItem(rootDir, treeFileSystem.Items);  
The AddItem() method creates a new TreeViewItem object for the directory and adds it at the 
specified place. However, it also does a bit more. For example, it stores the DirectoryInfo object in the 
all-purpose TreeViewItem.Tag property, so it can be retrieved and used later. It also attaches event 
handlers for the Expanded and Selected events of the TreeViewItem, which is where the rest of the logic 
takes place. 
private void AddItem(DirectoryInfo dir, ItemCollection collection) 
TreeViewItem item = new TreeViewItem(); 
// Set the text that appears in the TreeViewItem. 
item.Header = dir.Name; 
// Store the DirectoryInfo object for future reference. 
item.Tag = dir; 
// Add a "dummy" placeholder node. It's never shown in the tree, 
// because every TreeViewItem begins in collapsed state. 
// When this item is expanded, the placeholder will be removed. 
item.Items.Add("*"); 
// Handle the node's expansion and selection events. 
item.Expanded += item_Expanded; 
item.Selected += item_Selected; 
collection.Add(item); 
When the TreeViewItem is expanded, its children are cleared (including the placeholder), and the 
corresponding DirectoryInfo object is retrieved. The DirectoryInfo.EnumerateDirectories() method is 
then used to get all the subdirectories and add them to the tree with additional calls to AddItem(). 
private void item_Expanded(object sender, RoutedEventArgs e) 
TreeViewItem item = (TreeViewItem)sender; 
// Perform a refresh every time item is expanded. 
item.Items.Clear(); 
www.it-ebooks.info
Documents you may be interested
Documents you may be interested