c# pdf processing : C# read pdf form fields application SDK tool html .net windows online meyn-antony_joseph_richard_thesis4-part1462

CHAPTER 5. DESIGN
41
cloud.
The Peers are the client Web browsers that playback the video. They
load and execute the web application that facilitates the P2P VOD stream-
ing. Each browser instance is considered a distinct peer, this means that two
browsers running on the same device would also be considered as individual
peers, as their le systems are not accessible to each other. Introducing a
user authentication module to store user information on the cloud is beyond
the scope of this implementation.
Having looked at the overview of out network, we move on to describe a
more detailed design of the above mentioned entities in the context of the
video publishing and consumption processes.
5.2 Video publishing
The video publishing process begins with a user starting the web application
(i.e. browsing to a web page that contains our video publishing code) and se-
lecting a video that they would like to share from a secondary storage device,
such as their hard disk. We use a HTML input element to allow this selec-
tion, although this could be made more user-friendly with JavaScript code
to allow drag-and-drop functionality, we have not implemented it as such in
the interest of keeping our application simple and easy to understand.
Once a video le is selected, the web application has to process it for P2P
consumption. This involves generating the meta-data of the video le for the
tracker and moving the le to a location accessible to the web application
i.e. the Web browser storage space. Below is the algorithm used to generate
the meta-data of the video le,
C# read pdf form fields - extract form data from PDF in C#.net, ASP.NET, MVC, Ajax, WPF
Help to Read and Extract Field Data from PDF with a Convenient C# Solution
cannot save pdf form in reader; extract data from pdf file to excel
C# read pdf form fields - VB.NET PDF Form Data Read library: extract form data from PDF in vb.net, ASP.NET, MVC, Ajax, WPF
Convenient VB.NET Solution to Read and Extract Field Data from PDF
how to fill in a pdf form in reader; export pdf form data to excel
CHAPTER 5. DESIGN
42
Algorithm 1 Video le meta-data generation
Require: videoFile
numPieces := 0
fileSize := getFileSize(videoFile)
remainingBytes := fileSize
while remainingBytes > 0 do
if remainingBytes > 64kB then
pieceSize   64kB
else
pieceSize   remainingBytes
end if
pieceFile
=
videoFile:read(videoFile:seek(numPieces 
64kB);pieceSize)
mic   computeMIC(pieceFile)
micArray:push(mic)
numPieces   noPieces + 1
remainingBytes   remainingBytes   pieceSize
end while
fileName   computeMIC(micArray)
attributes:file
mic
array = micArray
attributes:fileName = fileName
attributes:fileMimeType = videoFile:codec
attributes:fileDuration = videoFile:duration
attributes:fileSize = fileSize
As seen in the algorithm we use a piece size of 64 kB. This choice of size
is based on two factors, the rst being that it is an optimal le size to share
pieces across a P2P overlay and the second is that the ‘Message Integrity
Code’ (MIC) determination can complete in a reasonable amount of time
for a le of size 64kB. It is important to ensure that the total time taken
to determine the MIC for the pieces is minimum, as this is computationally
intensive. The MIC serves a purpose similar to the hash of pieces in a Bit-
Torrent le distribution. The le name by which the le is referred to in
our P2P solution is the MIC of all the piece’s MIC’s. This ensures a unique
le name across all the nodes in the P2P network, as long as the hashing
algorithm used to determine the MIC is collision resistant.
C# PDF Image Extract Library: Select, copy, paste PDF images in C#
C#.NET extract image from multiple page adobe PDF file library Extract various types of image from PDF file, like XObject Image, XObject Form, Inline Image
java read pdf form fields; extract data from pdf table
C# PDF Text Extract Library: extract text content from PDF file in
XDoc.PDF ›› C# PDF: Extract PDF Text. C# PDF - Extract Text from PDF in C#.NET. Best C#.NET PDF text extraction library and component for free download.
extracting data from pdf forms to excel; extract pdf form data to excel
CHAPTER 5. DESIGN
43
5.2.1 Browser storage
The HTML5 File API plays a important part in the publishing process as
it used for storage and distribution of the video le. The video publishing
process requires storage space in the browser’s le system to store the video
le, as this is the only place from where the web application will be able
to access it. Also the publishing device is a potential peer source for the
same video. As mentioned in chapter 3, the HTML5 File API provides two
types of lesystem storage, namely temporary and persistent. In temporary
storage the les stored may be removed at the browser’s discretion, but in
persistent storage they are removed only when explicitly requested. Writing
to the browser’s persistent storage, requires consent from the user.
Initially the video le is written to the browser’s temporary storage and pro-
cessing is carried out from there, this is to avoid any con ict with existing
videos les in the application’s storage space (which is in the browser’s per-
sistent storage). It is not a problem if it overwrites another le with the same
name in the temporary storage area. Once processing is completed and the
video le meta-data is generated, the video le is ready for sharing. At this
point the video le is written to the browser’s persistent storage area and the
meta-data is stored as a JSON object by the browser using the IndexedDB
API. The use of the IndexedDB API allows faster querying/retrieval of the
video information. The video is now available to our P2P web application
for any further processing, without being aected by external factors, such
as deletion or modication of the video le in the secondary storage device.
To make the video available to others the user chooses the publish option,
at which point the computed meta-data is forwarded to the Tracker and the
video le is uploaded to the ‘Seeder’.
5.3 Video consumption
We now look at the design of the delivery or consumption system of the
video les that are shared with our P2P solution. The main network entities
involved in this are the ‘Tracker’ and the ‘Seeder’. As mentioned previously
the Tracker functions in a manner similar to a BitTorrent tracker, it is a Web
server that contains the list of user published videos and the meta-data of
those videos.
When a user launches our web application i.e. visits the Tracker (which is
C# PDF Library SDK to view, edit, convert, process PDF file for C#
PDF SDK for .NET allows you to read, add, edit, update Please refer to this C# guide to learn how to for .NET to insert, delete and update PDF form fields in C#
how to save a pdf form in reader; extracting data from pdf forms
C# PDF File Compress Library: Compress reduce PDF size in C#.net
C#.NET PDF Document Optimization. resources: Since images are usually or large size, images size reducing can help to reduce PDF file size Flatten form fields.
pdf data extraction open source; how to fill out a pdf form with reader
CHAPTER 5. DESIGN
44
aWeb server) and requests a video, the meta-data of the video le is down-
loaded to the user’s browser along with a list of peers who currently have the
video available (which would initially be ‘Seeder’ and the publisher). The
web application then attempts to connect to each of the peers and start
downloading the pieces of the video le from them. The MIC from the meta-
data is used to verify each piece of the video le as it is downloaded. Once
the entire video download is completed the meta-data (in JSON format) is
saved in the web browser’s database (IndexedDB) and the Tracker adds the
details of the new peer to the list of available peers for that video. The video
can now be played by the user’s browser using the HTML5 <video> element.
All video les are rst downloaded to the browser’s temporary storage space,
the reason we do not use the persistent storage space for this is because each
time a video has to be stored by the application the user would be asked for
permission. The user will be provided with an option for each viewed video
to be available oine. If the user chooses to make it available oine then
the video le would be transferred from the temporary to the persistent le
storage. HTML5 also introduces the ‘Oine Application Caching’ API[54],
which can be used to load and execute a copy of the HTML5 JavaScript
code stored on the client, even when the web browser is not connected to the
Internet. This would allow viewing of the videos that were made available
oine by the user even when they are not connected to the Internet.
5.4 Media playback
Media Playback within the web browser is taken care of by the HTML5
<video> element, which can be used to render content from the browsers le
system. As mentioned in the earlier chapter on HTML5, thevideocodecs and
containers are currently not standardized, which means that each browser
vendor can support a dierent set of video formats. This introduces two
major problems for a P2P based VOD service, the rst being, that a portion
of the videos shared on the network, might not be possible to be rendered
by certain user agents. Secondly, having dierent formats of the same video
divides the peers based on all the available formats. For example if a video
is uploaded in 2 dierent formats, the peers sharing videos in one format will
not be able to share the video with web browsers that require it in the other
available format.
We suggest converting all video les that are intended to be published to
the most commonly available video format supported by leading browser
How to C#: Basic SDK Concept of XDoc.PDF for .NET
›› C# PDF: Basic SDK Concept. C#.NET PDF: Basic Concept of .NET XDoc.PDF SDK. Introductions to Classes and APIs Included in .NET XDoc.PDF for C# Programming.
export pdf form data to excel spreadsheet; how to extract data from pdf to excel
C# PDF File Merge Library: Merge, append PDF files in C#.net, ASP.
form. Append one PDF file to the end of another and save to a single PDF file. Merge PDF with byte array, fields. Merge PDF without size limitation. RasterEdge
pdf form save with reader; how to save fillable pdf form in reader
CHAPTER 5. DESIGN
45
vendors. This can also be done within the web application, since it would
directly aect the video information details, and it also ooads the computa-
tion which would otherwise have be carried out on a central server. However
this is beyond the scope of this thesis.
5.5 Peer-to-Peer communication
We introduced Browser-to-browser communication in chapter 4 on WebRTC.
As mentioned previously, the HTML5 WebRTC API is fairly new and is still
in the very early stages of implementation within leading browsers. The We-
bRTC Data API (of the WebRTC family of APIs) is what we require for our
VOD P2P implementation, but as this API was only recently drafted, it has
still not been implemented by any browser vendor as yet.
The WebRTC working group had initially focused on a single use case with
the WebRTC API, which was video calls, for this reason the APIs related
to this use case such as the WebRTC Stream API are fairly mature and
have undergone several draft iterations. Some of these drafts have also been
implemented for the sake of experimentation. In the WebRTC chapter, we
also described how browsers can communicate with each other using the
‘RTCWeb Oer/Answer Protocol’ (ROAP). In the case of our P2P VOD so-
lution, each browser would have to communicate with one or more browsers
to get a single video le. This would mean that a browser would have to
keep several peer connections open at the same time.
In the absence of the WebRTC Data API, to evaluate the browsers per-
formance with several simultaneous peer connections open, we designed and
implemented a P2P based video conferencing service using the WebRTC
Stream API. This oers a close parallel to our use case and was the only way
we could evaluate the browsers performance with multiple simultaneous peer
connections.
As the Trackerhasthelist ofcurrently activepeers and supportsbi-directional
communication with each browser, we use it to setup the data sessions be-
tween the browsers by exchanging the Session Description details to create
the peer connections between them.
The tracker has a unique connection ID to identify each web browser’s con-
nection to it. It has been implemented to receive three type of messages from
web browsers that are connected to it, they are
C# PDF Field Edit Library: insert, delete, update pdf form field
C#.NET Demo Code: Add Form Fields to an Existing PDF File in C#.NET. This C# demo will help you to add form fields to PDF file. String
exporting data from pdf to excel; vb extract data from pdf
.NET PDF Document Viewing, Annotation, Conversion & Processing
XDoc.PDF SDK for .NET is completely developed in .NET, compatible with Visual C#, Visual Basic, and Delphi for .NET. Read form data from PDF form file.
exporting pdf data to excel; pdf form data extraction
CHAPTER 5. DESIGN
46
1. CREATE
ROOM
REQUEST: The tracker generates a ROOM ID
and responds to the web browser that sent this request.
2. JOIN
ROOM
REQUEST: Thetracker adds the web browser’s CON-
NECTION ID to the ROOM mentioned in the request, and responds
with the list of remaining web browser CONNECTION ID(s) which are
present in the room.
3. B
TO
T: (Browser ToTracker)Thisis the P2P Signalling Message sent
from one web browser to another, the tracker redirects the message to
the specied destination web browser.
The web application has been implemented to receive the following messages
from the tracker,
1. CREATE
ROOM
RESPONSE: Theweb browser receivesthe ROOM
ID and can share it with other web browsers that would like to join the
video conference. This sharing is done manually.
2. JOIN
ROOM
RESPONSE: On receiving the list ofweb browsers in
the room, the web browser creates a Peer Connection for each browser
and starts sending P2P Signalling Messages to each of them via the
tracker, in the form of B
TO
Tdescribed above.
3. T
TO
B: (Tracker ToBrowser) Theweb browser is expected to process
these signalling messages sent by other web browsers via the tracker.
The Figure 5.2 shows the sequence of steps followed by three browsers in
connecting to a conference hosted with our P2P based video conferencing
service, It is important to note that a browser that intends to join a room,
initiates the connections to all existing browsers in the room rather than the
other way around. This is to avoid  ooding the newly connected browser
with connect requests, which it may not be able handle simultaneously.
Having seen the design of the various modules of our HTML5 P2P solu-
tion, in the next chapter we discuss the implementation and evaluation of
each of these modules.
CHAPTER 5. DESIGN
47
Figure 5.2: Message Sequence for Video Conferencing (Channel Mixing)
Chapter 6
Implementation & Evaluation
We now describe the implementation of our HTML5 P2P VOD streaming
web application, based on the design discussed in the previous chapter. Our
web application is written in JavaScript using the HTML5 APIs discussed
in the earlier chapters. We also evaluate the performance of some of these
modules that are implemented, and analyze the results. We also discuss some
of the security concerns related to these modules.
Implementing a web application using HTML5 today is quite challenging,
this has not so much to do with the technology itself but more to do with
the fact that the HTML5 features, such as the WebRTC standard are not
yet nalized. As we have seen, the HTML5 specication is still an evolving
standard, and each of its feature and their associated APIs evolve indepen-
dently. Since most of these features are still ‘work in progress’ drafts, the
available Web browser implementations of these features are experimental.
This means that our application’s implementation is built on a constantly
changingsoftwarelayer, and thiswould be thecaseuntil all the individual fea-
tures have a nalized specication and are implemented by all Web browsers.
Although HTML5 aims to bring about platform standardization for Web
browsers, this is dependent on the fact that all Web browser vendors imple-
ment the feature specications, this will however takea few more years, given
the fact that most of the specications are still being drafted and discussed
by the individual working groups.
48
CHAPTER 6. IMPLEMENTATION & EVALUATION
49
6.1 Development environment
Our choice of ‘DevelopmentEnvironment’ was the‘Visual Studio’
1
Integrated
Development Environment (IDE) from Microsoft, as it eases the overall de-
velopment process and also has a really good IntelliSense
2
implementation
for JavaScript.
The Web browser we chose for the testing and evaluation of our HTML5
P2P VOD application, is from the browser vendor Google. Their user agent
implementation was found to have the highest number of HTML5 features
implemented at the inception of our thesis work. Google oers a public ver-
sion of their browser implementation called \Chrome"
3
.Google also oers a
‘Developer Preview’ version of their user agent called \Canary"
4
and a third
(and nal) open-source version called \Chromium"
5
. We make use of all
three versions, in the implementation and evaluation of each of the modules
of our HTML5 P2P application.
6.2 Video publishing
We rst describe the JavaScript implementation of the content publishing
module’s design. The data structure used to store the video information is
shown in listing 1.
1
http://www.microsoft.com/visualstudio/
2
http://msdn.microsoft.com/en-us/library/hcw1s69b(v=vs.71).aspx
3
http://www.google.com/chrome/
4
https://tools.google.com/dlpage/chromesxs/
5
http://www.chromium.org/Home
CHAPTER 6. IMPLEMENTATION & EVALUATION
50
1
var movie_object {
2
"file_mic_array" [],
3
"slices": 0,
4
"fileSize": 0,
5
"fileName": "",
6
"fileMimeType": "",
7
"fileDuration": 0,
8
"fileID": ""
9
}
Listing 1: Video le meta-data
Here the file
mic
array is an array to store the hash of each piece of
the le. slices stores the number of pieces of the video le, this also in-
cludes the last piece which may be 64 kB or less. The remaining attributes
are self explanatory. In order to slice the le, the HTML5 File API provides
aslice() method that takes the start and end byte values as parameters.
Since this API is not yet nalized, it is known by dierent names depend-
ing on the Web browser being used, for example it is currently known as
webkitSlice() in Google’s web browser implementations and mozSlice()
in Mozilla FireFox, another Web browser implementation.
After slicing the le we have to calculate the Message Integrity Code (MIC)
of each piece. Unfortunately HTML5 doesn’t specify any JavaScript API
for performing these computationally intensive task, which means that the
browser doesn’t perform these tasks natively. For this reason make use of
the new HTML ‘WebWorkers’ API to spawn threads to calculate the MIC
for each piece. We use the third-party JavaScript library ‘WebToolKit MD5’
to perform the MD5 calculation.
In order to communicate with threads the ‘WebWorkers’ API provides a
message passing functionality, we use this to pass a JSON object containing
the piece number and its content. On completion of each thread (i.e. com-
putation of the MIC for a piece) the worker updates the file
mic
array
with the computed MIC. After the MIC of every piece is computed, we com-
pute the MIC of all the MIC’s in the file
mic
array and rename the le
with this resulting MIC. This name is used to uniquely identify the video
le on the P2P network. A reference to this le is then added to the Web
Documents you may be interested
Documents you may be interested