display pdf in asp.net page : How to rotate a pdf page in reader control Library system azure .net web page console dmp16-part1823

B
i
nary data
141
binmode STDIN;
my $data;
read(STDIN, $data, 8);
die "Not a PNG file" unless $data eq "\x89PNG\cM\cJ\cZ\cM";
while (read(STDIN, $data, 8)) {
my ($size, $type) = unpack('Na4', $data);
print "$type ($size bytes)\n";
read(STDIN, $data, $size);
if ($type eq 'IHDR') {
my ($w, $h, $bitdepth, $coltype, $comptype, $filtype, $interlscheme) =
unpack('NNCCCCC', $data);
print << "END";
Width: $w, Height: $h
Bit Depth: $bitdepth, Color Type: $coltype
Compression Type: $comptype, Filtering Type: $filtype
Interlace Scheme: $interlscheme
END
}
read(STDIN, $data, 4);
}
The first thing to do when dealing with binary data is to put the file handle that you
will be reading into binary mode by calling 
binmode
on it. This is necessary on
operating systems which differentiate between binary and text files (these include
DOS
and Windows). On these operating systems, a 
\cM\cJ
end-of-line marker in a
text file gets translated to 
\n
as it is read in. If this sequence appears in a binary file,
it needs to be left untouched. Operating systems, such as 
UNIX
, don’t make this
binary
/
text differentiation, so under them 
binmode
has no effect. For reasons of
portability it is advisable to always call this function.
Having called 
binmode
, we can then start reading our binary data. As we saw
before, the first thing that we do is to read the first 8 bytes and check them
against the signature for 
PNG
files. If it matches we continue, otherwise we termi-
nate the program.
We then go into a 
while
loop, reading the header of each chunk in the file. We
read 8 bytes of raw data and convert it into something easier to understand using
unpack
. Notice that we use 
N
to extract the 4-byte integer and 
a4
to extract the
4-character string. The full set of options that you can use in an 
unpack
format
string is given in the documentation that came with your Perl distribution. It is in
the 
perlfunc
manual page (and notice that the full set of options is listed under
the 
pack
function). Having established the type of the chunk and the amount of
data that it contains, we can read in that amount of data from the file. In our pro-
gram we also display the information to the user.
How to rotate a pdf page in 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#
how to permanently rotate pdf pages; how to reverse page order in pdf
How to rotate a pdf page in 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
pdf reverse page order online; how to rotate a pdf page in reader
142
CHAPTER 
F
i
xed-w
i
dth and b
i
nary data
The type of the chunk determines how we process the data we have read. In our
case, we are only dealing with the 
IHDR
chunk, and that is defined as two 4-byte
integers followed by five single-character strings. We can, therefore, split the data
apart using the 
unpack
format 
NNCCCCC
. The definition of these fields is in the 
PNG
documentation but there is a préci
s
in table 7.2.
Having unpacked this data into more useable chunks we can display it. It may be
more useful to translate some of the numbers to descriptive strings, but we won’t
do that in this example.
After reading and processing the chunk data, we need only to read in the 4 bytes
which make up the chunk footer. This value can be used as a checksum against the
data in the chunk to ensure that it has not been corrupted. In this simple example
we will throw it away.
Our program then goes on to read all of the other chunks in turn. It doesn’t
process them, it simply displays the type and size of each chunk it finds. A more
complex program would need to read the 
PNG
specification and work out how to
process each type of chunk.
Table 7.2 Elemen
t
s
of a PNG IHDR chunk
Field
Type
De
s
crip
t
ion
Width
4
-
byte integer
The width of the image in pixel
s
Height
4
-
byte integer
The height of the image in pixel
s
Bit Depth
1
-
byte character
The number of bit
s
u
s
ed to repre
s
ent the color of each pixel
Color Type
1
-
byte character
Code indicating how color
s
are encoded within the image. 
V
alid value
s
are:
0: 
A
number from 0–255 indicating the grey
s
cale value
2: Three number
s
from 0–255 indicating the amount of red, 
green, and blue
3: 
A
number which i
s
an index into a color table
4: 
A
grey
s
cale value (0–255) followed by an alpha ma
s
k
6: 
A
n RGB triplet (a
s
i
s
2, above) followed by an alpha ma
s
k
Compre
s
s
ion Type
1
-
byte character
The type of compre
s
s
ion u
s
ed (alway
s
0 in PNG ver
s
ion 1.0)
Filtering Type
1
-
byte character
The type of filtering applied to the data (alway
s
0 in PNG ver
-
s
ion 1.0)
I
nterlacing Scheme 1
-
byte character
The interlacing 
s
cheme u
s
ed to 
s
tore the data. For PNG ver
-
s
ion 1.0 thi
s
i
s
either 0 (for no interlacing) or 1 (for 
A
dam7 
interlacing)
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
XDoc.PDF ›› VB.NET PDF: Delete PDF Page. using RasterEdge.Imaging.Basic; using RasterEdge.XDoc.PDF; How to VB.NET: Delete a Single PDF Page from PDF File.
save pdf rotate pages; pdf reverse page order
VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
PDF Pages. |. Home ›› XDoc.PDF ›› VB.NET PDF: Insert PDF Page. Professional .NET PDF control for inserting PDF page in Visual Basic .NET class application.
change orientation of pdf page; rotate pdf page
B
i
nary data
143
Tes
t
ing 
t
he 
PNG
file reader
To test this program I created a simple 
PNG
file that was 100 pixels by 50 pixels,
containing some simple text on a white background. As the program expects to
read the 
PNG
file from 
STDIN
, I ran the program like this:
read_png.pl < test.png
and the output I got looked like this:
IHDR (13 bytes)
Width: 100, Height: 50
Bit Depth: 8, Color Type: 2
Compression Type: 0, Filtering Type: 0
Interlace Scheme: 0
tEXt (21 bytes)
tIME (7 bytes)
pHYs (9 bytes)
IDAT (1135 bytes)
IEND (0 bytes)
From this we can see that my file was, indeed, 100 pixels by 50 pixels. There were 8
bits per pixel and they were in 
RGB
triplets. No compression, filtering, or interlac-
ing was used. After the 
IHDR
chunk, you can see various other chunks. The impor-
tant one is the 
IDAT
chunk which contains the actual image data.
CPAN modules
There are, of course, easier ways to get to this information than by writing your own
program. In particular, Gisle Aas has written a module called 
Image::Info
which is
available from the 
CPAN
. Currently (version 0.04) the module supports 
PNG
JPG
,
TIFF
, and 
GIF
file formats, and no doubt more will follow. Reading the source code
for this module will give you more useful insights into reading binary files using Perl.
7.2.2 Reading and wri
t
ing 
MP3
files
Another binary file format that has been getting a lot of publicity recently is the
MP3
5 file. These files store near-
CD
quality sound in typically a third of the space
required by raw 
CD
data. This has led to a whole new drain on Internet bandwidth
as people upload their favorite tracks to their web sites.
We won’t look at reading or writing the actual audio data in an 
MP3
file (encod-
ing audio data is a large enough field to deserve several books of description), but
we will look at the 
ID3
data which is stored at the end of an 
MP3
file. The 
ID3
tags
allow you to store useful information about the sounds contained in the file within
5
Short for MPEG3 or Motion Pictures Experts Group—Audio Level 3.
C# PDF Page Insert Library: insert pages into PDF file in C#.net
page processing functions, such as 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
rotate individual pdf pages reader; rotate pdf page by page
C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
Pages. |. Home ›› XDoc.PDF ›› C# PDF: Delete PDF Page. Demo Code: How to Delete a Single PDF Page from PDF File in C#.NET. How
rotate pdf pages; rotate pdf pages by degrees
144
CHAPTER 
F
i
xed-w
i
dth and b
i
nary data
the file itself. This includes obvious fields such as the artist, album, track name, and
year of release, together with more obscure data like the genre of the track and the
copyright and distribution information.
Chris Nandor has written a module which allows you to read and write these
data fields. The module is called 
MPEG::MP3Info
and it is available from the 
CPAN
.
Using the module is very simple. Here is a sample program which displays all of the
ID3
data that it can find in a given 
MP3
file:
use MPEG::MP3Info;
my $file = shift;
my $tag = get_mp3tag($file);
my $info = get_mp3info($file);
print "Filename: $file\n";
print "MP3 Tags\n";
foreach (sort keys %$tag) {
print "$_ : $tag->{$_}\n";
}
print "MP3 Info\n";
foreach (sort keys %$info) {
print "$_ : $info->{$_}\n";
}
Notice that there are two separate parts of the 
ID3
data. The data returned in 
$tag
is the data about the sound contained in the file—like track name, artist, and year of
release. The data returned in 
$info
tend to be more physical data about the actual
data in the file—the bit-rate, frequency, and whether the recording is stereo or
mono. For this reason, the module currently (and I’m looking at version 0.71) con-
tains a 
set_mp3tag
function, but not a 
set_mp3info
function. It is likely that
you’ll have good reasons to change the 
ID3
tags which defined the track and artist,
but less likely that you’ll ever need to change the physical recording parameters.
There is also a 
remove_mp3tag
function which removes the 
ID3
data from the end
of the file.
As with 
Image::Info
which we discussed earlier, it is very instructive to read the
code of this module as it will give you many useful ideas on the best way to read and
write your binary data.
7.3
Fur
t
her informa
t
ion
This chapter has discussed a number of built-in Perl functions. These include 
pack
,
unpack
read
printf
, and 
sprintf
. For more information about any built-in
Perl function see the 
perldoc
perlfunc
manual page. The list of type specifiers
C# TIFF: How to Rotate TIFF Using C# Code in .NET Imaging
Tiff Annotation. Rotate a Tiff Page. |. Home ›› XDoc.Tiff ›› C# Tiff: Rotate Tiff Page. PDF in C#, C#.NET PDF Reading, C#.NET Annotate PDF in WPF, C#
pdf reverse page order preview; rotate one page in pdf reader
C# PDF File & Page Process Library SDK for C#.net, ASP.NET, MVC
Barcoding. XImage.Barcode Reader. XImage.Barcode Generator. Others. Page: Rotate a PDF Page. PDF Read. Text: Extract Text from PDF. Text: Search Text in PDF.
how to rotate one page in a pdf file; pdf rotate single page and save
Part 
I
I
I
Simple data par
s
ing
A
s this part of the tale commences, our heroes begin to realize
that there are very good reasons for the beast to appear in more com-
plex forms, and they see that their current techniques will be of limited
use against these new forms. They begin to discuss more powerful tech-
niques to attack them.  
The beast then appears in a new, hierarchical format. Luckily, our
heroes find a source of ready-made tools for defeating this form.
The beast appears once again in a more complex (and yet, in some
ways, simplified) guise and our heroes once more find ready-built tools
for defeating this form.
At the end of this part of the tale, our heroes develop techniques
which let them build their own tools to tackle the beast whenever it
appears in forms of arbitrary complexity. 
150
CHAPTER 
Complex data format
s
We have now completed our survey of the simple data formats that you will come
across. There is, however, a whole class of more complex data formats that you will
inevitably be called upon to munge at some point. The increased flexibility that
these formats give us for data storage comes at a price, as they will take more time
to process. In this chapter we take a look at these types of data, how you discern
when to use them, and how you go about processing them.
8.1
Complex da
t
a files
A lot of the data that we have seen up to now has used one line to represent each
record in the data set. There have been exceptions; some of the records that we saw
in chapter 6 used more than one row for each record, and most of the binary data
that we discussed in chapter 7 had no record-based structure at all. Even going back
to the very first chapter, the first sample 
CD
data set that we saw consisted largely of
a record-based middle section, but it also has header and footer records which
would have made processing it slightly more complex.
8.1.1 Example
:
me
t
ada
t
a in 
t
he 
CD
file 
Let’s take another look at that first sample data file.
Dave's CD Collection
16 Sep 1999
Artist
Title
Label
Released
--------------------------------------------------------
Bragg, Billy
Workers' Playtime
Cooking Vinyl
1987
Bragg, Billy
Mermaid Avenue
EMI
1998
Black, Mary
The Holy Ground
Grapevine
1993
Black, Mary
Circus
Grapevine
1996
Bowie, David
Hunky Dory
RCA
1971
Bowie, David
Earthling
EMI
1987
6 Records
As you can see, the data consists of three clearly delimited sections. The main body
of the file contains the meat of the report—a list of the 
CD
s in my record collection,
giving information on artist, title, recording label, and year of release. However, the
header and footer records also contain important data. 
The header contains information about the data file as a whole, telling us whose 
CD
collection it is and the date on which this snapshot is valid. It would be inappropriate to
list this information for each record in the file, so the header is a good place to put it.1
1
There are other places where the information could be stored. One common solution is to store this kind
of information in the name of the data file, so that a file containing this data might be called something
like 19990916_dave.txt.
Documents you may be interested
Documents you may be interested