display pdf in wpf c# : How to rotate a page in pdf and save it Library software class asp.net windows html ajax 68848-part566

The charts plot the data in the last row. Because the number of rows varies, the
last row must be determined dynamically. The last row of the worksheet is deter-
mined by using the 
End
method. This is similar to activating the last cell in a column
and then pressing End, followed by Up Arrow.
Next,  a 
ChartObject
is  inserted  and  a  new  series  is  created  by  using  the
NewSeries
method. Subsequent statements assign the data range (the 
Values
prop-
erty) and the category labels range (the 
Xvalues
property). Note that the category
labels range is in the same range on each sheet, so this range does not have to be
determined by the code. The next statement changes the color of the columns.
The next series of statements applies various types of adjustments on the chart.
Finally, the 
ChtTop
variable is updated, ready to be used for the next chart’s posi-
tioning. Notice that screen updating is turned off at the beginning of the macro. On
slower systems, having this off may speed up the macro a bit.
Sizing and Aligning Charts
When you work with several embedded charts, you may prefer that the charts are
all the same size and aligned. The following macro does the job.
Sub SizeAndAlignCharts()
Dim ChtWidth As Long, ChtHeight As Long
Dim TopPosition As Long, LeftPosition As Long
Dim ChtObj As ChartObject
If ActiveChart Is Nothing Then Exit Sub
‘Get size of active chart
ChtWidth = ActiveChart.Parent.Width
ChtHeight = ActiveChart.Parent.Height
TopPosition = ActiveChart.Parent.Top
LeftPosition = ActiveChart.Parent.Left
‘Loop through all Chart Objects
For Each ChtObj In ActiveSheet.ChartObjects
ChtObj.Width = ChtWidth
ChtObj.Height = ChtHeight
ChtObj.Top = TopPosition
ChtObj.Left = LeftPosition
TopPosition = TopPosition + ChtObj.Height
Next ChtObj
End Sub
The 
SizeAndAlignCharts
macro requires that a chart is active, and uses this chart
as a “base.” The procedure resizes all other charts on the sheet such that they are the
same size as the active chart. In addition, the charts are repositioned so they are all
aligned vertically.
Chapter 16: Using VBA with Charts: Examples
449
How to rotate a page in pdf and save it - 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#
reverse page order pdf online; rotate pages in pdf permanently
How to rotate a page in pdf and save it - 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
pdf rotate one page; pdf rotate page and save
The 
TopPosition
variable stores the vertical position of the chart and is modi-
fied each time through the loop. The new vertical position is the previous vertical
position plus the height of the 
ChartObject
object. The result is a stack of charts,
neatly aligned with no space in between each.
The JWalk Chart Tools add-in,available on the companion CD-ROM,includes
a utility to resize all charts on the active sheet so that they match the active
chart (see Figure 16-10).
Figure 16-10: Using the Chart Size utility 
from the JWalk Chart Tools add-in
Applying Data Labels
As you may know, applying data labels to a chart series has a serious limitation:
Excel does not enable you to specify an arbitrary range for the data label text. With
a fairly simple macro, however, you can overcome this limitation and apply data
labels from any range.
A basic data label macro
Figure 16-11 shows an XY chart. The goal is to label each point with the corre-
sponding name in column A. The following macro accomplishes this goal.
Sub ApplyDataLabels()
Dim Ser As Series, Pt As Point
Dim Counter As Long
Set Ser = ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
Ser.HasDataLabels = True
Counter = 1
450
Part III: Using VBA with Charts
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
this RasterEdge XDoc.PDF SDK, you can simply delete a single page from a PDF document using VB.NET or remove any page from a PDF document and save to local
rotate pdf pages by degrees; how to rotate a page in pdf and save it
C# PDF Page Insert Library: insert pages into PDF file in C#.net
those page processing functions, such as how to merge PDF document files by C# code, how to rotate PDF document page Add and Insert Blank Page to PDF File in
how to rotate a pdf page in reader; how to rotate all pages in pdf
For Each Pt In Ser.Points
Pt.DataLabel.Text = Range(“A1”).Offset(Counter, 0)
Counter = Counter + 1
Next Pt
End Sub
Figure 16-11: Excel does not provide a direct way to use the text in 
column A as data labels in the chart.
The 
ApplyDataLabels
macro creates an object variable (
Ser
) that represents the
chart’s data series. It then sets the 
HasDataLabels
property to True (without this
statement, the macro would end with an error). The next statement initializes a
variable (
Counter
) to 1. The next four statements comprise a 
For Each-Next
loop,
which loops through each 
Point
object in the series. The code sets the 
Text
property
of the 
Point
object’s 
DataLabel
object equal to a cell that is offset from cell A1.
The offset row is specified by the 
Counter
variable, which is incremented each time
through the loop.
Applying linked data labels
A data label can contain a simple formula that refers to a cell. In such a case, the
data label is linked to that cell—if the cell changes, so does the corresponding data
label. It’s a simple matter to modify this macro so that it creates links to the cells.
Only one statement needs to be changed:
Pt.DataLabel.Text = “=” & Range(“A1”).Offset(Counter, 0) _
.Address(True, True, xlR1C1, True) 
Chapter 16: Using VBA with Charts: Examples
451
C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
doc.Save(outPutFilePath); Related APIs (PDFDocument.cs): public override void DeletePage(int pageId). Description: Delete specified page from the input PDF file
how to save a pdf after rotating pages; rotate individual pages in pdf reader
VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
Dim outPutFilePath As String = Program.RootPath + "\\" Output.pdf" Dim doc1 inputFilePath2) ' Get page 0, page 1 and page 2 from doc2.Save(outPutFilePath).
rotate pdf pages by degrees; rotate all pages in pdf preview
This statement inserts an equal sign (to indicate a formula), followed by the
Address
property of the cell. The 
Address
property takes four arguments. After
executing the modified macro, the first data label in the series contains this formula:
=Sheet1!$A$2
The arguments for the Addressproperty specify that the cell address be rep-
resented as an absolute reference (arguments 1 and 2),in R1C1 reference style
(argument 3),and in “external”format (argument 4).Using the external format
ensures that the sheet name is appended to the cell reference.The require-
ment to use an R1C1 reference style is an unusual quirk that’s not documented.
Prompting for a range
The preceding macros hard-code the data label range, so they are not general-
purpose macros. A better approach is to specify the range interactively. The follow-
ing macro uses the 
InputBox
method to display a simple dialog box in which the
user can specify a range by clicking a cell (see Figure 16-12).
Figure 16-12: The InputBox method prompts 
the user for a range.
The 
DataLabelsWithPrompt
macro, which follows, is similar to the preceding
macros but contains additional code to display the dialog box. The cell specified by
the user is assigned to a 
Range
object variable (
RngLabels
). Notice that there’s a
statement that checks to see whether 
RngLabels
is 
Nothing
. That will be the case if
the user clicks the Cancel button. If so, the macro ends with no action. The 
On
Error Resume Next
statement is present because clicking Cancel causes an error.
That statement simply ignores the error. Also, notice the second 
Set
statement that
uses the 
RngLabels
object. This statement ensures that if the user selects a multicell
range, only the first cell in the selected range is assigned to 
RngLabels
.
Sub DataLabelsWithPrompt()
Dim RngLabels As Range
452
Part III: Using VBA with Charts
C# TIFF: How to Rotate TIFF Using C# Code in .NET Imaging
Convert Tiff to Jpeg Images. Convert Word, Excel, PowerPoint to Tiff. Convert PDF to Tiff. Move Tiff Page Position. Rotate a Tiff Page. Extract Tiff Pages.
rotate pages in pdf and save; rotate pages in pdf online
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
pageIndex = 2; doc.UpdatePage(page, pageIndex); // Save the PDFDocument. String outputFilePath = Program.RootPath + "\\" Output.pdf"; doc.Save(outputFilePath
how to rotate all pages in pdf; how to rotate a pdf page in reader
Dim Ser As Series
Dim i As Long
On Error Resume Next
Set RngLabels = Application.InputBox _
(prompt:=”First cell for data labels?”, Type:=8)
If RngLabels Is Nothing Then Exit Sub ‘Canceled
Set RngLabels = RngLabels(1)
On Error GoTo 0
Set Ser = ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
Ser.HasDataLabels = True
Counter = 0
For Each Pt In Ser.Points
Pt.DataLabel.Text = RngLabels.Offset(Counter, 0)
Counter = Counter + 1
Next Pt
End Sub
The JWalk Chart Tools add-in,available on the companion CD-ROM,
includes a utility to apply data labels to the active chart.
Exporting Charts as GIF Files
Saving a chart as a GIF file is very easy: Just use the 
Export
method of the 
Chart
object.  Here’s  a simple  macro  that  saves  the  active  chart  as  a  GIF file  named
mychart.gif:
Sub ExportToGIF()
If ActiveChart Is Nothing Then
MsgBox “Select a chart.”
Else
ActiveChart.Export “mychart.gif”, “GIF”
End If
End Sub
The macro first checks to ensure that a chart is active. If so, it saves the chart to
the current directory.
If you prefer to be prompted for a filename and location, use the macro that fol-
lows. This macro uses the 
GetSaveAsFilename
function to display a dialog box
with a default filename (the chart’s name) and directory. The user can then accept
these defaults or select a different directory or filename. Figure 16-13 shows the
Chapter 16: Using VBA with Charts: Examples
453
How to C#: Rotate Image according to Specified angle
VB.NET How-to, VB.NET PDF, VB.NET Word, VB.NET Excel, VB.NET 30); //If the input image has multiple frames,> //it will only rotate the second page of the
rotate one page in pdf reader; how to rotate page in pdf and save
C# PDF Convert to Tiff SDK: Convert PDF to tiff images in C#.net
Description: Convert to DOCX/TIFF with specified zoom value and save it into stream. Parameters: zoomValue, The magnification of the original PDF page size.
how to rotate one page in a pdf file; rotate pdf pages in reader
dialog box that’s displayed when this macro is executed. If the Cancel button is
clicked, the function returns False. In such a case, the macro ends with no action.
Sub SaveAsGIF()
Dim FileName As Variant
If ActiveChart Is Nothing Then
MsgBox “Select a chart.”
Exit Sub
End If
‘   Get the filename
FileName = Application.GetSaveAsFilename( _
InitialFileName:=ActiveChart.Name & “.gif”, _
FileFilter:=”GIF Files (*.gif), *.gif”, _
Title:=”Save chart as GIF file”)
If FileName <> False Then
ActiveChart.Export FileName, “GIF”
End If
End Sub
Figure 16-13: Using the GetSaveAsFilename function to prompt 
for a filename and directory
The JWalk Chart Tools add-in,available on the companion CD-ROM,
includes a utility to export charts as GIF files.
454
Part III: Using VBA with Charts
Chapter 16: Using VBA with Charts: Examples
455
VBA Speed Tips
VBA is fast, but it’s often not fast enough. Following are a few tips to maximize the
speed of your macros.
Turning off screen updating
You’ve probably noticed that when you execute a macro, you can watch everything
that occurs in the macro. Sometimes this is instructive, but after you get the macro
working properly, it can be annoying and slow things considerably. Fortunately, there’s
a way to disable the normal screen updating that occurs when you execute a macro.
Insert the following statement to turn screen updating off:
Application.ScreenUpdating = False
If, at any point during the macro, you want the user to see the results of the macro,
use the following statement to turn screen updating back on:
Application.ScreenUpdating = True
Preventing alert messages
One of the benefits of using a macro is that you can perform a series of actions
automatically. You can start a macro and then get a cup of coffee while Excel does 
its thing. Some operations cause Excel to display messages that must be attended 
to, however. For example, if your macro deletes a sheet, you see a warning message.
These types of messages mean that you can’t execute your macro unattended.
To avoid these alert messages, insert the following VBA statement:
Application.DisplayAlerts = False
When the procedure ends, the 
DisplayAlerts
property is automatically reset to
True (its normal state).
Simplifying object references
As you probably have discovered, references to objects can get very lengthy—
especially if your code refers to an object that’s not on the active sheet or in the
active workbook. For example, a fully qualified reference to a 
Series
object may 
look like this:
Workbooks(“MyBook”).Worksheets(“Sheet1”).ChartObjects(1).Chart.SeriesCollection(1)
If your macro uses this range frequently, you may want to create an object variable by
using the 
Set
command. For example, to assign this 
Series
object to an object
variable named 
ChtSer
, use the following statement:
Set ChtSer = Workbooks(“MyBook”).Worksheets(“Sheet1”). _   
ChartObjects(1).Chart.SeriesCollection(1)
Continued
Determining the Ranges 
Used in a Chart
You might need a VBA macro that must determine the ranges used by each series in
chart. For example, you may want to increase the size of each series by adding a new
cell. Following is a description of three properties that seem relevant to this task:
Formula property: Returns or sets the SERIES formula for the Series.
When you select a series in a chart, its SERIES formula is displayed in 
the formula bar. The 
Formula
property returns this formula as a string. 
Values property: Returns or sets a collection of all the values in the series.
This can be a range on a worksheet or an array of constant values, but
not a combination of both.
XValues property: Returns or sets an array of x values for a chart series.
The 
XValues
property can be set to a range on a worksheet or to an array
of values—but it can’t be a combination of both. The 
Xvalues
property
can also be empty.
If you create a VBA macro that needs to determine the data range used by a par-
ticular chart series, you may think that the 
Values
property of the 
Series
object is
just the ticket. Similarly, the 
XValues
property seems to be the way to get the range
that contains the x values (or category labels). In theory, that certainly seems cor-
rect. But in  practice, it doesn’t work. When you set the 
Values
property for a
Series
object, you can specify a 
Range
object or an array. But when you read this
property, it is always an array. Unfortunately, the object model provides no way to
get a 
Range
object used by a 
Series
object.
456
Part III: Using VBA with Charts
VBA Speed Tips (Continued)
After this variable is defined, you can use the variable 
ChtSer
instead of the lengthy
reference.
Declaring variable types
Usually, you don’t have to worry about the type of data that’s assigned to a variable.
Excel handles all these details behind the scenes. For example, if you have a variable
named 
MyVar
, you can assign a number or any type to it. You can even assign a text
string to it later in the procedure.
But if you want your procedures to execute as fast as possible, you should tell Excel in
advance what type of data is going be assigned to each of your variables. This is known as
declaring a variable’s type. Chapter 14 contains additional information about data types.
One possible solution is to write code to parse the 
SERIES
formula and extract
the range addresses. This sounds simple, but it’s actually a difficult task because a
SERIES
formula can be very complex. Following are a few examples of valid 
SERIES
formulas.
=SERIES(Sheet1!$B$1,Sheet1!$A$2:$A$4,Sheet1!$B$2:$B$4,1)
=SERIES(,,Sheet1!$B$2:$B$4,1)
=SERIES(,Sheet1!$A$2:$A$4,Sheet1!$B$2:$B$4,1)
=SERIES(“Sales Summary”,,Sheet1!$B$2:$B$4,1)
=SERIES(,{“Jan”,”Feb”,”Mar”},Sheet1!$B$2:$B$4,1)
=SERIES(,(Sheet1!$A$2,Sheet1!$A$4),(Sheet1!$B$2,Sheet1!$B$4),1)
=SERIES(Sheet1!$B$1,Sheet1!$A$2:$A$4,Sheet1!$B$2:$B$4,1,Sheet1!$C$2:$C$4)
As you can see, a 
SERIES
formula can have missing arguments, use arrays, and
even use noncontiguous range addresses. And to confuse the issue even more, a
bubble chart has an additional argument (for example, the last SERIES formula in
the preceding list). Attempting to parse out the arguments is certainly not a trivial
programming task.
I worked on this problem for several years, and I eventually arrived at a solution.
The trick involves evaluating the 
SERIES
formula by using a dummy function. This
function accepts the arguments in a 
SERIES
formula and returns a 2 x 5 element
array that contains all the information in the 
SERIES
formula.
I simplified the solution by creating four custom VBA functions, each of which
accepts one argument (a reference to a 
Series
object) and returns a two-element
array. These functions are the following:
SERIESNAME_FROM_SERIES: The first array element contains a string
that describes the data type of the first 
SERIES
argument (Range, Empty,
or String). The second array element contains a range address, an empty
string, or a string.
XVALUES_FROM_SERIES: The first array element contains a string that
describes the data type of the second 
SERIES
argument (Range, Array,
Empty, or String). The second array element contains a range address, an
array, an empty string, or a string.
VALUES_FROM_SERIES: The first array element contains a string that
describes the data type of the third 
SERIES
argument (Range or Array).
The second array element contains a range address or an array.
BUBBLESIZE_FROM_SERIES: The first array element contains a string
that describes the data type of the fifth 
SERIES
argument (Range, Array,
or Empty). The second array element contains a range address, an array,
or an empty string. This function is relevant only for bubble charts.
Note that there is not a function to get the fourth 
SERIES
argument (plot order).
This argument can be obtained directly by using the 
PlotOrder
property of the
Series
object.
Chapter 16: Using VBA with Charts: Examples
457
The following example demonstrates. It displays the address of the values range
for the first series in the active chart.
Sub ShowValueRange()
Dim Ser As Series
Dim x As Variant
Set Ser = ActiveChart.SeriesCollection(1)
x = VALUES_FROM_SERIES(Ser)
If x(1) = “Range” Then
MsgBox Range(x(2)).Address
End If
End Sub 
The variable 
x
is defined as a variant and will hold the two-element array that’s
returned by the 
VALUES_FROM_SERIES
function. The first element of the 
x
array con-
tains a string that describes the data type. It the string is Range, then the message
box displays the address of the range contained in the second element of the 
x
array.
The VBA code for these functions is too complex to be presented here,but
it’s available on the companion CD-ROM.It’s documented such that it can
be easily adapted to other situations.
Protecting Charts
You’re probably familiar with the ability to protect a worksheet using the Tools
ProtectionProtect Sheet command. When a worksheet is protected, “locked” cells
cannot be changed. By default, all cells are locked. They can be unlocked by using
the Protection tab of the Format Cells dialog box. Protecting a sheet also disables
modification of any embedded charts on the worksheet.
You may have also discovered that you can protect a Chart sheet—also by using
the ToolsProtectionProtect Sheet command. When a Chart sheet is protected,
the chart cannot be modified.
Beginning with Excel 2002, sheet protection has become more versatile.
When you protect a sheet,you are presented with a list of options that can
be performed when the sheet is protected. Among those options is Edit
Objects.When this option is enabled, charts can still be edited when the
sheet is protected.
458
Part III: Using VBA with Charts
Documents you may be interested
Documents you may be interested