c# pdf viewer itextsharp : Rearrange pdf pages in reader application Library tool html asp.net azure online Windows%20Powershell%20in%20Action%202nd%20Edition65-part1522

620
CHAPTER 15
T
HE
P
OWER
S
HELL
ISE 
AND
DEBUGGER
To start a remote connection, from the File menu select New Remote PowerShell 
Tab, as shown in figure 15.10.
Clicking this item will pop up a dialog (see figure 15.11) asking for the name of 
the target computer and who to connect as when connecting to that computer.
Figure 15.10 This figure shows the menu 
item under the File menu that lets you
directly connect to a remote machine.
Figure 15.11 When using the ISE to connect to a remote computer, you will be prompted to 
enter the name of the computer to connect to and the username to use when connecting.
Rearrange pdf pages in reader - re-order PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Customizing Page Order of PDF Document in C# Project
reorder pages in pdf reader; how to reorder pages in pdf reader
Rearrange pdf pages in reader - VB.NET PDF Page Move Library: re-order PDF pages in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Sort PDF Document Pages Using VB.NET Demo Code
rearrange pdf pages reader; how to reorder pages in pdf preview
U
SING
MULTIPLE
P
OWER
S
HELL
TABS
621
Fill in the name of the computer and the user to connect as, and then click Connect. 
At this point, a second credential dialog will be displayed, asking for the password for 
the specified user account.
NOTE
So why are there two dialogs? The credential dialog is a system 
dialog that provides for enhanced security and, as a result, has to be 
displayed separately.
Once you’re connected to the remote endpoint, you’ll see a new tab in the 
ISE
that 
displays the name of the computer you’re connected to. Figure 15.12 shows what this 
looks like.
Notice the content of the output pane: it shows the actual commands that were run 
to establish the remote connection. The 
Enter-PSSession
is nothing new, but the line
if ($?) {$psISE.CurrentPowerShellTab.DisplayName = 'brucepayquad'}
is something you haven’t seen so far.
If the 
Enter-PSSession
command succeeds and a remote connection is estab-
lished, then the value of the variable 
$?
will be 
$true
. When that happens, the Pow-
erShell 
ISE
object model is used to change the display name of the tab to the name of 
the remote computer. The object stored in 
$psISE
is a .
NET
object that lets scripts 
manipulate the 
ISE
itself. We’ll look at using this object model in the next section.
In chapter 12, we discussed how interactive remoting works in the case where 
you’re just using the console host. This is a relatively simple situation because the 
console host is effectively limited to one interactive session at a time. With the 
ISE
,
Figure 15.12 The PowerShell ISE allows you to have multiple sessions running 
at the same time. These sessions can be either local or remote. In this figure, the 
first tab is a local session and the second tab is a remote session connected to 
another computer.
C# TIFF: How to Reorder, Rearrange & Sort TIFF Pages Using C# Code
C# TIFF - Sort TIFF File Pages Order in C#.NET. Reorder, Rearrange and Sort TIFF Document Pages in C#.NET Application. C# TIFF Page Sorting Overview.
move pages in pdf acrobat; how to move pages in a pdf file
VB.NET TIFF: Modify TIFF File by Adding, Deleting & Sort TIFF
you want to change or rearrange current TIFF &ltsummary> ''' Sort TIFF document pages in designed powerful & profession imaging controls, PDF document, image
how to move pages in pdf acrobat; reorder pdf pages reader
622
CHAPTER 15
T
HE
P
OWER
S
HELL
ISE 
AND
DEBUGGER
things are more sophisticated and therefore somewhat more complex. A graphical 
environment allows you to work with multiple sessions, including multiple local and 
remote sessions, where each session has its own tab in the interface. Figure 15.13 
shows the arrangement of connections that you can set up with the 
ISE
.
In this figure, you see that the 
ISE
running on the local machine has three tabs 
open: two tabs connected to one remote machine, and one local table and one remote 
tab connected to machine 2. This illustrates the flexibility that the 
ISE
provides, 
allowing you to easily work with multiple machines from a single 
ISE
instance.
At this point, you should have a pretty good understanding of the 
ISE
from a user 
perspective. In the next section, we’ll look at the object model, mentioned earlier in 
section 15.2.2, and see how you can customize and extend the environment through 
scripting. This mechanism will allow you to bind your favorite commands to menu 
items and hotkey sequences.
15.3
E
XTENDING
THE
ISE
The 
ISE
provides a great many features, but there are always more features or tools 
you can add to any development environment. Because of this, the 
ISE
provides a sur-
prisingly easy-to-use (at least compared to a lot of other
IDE
s!) extension model that 
allows you to add your own features to the environment.
15.3.1
The $psISE variable
All extensibility points are available through the 
$psISE
variable. This makes the 
object model easy to discover because you can use tab completion to navigate and
Local machine
Remote machine  1
Remote session 1
Tab 1: Remote
session
Tab 2: Remote
session
Remote session   2
Remote machine  2
Remote session 1
Tab 3: Local
session
Tab 4: Remote
session
Figure 15.13 In the PowerShell ISE, the user may have multiple tabs open. Each tab has a 
session. Local tabs have local sessions, and remote tabs have remote sessions.
VB.NET PDF File & Page Process Library SDK for vb.net, ASP.NET
page directly. Moreover, when you get a PDF document which is out of order, you need to rearrange the PDF document pages. In these
pdf reorder pages online; how to reverse page order in pdf
C# PowerPoint - How to Process PowerPoint
pages simply with a few lines of C# code. C# Codes to Sort Slides Order. If you want to use a very easy PPT slide dealing solution to sort and rearrange
how to rearrange pages in a pdf reader; reorder pdf pages in preview
E
XTENDING
THE
ISE
623
Get-Member
to explore the objects. Here’s what the output of 
Get-Member
looks like 
for this object:
PS (STA) (3) > $psISE | Get-Member -MemberType Property | 
>>Format-List name,definition
Name       : CurrentFile
Definition : Microsoft.PowerShell.Host.ISE.ISEFile CurrentFile {get;}
Name       : CurrentPowerShellTab
Definition : Microsoft.PowerShell.Host.ISE.PowerShellTab 
CurrentPowerShellTab {get;}
Name       : Options
Definition : Microsoft.PowerShell.Host.ISE.ISEOptions Options {get;}
Name       : PowerShellTabs
Definition : Microsoft.PowerShell.Host.ISE.PowerShellTabCollection 
PowerShellTabs {get;}
Table 15.2 shows each of these properties and provides a brief description of their 
purpose.
In the next few sections, we’ll walk through these members and explore the kinds of 
things you can do with them. To help you orient your discovery, figure 15.14 pro-
vides a map showing the hierarchy of objects in the object model.
As we mentioned earlier, the most effective way to explore the contents of the 
object model is to start with 
$psISE
and use tab completion to step through the 
properties. Let’s begin our exploration with the 
Options
property.
Table 15.2 The top-level properties in the ISE object model
Name
Description
CurrentFile
This object represents the file shown in the current editor pane. With 
this property, you can access the text in the buffer, save the file, and 
so on.
CurrentPowerShellTab
This gives you access to the tab currently in use—in other words, the 
one where you’re typing your commands. Through this member, you 
can access file objects for all the files open in this table, add custom 
menu items, and so on.
Options
We looked at some of the various options that can be set for the ISE 
earlier in this chapter. Through the Options property, you can set 
additional options as well as perform the customization you saw ear-
lier from a script.
PowerShellTabs
This gives a list of all the tabs in the session. You can perform the 
same operations from these tabs as you can for the current tab, but 
work with all the tabs in the process.
VB.NET Word: How to Process MS Word in VB.NET Library in .NET
well programmed Word pages sorter to rearrange Word pages in extracting single or multiple Word pages at one & profession imaging controls, PDF document, image
change page order pdf preview; how to move pages around in pdf
Process Images in Web Image Viewer | Online Tutorials
used document types are supported, including PDF, multi-page easy to process image and file pages with the deleting a thumbnail, and you can rearrange the file
moving pages in pdf; how to move pdf pages around
624
CHAPTER 15
T
HE
P
OWER
S
HELL
ISE 
AND
DEBUGGER
15.3.2
Using the Options property
The 
Options
property lets you set a number of 
ISE
options that aren’t directly acces-
sible from the menus. Let’s use 
Get-Member
to display the contents of this property:
PS (STA) (6) > $psISE.Options 
SelectedScriptPaneState       : Top 
ShowToolBar                   : True 
TokenColors                   : {[Attribute, #FFADD8E6], 
[Command, #FF0000FF], [CommandArgument, #FF8A2B
E2], [CommandParameter, #FF000080]...} 
DefaultOptions                : Microsoft.PowerShell.Host.ISE.ISEOptions 
FontSize                      : 12 
FontName                      : Lucida Console 
ErrorForegroundColor          : #FFFF0000 
ErrorBackgroundColor          : #00FFFFFF 
WarningForegroundColor        : #FFFF8C00 
WarningBackgroundColor        : #00FFFFFF
$psISE
CurrentFile
CurrentPowerShellTab
Options
PowerShellTabs
Editor
DisplayName
Encoding
FullPath
IsUntitled
CommandPane
CanInvoke
AddOnsMenu
DisplayName
ExpandedScript
Files 
Prompt
StatusText
Output
Figure 15.14 The hierarchy of ob-
jects in the ISE object model. Using 
these objects, you can extend and 
customize the ISE environment.
VB.NET PowerPoint: Sort and Reorder PowerPoint Slides by Using VB.
page will teach you to rearrange and readjust amount of robust PPT slides/pages editing methods and powerful & profession imaging controls, PDF document, image
how to rearrange pages in a pdf file; pdf change page order acrobat
E
XTENDING
THE
ISE
625
VerboseForegroundColor        : #FF0000FF 
VerboseBackgroundColor        : #00FFFFFF 
DebugForegroundColor          : #FF0000FF 
DebugBackgroundColor          : #00FFFFFF 
OutputPaneBackgroundColor     : #FFF0F8FF 
OutputPaneTextBackgroundColor : #FFF0F8FF 
OutputPaneForegroundColor     : #FF000000 
CommandPaneBackgroundColor    : #FFFFFFFF 
ScriptPaneBackgroundColor     : #FFFFFFFF 
ScriptPaneForegroundColor     : #FF000000 
ShowWarningForDuplicateFiles  : True 
ShowWarningBeforeSavingOnRun  : False 
UseLocalHelp                  : True 
CommandPaneUp                 : False
You can see that a number of options correspond to the toolbar and menu items: 
CommandPaneUp
ShowToolBar
, and so on. There are also a number of new options 
that let you set the colors of the various elements in the interface. You can control the 
foreground and background colors of each of the panes, as well as change the colors 
used to display tokens by assigning color values to these properties.
TIP
Although the output from the 
Options
property shows numeric 
values for the color settings, you don’t have to use them when assigning 
a value to the properties. You can use color names like red or blue in 
assignments and the type converter will do the necessary work to con-
vert the string to the corresponding color value.
Through the 
Options
property, you can write scripts that can automatically config-
ure the 
ISE
the way you want. This stuff is pretty obvious, so we’ll move on to some-
thing a bit more exotic (and useful!).
15.3.3
Managing tabs and files
The top-level objects in the 
ISE
are tabs, which in turn contain editor instances. To 
get a list of the tabs, use the 
PowerShellTabs
property. You can do this interactively 
from the command pane. We’ll try setting up an 
ISE
instance with the arrangement 
of tabs as shown in figure 15.15.
Open the 
ISE
, and press 
C
trl-
T
to create a second session tab. Then, in the com-
mand pane, run the following command:
PS (STA) (13) > $psise.PowerShellTabs
DisplayName    : PowerShell 1
AddOnsMenu     : Microsoft.PowerShell.Host.ISE.ISEMenuItem 
StatusText     : Running script / selection.  Press Ctrl+Break to stop. 
ExpandedScript : True 
Prompt         : PS (STA) (13) >
CommandPane    : Microsoft.Windows.PowerShell.Gui.Internal.CommandEditor 
Output         : Microsoft.Windows.PowerShell.Gui.Internal.OutputEditor 
Files          : {Untitled1.ps1*}
CanInvoke      : False
626
CHAPTER 15
T
HE
P
OWER
S
HELL
ISE 
AND
DEBUGGER
DisplayName    : PowerShell 2
AddOnsMenu     : Microsoft.PowerShell.Host.ISE.ISEMenuItem 
StatusText     : 
ExpandedScript : False 
Prompt         : PS (STA) (1) >
CommandPane    : Microsoft.Windows.PowerShell.Gui.Internal.CommandEditor 
Output         : Microsoft.Windows.PowerShell.Gui.Internal.OutputEditor 
Files          : {}
CanInvoke      : True
In the output from this command, you see the list of the tabs currently open in the 
ISE
. This output shows you the 
DisplayName
of the tab, the current prompt value, 
the text in the status line, and so on. In the PowerShell 1 session tab, where the com-
mand ran, you see the status of this tab is “running a script,” which, of course is the 
command you just typed. Because it’s running a command, you also see that the 
Can-
Invoke
property is false, indicating that this tab is busy executing a command. If you 
look at the output for PowerShell 2, the status text is blank and the 
CanInvoke
prop-
erty is true, indicating that there’s no command running in that tab.
Now let’s look at the methods on this session tab object. Because the output from 
the previous command returned a collection, we’ll look at the second item (represent-
ing the tab you’re not currently using) with 
Get-Member
:
PS (STA) (17) > $psISE.PowerShellTabs[1] | Get-Member -type method
TypeName: Microsoft.PowerShell.Host.ISE.PowerShellTab
Name        MemberType Definition 
----        ---------- ----------
Equals      Method     bool Equals(System.Object obj) 
GetHashCode Method     int GetHashCode()
GetType     Method     type GetType()
Figure 15.15 This is the arrangement of panes in the ISE we’ll use in our examples. 
In this case, the ISE has two tabs open and the current tab is labeled PowerShell 1.
E
XTENDING
THE
ISE
627
Invoke      Method     System.Void Invoke(scriptblock script) 
ToString    Method     string ToString()
Notice that this object has an 
Invoke()
method, which will invoke a command in 
that tab. Let’s try it out. It takes a scriptblock as an argument, so use the 
Create() 
method on 
[ScriptBlock]
to compile the code you want to run:
PS (STA) (27) > $sb =[ScriptBlock]::Create('1..20 | %{sleep 1; Get-Date} ')
The scriptblock contains a number of calls to 
sleep
(the alias for 
Start-Sleep
) to 
make sure it’s running long enough to see what’s going on. Let’s verify that you can 
invoke your scriptblock in the other tab:
PS (STA) (28) > $psISE.PowerShellTabs[1].CanInvoke 
True
Checking the 
CanInvoke
property for that tab confirms that you can execute, so call 
Invoke()
on your scriptblock:
PS (STA) (30) > $psISE.PowerShellTabs[1].Invoke($sb)
The call to 
Invoke()
starts the scriptblock executing in the other tab, then returns 
immediately rather than waiting until the command finishes execution. Let’s check 
the 
CanInvoke
property again to verify that the command is running. This time you 
expect the property to return false, and it does:
PS (STA) (31) > $psISE.PowerShellTabs[1].CanInvoke 
False
Now switch to the PowerShell 2 tab and look at the output (figure 15.16).
Figure 15.16 This tab shows the output of our script. Although you started the script in 
the first tab, it’s actually run in the second tab with the output displayed in that tab.
628
CHAPTER 15
T
HE
P
OWER
S
HELL
ISE 
AND
DEBUGGER
In the output pane of the PowerShell 2 tab, you see the results of the command you 
ran. In effect, you’re using the second tab to do background processing. It’d be nice if 
you could have a better name for this tab. You can use the 
DisplayName
property on 
the tab object to change it, as shown in figure 15.17.
Finally, you can put the pieces together into a function to automatically invoke a 
scriptblock on the (Bkgn tasks) tab. The code for this function is shown in this listing.
function Invoke-InBackgroundTab 
{
param (
[parameter(mandatory=$true)] 
$ScriptBlockToInvoke
)
$bkgnTab = '(Bkgn tasks)'          
$tab = $null
$needNewTab = $true
foreach ($tab in $psISE.PowerShellTabs) 
{
if ($tab.DisplayName -eq $bkgnTab)
{
$needNewTab = $false
break
}
}
Figure 15.17 Changing the display name of the current tab to (Bkgn tasks)
Listing15.1    The Invoke-InBackgroundTab function
E
XTENDING
THE
ISE
629
if ($needNewTab)
{
$tab = $psISE.PowerShellTabs.Add()
$tab.DisplayName = $bkgnTab
do {
Start-Sleep -Milliseconds 200
}
while (-not $tab.CanInvoke)       
}
if (! $tab.CanInvoke)
{
Write-Error `
"Background tab is currently busy. Try again later"
}
$tab.Invoke($ScriptBlockToInvoke) 
}
Set-Alias ibg Invoke-InBackgroundTab     
First, this function searches for the target tab and, if it doesn’t exist, it creates a new 
tab. When it finds the tab, if it’s not already busy, the scriptblock is invoked and the 
output is shown in the target tab’s output pane.
This relatively simple example gives you an idea of how you can work with tabs. 
You can perform sophisticated operations with very little code. In the next section, 
we’re going to look at how to work with the elements inside a tab: the editor and 
output panes.
15.3.4
Working with text panes
During script creation, you spend most of your time in the command and editor panes 
and the results of executing commands are shown in the output pane. As was the case 
with tabs, the 
ISE
object model allows you to manipulate the contents of these panes 
using scripts. Using this capability, you can add custom tools to extend the built-in set 
of editor functions. Let’s start by exploring what you can do with the output pane.
Saving the output pane contents
In chapter 14, we discussed how you can use the transcript facility in the console host 
to capture the output of your commands for later examination. The 
ISE
doesn’t have 
a corresponding transcript mechanism, but you can still copy the contents of the out-
put pane to a file. As before, you start with the 
$psISE
variable to access the contents 
of the output pane. Let’s use 
Get-Member
to see what this looks like:
PS (STA) (94) > $psISE.CurrentPowerShellTab.Output |
Get-Member -MemberType method,property
TypeName: Microsoft.Windows.PowerShell.Gui.Internal.OutputEditor
Name             MemberType Definition 
----             ---------- ----------
Clear            Method     System.Void Clear()
EnsureVisible    Method     System.Void EnsureVisible(int lineNumber)
Creates background 
tab if necessary
Runs only one 
background task
Invokes 
scriptblock
Documents you may be interested
Documents you may be interested