display pdf in asp.net page : Rotate individual pdf pages reader Library control component .net azure windows mvc dmp14-part1821

Spec
i
al problem
s
w
i
th date f
i
eld
s
121
Finding the date of the fir
s
t Monday in a given year
This isn’t as simple as it sounds. The obvious way would be to do this:
print Date_to_Text(Monday_of_Week(1, $year));
but if you try this for 2001 you’ll get Mon 31-Dec 2000. The problem is in the def-
inition of week one of a year. Week one of a year is defined to be the week that con-
tains January 4. You can, therefore, see that if the first Monday of the year is
January 5, then that day is defined as being in week two and the Monday of week
one is, in fact, December 29 of the previous year. We will need to do something a
little more sophisticated. If we calculate which week number contains January 7 and
then find the Monday of that week, we will always get the first Monday in the year.
The code looks like this:
my $week = Week_Number($year, 1, 7);
print Date_to_Text(Monday_of_Week($week, $year));
6.4.3 Da
t
e
:
:
Manip
Date::Manip
is, if possible, even bigger and more complex than 
Date::Calc
.
Many of the same functions are available (although, obviously, they often have dif-
ferent names).
Examples
:
da
t
e and 
t
ime manipula
t
ion wi
t
h Da
t
e
:
:
Manip
Let’s once more look at solving our three standard problems.
Finding the date in x day
s
time
With 
Date::Manip
, the code would look like this:
print UnixDate(DateCalc(ParseDateString('now'), "+${x}d"),
"%d/%m/%Y %H:%M:%S");
# Where $x is the number of days to add
Finding the date of the previou
s
Saturday
Again this is very simple with 
Date::Manip
. We can use the 
Date_GetPrev
func-
tion to get the date immediately. In the call to 
Date_GetPrev
6
is for Saturday and
0
is the 
$curr
flag so it won’t return the current date if today is a Saturday.
my $today = ParseDateString('today');
my $sat = Date_GetPrev($today, 6, 0);
print UnixDate($sat, "%d/%m/%Y");
Finding the date of the fir
s
t Monday in a given year
This is another problem that is much easier with 
Date::Manip
. We can use
Date_GetNext
to get the date of the first Monday after January 1, passing it 
1
in
the 
$curr
flag so it returns the current date if it is a Monday.
Rotate individual pdf pages reader - 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#
rotate pdf page and save; change orientation of pdf page
Rotate individual pdf pages reader - 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
rotate pdf page by page; rotate pages in pdf online
122
CHAPTER 
Record-or
i
ented data
my $jan_1 = ParseDateString("1 Jan $year");
my $mon = Date_GetNext($jan_1, 1, 1);
print UnixDate($mon, "%d/%m/%Y");
6.4.4 Choosing be
t
ween da
t
e modules
We have seen a number of different ways to handle problems involving dates. It
might be difficult to see how to choose between these various methods. My advice:
use built-in Perl functions unless you have a really good reason not to.
The major reason for this is performance. 
Date::Manip
is a very large module
which does a number of very complex things and they are all implemented in pure
Perl code. Most things can be handled much more efficiently with custom written
Perl code. I hope I’ve demonstrated that there are very few date manipulations
which can’t be achieved with the standard Perl functions and modules. It is a ques-
tion of balancing the ease of writing the program against the speed at which it runs.
Benchmarking da
t
e modules
As an example, look at this benchmark program which compares the speed of the
Data::Manip
ParseDate
function with that of a piece of custom Perl code which
builds up the same string using 
localtime
.
#!/usr/bin/perl -w
use strict;
use Date::Manip;
use Benchmark;
timethese(5000, {'localtime' => \&ltime, date_manip => \&dmanip});
sub ltime {
my @now = localtime;
sprintf("%4d%02d%02d%02d:%02d:%02d",
$now[5] + 1900, ++$now[4], $now[3], $now[2], $now[1], $now[0]);
}
sub dmanip {
ParseDate('now');
}
Running this script gives the following output:
Benchmark: timing 5000 iterations of date_manip, localtime …
date_manip: 29 wallclock secs (28.89 usr +
0.00 sys = 28.89 CPU)
localtime:
2 wallclock secs ( 2.04 usr +
0.00 sys =
2.04 CPU)
As you can see, the standard Perl version is almost fifteen times faster.
Having seen this evidence, you might be wondering if it is ever a good idea to
use 
Date::Manip
. There is one very good reason for using 
Date::Manip
, and it is
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
Page: Delete Existing PDF Pages. |. Home ›› XDoc.PDF ›› VB.NET PDF: Delete PDF Page. How to VB.NET: Delete Consecutive Pages from PDF.
how to rotate all pages in pdf at once; reverse pdf page order online
VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
Page: Insert PDF Pages. |. Home ›› XDoc.PDF ›› VB.NET PDF: Insert PDF Page. Add and Insert Multiple PDF Pages to PDF Document Using VB.
how to rotate a pdf page in reader; rotate single page in pdf reader
Extended example
:
web acce
s
s
log
s
123
the 
ParseDate
function itself. If you are ever in a position where you are reading in
a date and you are not completely sure which format it will be in, then 
ParseDate
will most likely be able to read the date and convert it into a standard form. Here
are some of the more extreme examples of that in action:
use Date::Manip;
my @times = ('tomorrow',
'next wednesday',
'5 weeks ago');
foreach (@times) {
print UnixDate(ParseDate($_), '%d %b %Y'), "\n";
}
which displays:
08 Feb 2000
09 Feb 2000
03 Jan 2000
(or, rather, the equivalent dates for the date when it is run).
6.5
Ex
t
ended example
:
web access logs
One of the most common sources of line-oriented data is a web server access log. It
seems that everyone needs to wring as much information as possible from these files
in order to see if their web site is attracting a large enough audience to justify the
huge sums of money spent on it.
Most web servers write access logs in a standard format. Here is a sample of a real
access log. This sample comes from a log written by an Apache web server. Apache
is the Open Source web server which runs more web sites than any other server.
158.152.136.193 - - [31/Dec/1999:21:27:27 -0800] "GET /index.html HTTP/1.1" 200 2987
158.152.136.193 - - [31/Dec/1999:21:27:27 -0800] "GET /head.gif HTTP/1.1" 200 4389
158.152.136.193 - - [31/Dec/1999:21:27:28 -0800] "GET /menu.gif HTTP/1.1" 200 7317
Each of these lines represents one access request that the server has received. Let’s
look at the fields in one of these lines and see what each one represents.
The first field is the 
IP
address from which the request came. It is possible in
most web servers to have these addresses resolved to hostnames before they are
logged, but on a heavily used site this can seriously impact performance, so most
webmasters leave this option turned off.
The second and third fields (the two dash characters) denote which user made this
request. These fields will contain interesting data only if the requested page is not
public, so the user must go through some kind of authorization in order to see it.
C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
Page: Delete Existing PDF Pages. Provide C# Users with Mature .NET PDF Document Manipulating Library for Deleting PDF Pages in C#.
how to reverse pages in pdf; how to rotate a single page in a pdf document
C# PDF Page Insert Library: insert pages into PDF file in C#.net
how to merge PDF document files by C# code, how to rotate PDF document page, how to delete PDF page using C# .NET, how to reorganize PDF document pages and how
how to reverse page order in pdf; rotate pdf page few degrees
124
CHAPTER 
Record-or
i
ented data
The fourth field is the date and time of the access. It shows the local date and
time together with the difference from 
UTC
(so in this case the server is hosted in
the Pacific time zone of the 
U.S.A.
).
The fifth field shows the actual 
HTTP
request that was made. It is in three parts:
the request type (in this case, 
GET
), the 
URL
that was requested, and the protocol
used (
HTTP
/
1.1).
The final two fields contain the response code that was returned to the browser
(
200
means that the request was successful and the contents of the 
URL
have been
sent) and the number of bytes returned.
Armed with this knowledge we can look at the three lines and work out exactly
what happened. At half past nine on New Year’s Eve someone at IP address
158.152.136.193 made three requests to the web site. The person requested
index.html, head.gif, and menu.gif. Each of these requests was successful and we
returned a total of 14,000 bytes to them.
This kind of analysis is very useful and not very difficult, but a busy web site will
have many thousands of hits every day. How are you supposed to get meaningful
information from that amount of input data? Using Perl, of course.
It wouldn’t be very difficult to write something to break apart a log line and ana-
lyze the data, but it’s not completely simple—some fields are separated by spaces,
others have embedded spaces. Luckily this is such a common task that someone has
already written a module to process web access logs. It is called Logfile and you can
find it on the 
CPAN
.
Using Logfile is very simple. It consists of a number of submodules, each
tuned to handle a particular type of web server log. They are all subclasses of the
module 
Logfile::Base
. As our access log was generated by Apache we will use
Logfile::Apache
.
Logfile is an object-oriented module, so all processing is carried out via a Logfile
object. The first thing we need to do is create a Logfile object.
my $log = Logfile::Apache->new(File => 'access_log',
Group => [qw(Host Date File Bytes User)]);
The named parameters to this function make it very easy to follow what is going on.
The 
File
parameter is the name of the access log that you want to analyze. 
Group
is
a reference to a list of indexes that you will want to use to produce reports. The five
indexes listed in the code snippet correspond to sections of the Apache log record.
In addition to these, the module understands a couple of others. 
Domain
is the top
level that the requesting host is in (e.g., .com, .uk, .org), which is calculated from
the hostname. 
Hour
is the hour of the day that the request took place. It is calcu-
lated from the date field.
C# TIFF: How to Rotate TIFF Using C# Code in .NET Imaging
Individual Products. XDoc.SDK for .NET. XImage.SDK for Page. |. Home ›› XDoc.Tiff ›› C# Tiff: Rotate Tiff Page. & pages edit, C#.NET PDF pages extract, copy
rotate individual pdf pages reader; rotate a pdf page
VB.NET PDF - WPF PDF Viewer for VB.NET Program
Individual Products. XDoc.SDK for .NET. XImage.SDK for .NET. Page: Replace PDF Pages. Page: Move Page Position. Page: Copy, Paste PDF Pages. Page: Rotate a PDF
reverse page order pdf; pdf reverse page order
Extended example
:
web acce
s
s
log
s
125
Having created the Logfile object you can then start to produce reports with it.
To list our files in order of popularity we can simply do this:
$log->report(Group => 'File');
which produces a report like this:
File
Records
==================================
/
11
2.53%
/examples
1
0.23%
/examples/index.html
1
0.23%
/images/graph
1
0.23%
/images/pix
1
0.23%
/images/sidebar
1
0.23%
/images/thumbnail
5
1.15%
/index
1
0.23%
.
.
.
[other lines snipped]
This is an alphabetized list of all of the files that were listed in the access log. We can
make more sense if we sort the output by number of hits and perhaps just list the
top ten files by changing the code like this:
$log->report(Group => 'File', Sort => 'Records', Top => 10);
We then get a more understandable report that looks like this:
File
Records
==================================
/new/images
129 29.72%
/new/music
80 18.43%
/new/personal
52 11.98%
/new/friends
47 10.83%
/splash/splashes
28
6.45%
/new/pics
26
5.99%
/new/stuff
21
4.84%
/
11
2.53%
/new/splash
6
1.38%
/images/thumbnail
5
1.15%
Perhaps instead of wanting to know the most popular files, you are interested in the
most popular times of the day that people visit your site. You can do this using the
Hour
index. The following:
$log->report(Group => 'Hour');
will list all of the hours in chronological order and 
$log->report(Group => 'Hour', Sort => 'Records');
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
C#.NET PDF Library - Copy and Paste PDF Pages in C#.NET. Easy to C#.NET Sample Code: Copy and Paste PDF Pages Using C#.NET. C# programming
saving rotated pdf pages; rotate pages in pdf permanently
C# PDF: PDF Document Viewer & Reader SDK for Windows Forms
Rotate270: Rotate the currently displayed PDF page 90 degrees counterclockwise. for you to create and add a PDF document viewer & reader in Windows
rotate individual pages in pdf; rotate all pages in pdf file
F
i
xed-w
i
dth data
129
Now we can start to make some sense of the data. We can see that on Novem-
ber 5, 1999, we received a check (number 100103) for $150.00 from Bloggs &
Co. and on November 6, 1999, we paid $49.99 to Smith Brothers in response to
their invoice number 1234.
Example
:
ex
t
rac
t
ing fixed
-
wid
t
h da
t
a fields wi
t
h subs
t
r
So how do we go about extracting that information from the data? Here’s a first
attempt using the 
substr
function to do the work:
my @cols = qw(5 25 33 39 40 48);
while (<STDIN>) {
my @rec;
my $prev = 0;
foreach my $col (@cols) {
push @rec, substr($_, $prev, $col - $prev);
$prev = $col;
}
print join('¦', @rec);
print "\n";
}
While this code works, it’s not particularly easy to understand. We use an array of
column positions to tell us where each column ends. Notice that we’ve actually
used the positions where the columns begin rather than end. This is because the
column definitions that we were given start from column one, whereas Perl arrays
start from zero—all in all, not the most maintainable piece of code. 
Example
:
ex
t
rac
t
ing fixed
-
wid
t
h da
t
a wi
t
h regular expressions
Perhaps we’d do better if we used regular expressions:
my @widths = qw(5 20 8 6 1 8);
my $regex;
$regex .= "(.{$_})" foreach @widths;
while (<STDIN>) {
my @rec = /$regex/;
print join('¦', @rec);
print "\n";
}
In this case we’ve switched from using column start (or end) positions to using col-
umn widths. It’s not very difficult to build this list given our previous list. We then
use the list of widths to construct a regular expression which we can match against
each row of our data file in turn. The regular expression that we build looks like this:
130
CHAPTER 
F
i
xed-w
i
dth and b
i
nary data
(.{5})(.{20})(.{8})(.{6})(.{1})(.{8})
which is really a very simple regular expression. For each column in the data record,
there is an element of the form 
(.{x})
, where 
x
is the width of the column. This
element will match any character 
x
times and the parentheses will save the result of
the match. Matching this regular expression against a data record and assigning the
result to an array will give us a list containing all of the 
$1
$2
$n
variables in order.
This isn’t a very interesting use of regular expressions. There must be a better way. 
Example
:
ex
t
rac
t
ing fixed
-
wid
t
h da
t
a wi
t
h unpack
In this case the best way is to use Perl’s 
unpack
function. 
unpack
takes a scalar
expression and breaks it into a list of values according to a template that it is given.
The template consists of a sequence of characters which define the type and size of
the individual fields. A simple way to break apart our current data would be like this:
my $template = 'a5a20a8a6aa8';
while (<STDIN>) {
my @rec = unpack($template, $_);
print join('¦', @rec);
print "\n";
}
which returns exactly the same set of data that we have seen in all of the examples
above. In this case our template consists of the letter 
a
for each field followed by the
length of the field (the length is optional on single-character fields like our 
+/-
field). The 
a
designates each field as an 
ASCII
string, but the template can contain
many other options. For reference, here is one of the data lines that was produced
by the previous example:
00374¦Bloggs & Co
¦19991105¦100103¦+¦00015000
Notice that the numbers are still prepadded with zeroes and the string is still post-
padded with spaces. Now see what happens if we replace each 
a
in the template
with an 
A
.
00374¦Bloggs & Co¦19991105¦100103¦+¦00015000
The spaces at the end of the string are removed. Depending on your application,
this may or may not be what you want. Perl gives you the flexibility to choose the
most appropriate route.
There are a number of other options that can be used in the 
unpack
template
and we’ll see some more of them when we look at binary data in more detail. For
ASCII
data, only 
a
and 
A
are useful.
Documents you may be interested
Documents you may be interested