display pdf winform c# : How to change page orientation in pdf document SDK Library service wpf asp.net html dnn 7053154973-Excel%202007%20VBA%20Programmers%20Reference%20-%20Wrox%20200765-part694

When you calculate the elapsed time, both the timer and the frequency contain values that are a factor of
10,000 too small. Because the numbers are divided, the factors cancel out to give a result in seconds.
The High-Resolution Timer class can be used in a calling routine like this:
Sub TestCHighResTimer()
Dim i As Long
Dim oTimer As New CHighResTimer
oTimer.StartTimer
For i = 1 To 100000
Next i
oTimer.StopTimer
Debug.Print “100,000 iterations took “ & oTimer.Elapsed & “ seconds”
End Sub
Freeze a UserForm
When working with UserForms, the display may be updated whenever a change is made to the form,
such as adding an item to a ListBox, or enabling or disabling controls. Application.ScreenUpdating
has no effect on UserForms; this CFreezeForm class provides a useful equivalent:
Option Explicit
‘Find a window
Private Declare Function FindWindow Lib “user32” _
Alias “FindWindowA” ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
‘Freeze the window to prevent continuous redraws
Private Declare Function LockWindowUpdate Lib “user32” ( _
ByVal hwndLock As Long) As Long
Public Sub Freeze(oForm As UserForm)
Dim hWnd As Long
‘Get a handle to the UserForm window,
‘using the class name appropriate for the XL version
If Val(Application.Version) >= 9 Then
hWnd = FindWindow(“ThunderDFrame”, oForm.Caption)
Else
hWnd = FindWindow(“ThunderXFrame”, oForm.Caption)
End If
‘If you got a handle, freeze the window
If hWnd > 0 Then LockWindowUpdate hWnd
End Sub
‘Allow the calling routine to unfreeze the UserForm
618
Chapter 27: Programming with the Windows API
How to change page orientation in pdf document - rotate PDF page permanently in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Users to Change the Rotation Angle of PDF File Page Using C#
pdf rotate single page reader; how to rotate page in pdf and save
How to change page orientation in pdf document - VB.NET PDF Page Rotate Library: rotate PDF page permanently in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
PDF Document Page Rotation in Visual Basic .NET Class Application
saving rotated pdf pages; rotate pages in pdf expert
Public Sub UnFreeze()
LockWindowUpdate 0
End Sub
‘If they forget to unfreeze the form, do it at the end
‘of the calling routine (when you go out of scope)
Private Sub Class_Terminate()
UnFreeze
End Sub
To demonstrate this in action, create a new UserForm and add a ListBox and a command button. Add
the following code for the command button’s Click event:
Private Sub CommandButton1_Click()
Dim i As Integer
For i = 1 To 1000
ListBox1.AddItem “Item “ & i
DoEvents
Next i
End Sub
The DoEvents line forces the UserForm to redraw, to demonstrate the problem. In more complicated
routines, the UserForm may redraw itself without using DoEvents. To prevent the redrawing, you can
modify the routine to use the CFreezeFormclass as follows:
Private Sub CommandButton1_Click()
Dim obFF As New CFreezeForm, i As Integer
‘Freeze the UserForm
obFF.Freeze Me
For i = 1 To 1000
ListBox1.AddItem “Item “ & i
DoEvents
Next i
End Sub
This is much easier than including several API calls in every function. The class’s Terminate event
ensures that the UserForm is unfrozen when the obFF object variable goes out of scope. Freezing a
UserForm in this way can result in a dramatic performance improvement. For example, the non-frozen
version takes approximately 3.5 seconds to fill the ListBox, while the frozen version of the routine takes
approximately 1.2 seconds. This should be weighted against user interaction; they may think the com-
puter has frozen if they see no activity for some time. Consider using Application.StatusBar to keep
them informed of progress in that case.
A System Info Class
The classic use of a class module and API functions is to provide all the information about the Windows
environment that you cannot get at using VBA. The following properties are typical components of such
CSysInfo class.
619
Chapter 27: Programming with the Windows API
VB.NET Image: VB Code to Read and Scan Linear & 2D Barcodes
target barcode from a certain image and document page area. and 2D barcodes from VB project PDF & MS Detect and report barcodes at any orientation and rotation
rotate pdf page and save; how to rotate just one page in pdf
C# Word - Document Pages Processing in C#.NET
Set Page Orientation in Word Document. You can set page orientations of all pages in document. We provide two type for pages orientation
how to rotate a pdf page in reader; pdf rotate just one page
Obtaining the screen resolution (in pixels):
Option Explicit
Private Const SM_CYSCREEN As Long = 1   ‘Screen height
Private Const SM_CXSCREEN As Long = 0   ‘Screen width
‘API Call to retrieve system information
Private Declare Function GetSystemMetrics Lib “user32” ( _
ByVal nIndex As Long) As Long
‘Retrieve the screen height, in pixels
Public Property Get ScreenHeight() As Long
ScreenHeight = GetSystemMetrics(SM_CYSCREEN)
End Property
‘Retrieve the screen width, in pixels
Public Property Get ScreenWidth() As Long
ScreenWidth = GetSystemMetrics(SM_CXSCREEN)
End Property
Obtaining the color depth (in bits):
Private Declare Function GetDC Lib “user32” ( _
ByVal hwnd As Long) As Long
Private Declare Function GetDeviceCaps Lib “Gdi32” ( _
ByVal hDC As Long, _
ByVal nIndex As Long) As Long
Private Declare Function ReleaseDC Lib “user32” ( _
ByVal hwnd As Long, _
ByVal hDC As Long) As Long
Private Const BITSPIXEL = 12
Public Property Get ColorDepth() As Integer
Dim hDC As Long
‘A device context is the canvas on which a window is drawn
hDC = GetDC(0)
ColorDepth = GetDeviceCaps(hDC, BITSPIXEL)
ReleaseDC 0, hDC
End Property
Obtaining the width of a pixel in UserForm coordinates (where the API declarations are the same as
those for the previous ColorDepthand repeated here for clarity):
The declarations for the constants and API functions used in these procedures must
all be placed together at the top of the class module. For clarity, they are shown here
with the corresponding routines.
620
Chapter 27: Programming with the Windows API
VB Imaging - Micro QR Code Generation Guide
Matrix settings, like image size, rotation/orientation, data mode You can change the location by setting X VB Imaging - Create Micro QR Code on Document Page.
reverse page order pdf online; how to rotate one pdf page
Generate Barcodes in Web Image Viewer| Online Tutorials
Change Barcode Properties. Select "Orientation" to set barcode rotation angle; Select "Width" and Read Barcodes from Your Documents. Multi-page Tiff Processing;
save pdf rotated pages; rotate pdf pages individually
Private Declare Function GetDC Lib “user32” ( _
ByVal hwnd As Long) As Long
Private Declare Function GetDeviceCaps Lib “Gdi32” ( _
ByVal hDC As Long, _
ByVal nIndex As Long) As Long
Private Declare Function ReleaseDC Lib “user32” ( _
ByVal hwnd As Long, _
ByVal hDC As Long) As Long
Private Const LOGPIXELSX = 88
‘The width of a pixel in Excel’s UserForm coordinates
Public Property Get PointsPerPixel() As Double
Dim hDC As Long
hDC = GetDC(0)
‘A point is defined as 1/72 of an inch and LOGPIXELSX returns
‘the number of pixels per logical inch, so divide them to give
‘the width of a pixel in Excel’s UserForm coordinates
PointsPerPixel = 72 / GetDeviceCaps(hDC, LOGPIXELSX)
ReleaseDC 0, hDC
End Property
Reading the user’s login ID:
Private Declare Function GetUserName Lib “advapi32.dll” _
Alias “GetUserNameA” ( _
ByVal lpBuffer As String, _
ByRef nSize As Long) As Long
Public Property Get UserName() As String
Dim sBuff As String * 255, lAPIResult As Long 
Dim lBuffLen As Long
lBuffLen = 255
‘  The second parameter, lBuffLen is both In and Out.
‘  On the way in, it tells the function how big the string buffer is
‘  On the way out, it tells us how long the user name is (including 
‘  a terminating Chr(0))
lAPIResult = GetUserName(sBuff, lBuffLen)
‘If you got something, return the text of the user name
If lBuffLen > 0 Then UserName = Left(sBuff, lBuffLen - 1)
End Property
621
Chapter 27: Programming with the Windows API
VB.NET PDF File & Page Process Library SDK for vb.net, ASP.NET
and Files, adding a page into PDF document, deleting unnecessary page from PDF file and changing the position, orientation and order of PDF document pages with
how to change page orientation in pdf document; pdf reverse page order online
VB.NET Image: Read and Scan Codabar on Image and Document within
and recognize Codabar from certain Word document page(s on scanned Codabar, including location, orientation, and even format, you only need to change the sample
pdf rotate one page; rotate pages in pdf permanently
Reading the computer’s name:
Private Declare Function GetComputerName Lib “kernel32” _
Alias “GetComputerNameA” ( _
ByVal lbbuffer As String, _
nsize As Long) As Long
Public Property Get ComputerName() As String
Dim sBuff As String * 255, lAPIResult As Long
Dim lBuffLen As Long
lBuffLen = 255
lAPIResult = GetComputerName(sBuff, lBuffLen)
If lBuffLen > 0 Then ComputerName = Left(sBuff, lBuffLen)
End Property
These can be tested by using the following routine (in a standard module):
Sub TestCSysInfo()
Dim oSysInfo As New CSysInfo
Debug.Print “Screen Height = “ & oSysInfo.ScreenHeight
Debug.Print “Screen Width = “ & oSysInfo.ScreenWidth
Debug.Print “Color Depth = “ & oSysInfo.ColorDepth
Debug.Print “One pixel = “ & oSysInfo.PointsPerPixel & “ points”
Debug.Print “User name = “ & oSysInfo.UserName
Debug.Print “Computer name = “ & oSysInfo.ComputerName
End Sub
Modifying Us erFor m St yles
UserForms in Excel do not provide any built-in mechanism for modifying their appearance. Your only
choice is a simple popup dialog with a caption and an X button to close the form, though you can choose
to show it modally or non-modally.
Using API calls, you can modify the UserForm’s window to do any combination of the following:
Switching between modal and non-modal while the form is showing
Making the form resizable
Showing or hiding the form’s caption and title bar
Showing a small title bar, like those on a floating toolbar
Showing a custom icon on the form
Showing an icon in the task bar for the form
Removing the X button to close the form
Adding standard maximize and minimize buttons
You can find example workbooks demonstrating all these choices at www.wrox.com, with the key parts
of the code explained in the following sections.
622
Chapter 27: Programming with the Windows API
C# Imaging - Read PDF 417 Barcode in C#.NET
Read PDF 417 in entire PDF, Word, Excel or PPTX page region with C# code. C# code to scan multiple PDF 417 barcodes in any orientation.
pdf rotate pages separately; how to rotate a pdf page in reader
VB.NET Image: How to Create Visual Basic .NET Windows Image Viewer
You can get a basic idea of the page layout from the list below: Visual Basic .NET Image Apart from that, you are entitled to change the orientation of an
change orientation of pdf page; how to rotate all pages in pdf in preview
Window Styles
The appearance and behavior of a window is primarily controlled by its style and extended style properties.
These styles are both Long values, in which each bit of the value controls a specific aspect of the window’s
appearance—either on or off. You can change the window’s appearance using the following process:
1.
Use FindWindow to get the UserForm’s window handle.
2.
Read its style using the GetWindowLong function.
3.
Toggle one or more of the style bits.
4.
Set the window to use this modified style using the SetWindowLong function.
5.
For some changes, tell the window to redraw itself using the ShowWindow function.
Some of the main constants for each bit of the basic window style are (no need to type these in):
‘Style to add a titlebar
Private Const WS_CAPTION As Long = &HC00000       
‘Style to add a system menu
Private Const WS_SYSMENU As Long = &H80000        
‘Style to add a sizable frame 
Private Const WS_THICKFRAME As Long = &H40000     
‘Style to add a Minimize box on the title bar 
Private Const WS_MINIMIZEBOX As Long = &H20000    
‘Style to add a Maximize box to the title bar 
Private Const WS_MAXIMIZEBOX As Long = &H10000    
‘Cleared to show a task bar icon 
Private Const WS_POPUP As Long = &H80000000       
‘Cleared to show a task bar icon 
Private Const WS_VISIBLE As Long = &H10000000     
And some of those for the extended window style are:
‘Controls if the window has an icon 
Private Const WS_EX_DLGMODALFRAME As Long = &H1   
‘Application Window: shown on taskbar 
Private Const WS_EX_APPWINDOW As Long = &H40000   
‘Tool Window: small titlebar 
Private Const WS_EX_TOOLWINDOW As Long = &H80     
Note that this is only a subset of all the possible window style bits. See the MSDN documentation for
Window Styles for the full list (http://msdn.microsoft.com/library/en-us/winui/winui/
WindowsUserInterface/Windowing/Windows/WindowReference/WindowStyles.asp) and the
API Viewer for their values.
623
Chapter 27: Programming with the Windows API
The following example uses the preceding process to remove a UserForm’s close button, and it can be
found in the NoCloseButton.xlsm example in the code download at www.wrox.com:
‘Find the UserForm’s Window
Private Declare Function FindWindow Lib “user32” _
Alias “FindWindowA” ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
‘Get the current window style
Private Declare Function GetWindowLong Lib “user32” _
Alias “GetWindowLongA” ( _
ByVal hWnd As Long, _
ByVal nIndex As Long) As Long
‘Set the new window style
Private Declare Function SetWindowLong Lib “user32” _
Alias “SetWindowLongA” ( _
ByVal hWnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Const GWL_STYLE = -16            ‘The standard syle
Const WS_SYSMENU = &H80000       ‘The system menu style bit
Private Sub UserForm_Initialize()
Dim hWnd As Long, lStyle As Long
‘1. Find the UserForm’s window handle
If Val(Application.Version) >= 9 Then
hWnd = FindWindow(“ThunderDFrame”, Me.Caption)
Else
hWnd = FindWindow(“ThunderXFrame”, Me.Caption)
End If
‘2. Get the current window style
lStyle = GetWindowLong(hWnd, GWL_STYLE)
‘3. Toggle the SysMenu bit, to turn off the system menu
lStyle = (lStyle And Not WS_SYSMENU)
‘4. Set the window to use the new style
SetWindowLong hWnd, GWL_STYLE, lStyle
End Sub
The CFormChanger Class
As mentioned previously in this chapter, API calls are much easier to use when they are encapsulated
within a class module. The CFormChanger class included in the FormFun.xlsm file at www.wrox.com
repeats the previous code snippet for all the windows style bits mentioned in the previous section, pre-
senting them as the following properties of the class:
624
Chapter 27: Programming with the Windows API
Modal
Sizeable
ShowCaption
SmallCaption
ShowIcon
IconPath(to show a custom icon)
ShowCloseBtn
ShowMaximizeBtn
ShowMinimizeBtn
ShowSysMenu
ShowTaskBarIcon
To use the class on your own forms, copy the entire class module into your project and call it from your
form’s Activate event, as in the following example. You can find this example in the ToolbarForm.xlsm
workbook at www.wrox.com:
Private Sub UserForm_Activate()
Dim oChanger As CFormChanger
‘Create a new instance of the CFormChanger class
Set oChanger = New CFormChanger
‘Set the form changer’s properties
oChanger.SmallCaption = True
oChanger.Sizeable = True
‘Tell the changer which form to apply the style changes to.
‘Also acts as the trigger for applying them
Set oChanger.Form = Me
End Sub
Resizable UserFor ms
In Office XP, Microsoft made the File ➪Open and File ➪Save As dialogs resizable. They remember their
position and size between sessions, greatly improving their usability. Using the same API calls shown in
the previous section and a class module to do all the hard work, you can give your users the same expe-
rience when interacting with your UserForms.
One of the curiosities of the UserForm object is that it has a Resize event, but it doesn’t have a property
to specify whether or not it is resizable —the Resize event only fires when the form is first displayed.
As shown in the previous example, you can provide your own Sizeable property by toggling the
625
Chapter 27: Programming with the Windows API
WS_THICKFRAMEwindow style bit; when you do this, the Userform_Resizeevent comes to life, trig-
gered every time the users change the size of the form (though not when they move it around the
screen). You can respond to this event by changing the size or position of all the controls on the form,
such that they make the best use of the UserForm’s new size.
There are two approaches that can be used to change the size or position of all the controls on the form:
absolute and relative.
Absolute Changes
Using an absolute approach, code has to be written to set the size and position of all the controls on the
form, relative to the form’s new dimensions and to each other. Consider a very simple form showing just
a ListBox and an OK button.
The code to resize and reposition the two controls using absolute methods is as follows:
Private Sub UserForm_Resize()
‘Handle the form’s resizing by specifying the new size and position
‘of all the controls
‘Use a standard gap of 6 points between controls
Const dGap = 6
‘Ignore errors caused by controls getting too small
On Error Resume Next
‘The OK button is in the middle ...
btnOK.Left = (Me.InsideWidth - btnOK.Width) / 2
‘... and at the bottom of the form, with a standard gap below it
btnOK.Top = Me.InsideHeight - dGap - btnOK.Height
‘The list’s width is the form’s width,
‘minus two gaps for the left and right edges
lstItems.Width = Me.InsideWidth - dGap * 2
‘The list should fill the space between the top of the form
‘and the top of the OK button, minus a gap top and bottom
lstItems.Height = btnOK.Top - dGap * 2
End Sub
It works, but has a few major problems:
Specific code has to be written for every control that changes size or position, which can be a
daunting task for more complex forms. See the resize code in FormFun.xlsm for an example
of this.
The size and position of controls are often dependent on the size and position of other controls
(such as the bottom of the ListBox being four pixels above the top of the OK button).
626
Chapter 27: Programming with the Windows API
If you modify the appearance of the form by adding or moving controls, you have to make cor-
responding changes to the resize code. For example, to add a Cancel button alongside the OK
button, you have to add code to handle the Cancel button’s repositioning and also change the
code for the OK button.
There is no opportunity for code reuse.
Relative Changes
Using a relative approach, information is added to each control to specify by how much that control’s
size and position should change as the UserForm’s size changes. In the same dialog, the two controls
have the following relative changes:
The OK button should move down by the full change in the form’s height (to keep it at the
bottom).
The OK button should move across by half the change in the form’s width (to keep it in the
middle).
The ListBox’s height and width should change by the full change in the form’s height and width.
These statements can be encoded into a single string to state the percentage change for each control’s
TopLeftHeight, and Widthproperties, and can be stored against the control. Aconvenient place to
store it is the control’s Tag property, which allows the resizing behavior of the control to be set at design
time. Using the letters TLH, and W for the four properties, and a decimal for the percentage change if
not 100%, gives the Tag properties of HWfor the list box and TL0.5 for the OK button, as shown in
Figure 27-2.
Figure 27-2
When the UserForm_Resize event fires, the code can calculate the change in the form’s height and
width and iterate through all the controls, adjusting their TopLeftHeight, and Width as specified by
their Tag properties. The CFormResizer class to do this is shown in the next section.
There are a number of benefits to this approach:
The resize behavior of each control is set at design time, while the form is being viewed, just like
all the other properties of the control.
The change in size and position of each control is independent of any other control.
627
Chapter 27: Programming with the Windows API
Documents you may be interested
Documents you may be interested