c# itextsharp pdf page to image : Copy text from protected pdf control software platform web page windows azure web browser final3-part1340

Final Report                           PDF
TO 
HTML
C
ONVERSION
Page 25 
This method was found to work well for simpler layouts, such as the one above.  It did 
not always work for more complex layouts, particularly where different articles were in 
columns of different horizontal positions or in boxed sections.   
However,  it  is  very  difficult  to  distinguish  between  different  articles  on  the  page, 
particularly by looking solely at the text itself.  One improvement, which is beyond the 
scope of this project but a suggestion for further work, is to look at other graphical 
elements, such as lines, boxes and shaded regions. 
4.5  Other layout features 
This section  describes  how other features  of  the page layout  were understood  and 
handled by the conversion software. 
4.5.1  Line spacing 
Originally the program was written to assume that all the text in the PDF is single 
spaced.  The nextLine method was written to return true if the y1 co-ordinate of the 
current text fragment was equal to the y2 co-ordinate of the previous text fragment, or 
within  an  error  margin of 30% of the line height.   However, both the newsletters 
studied here (as described in section 3.3) contained a large amount of text that was not 
single-spaced and, in those cases, each line was detected as a separate paragraph. 
One early improvement was to create a method, findModalTextSize, to process each 
text fragment and find the most frequently occurring text size in the page.  This size 
would  almost definitely correspond to the size of the body text.  Another method, 
findLineSpacing, was used to find the average line spacing between successive lines of 
text of that size.  This line spacing was then used to proportionally adjust the error 
margin that was used by the nextLine method to determine whether the next line was 
part of the same paragraph. 
This improvement worked, and enabled text that wasn’t single spaced to be converted 
properly.   However,  as  it  worked  on  a  page-by-page  basis, it  did  not  cope  where 
different  sections  of  the  page had different  line  spacings  or  different  text  sizes,  as 
shown in the example below. 
Copy text from protected pdf - C# PDF Password Library: add, remove, edit PDF file password in C#.net, ASP.NET, MVC, WinForms, WPF
Help to Improve the Security of Your PDF Document by Setting Password
pdf passwords; create pdf password
Copy text from protected pdf - VB.NET PDF Password Library: add, remove, edit PDF file password in vb.net, ASP.NET, MVC, WinForms, WPF
Help to Improve the Security of Your PDF Document by Setting Password
convert pdf password protected to word online; convert password protected pdf files to word online
PDF
TO 
HTML
C
ONVERSION
           Final Report 
Page 26 
Fig 4.12: Line spacing not correctly detected for introductory text, which is slightly 
larger than main body text 
The solution was to actively track the line spacing as the text fragments are being merged.  
The findLineSpacing method does this by taking the current fragment index and looking at 
the next two lines.  It then returns the smallest of the spaces between the two lines.  As the 
diagram shows below, this ensures that the correct line spacing is always returned. 
This is body text at the
end of a paragraph
This is a new paragraph
space1
space2
Case 2: space1 < space2
space1 returned
This is body text in the
middle of a paragraph
and more text in the
same paragraph
space1
space2
Case 3: space1     space2
=
~
space1 or space2 returned
Heading or end of paragraph
This is a new paragraph
and more body text in the
same paragraph
space1
space2
Case 1: space1 > space2
space2 returned
Fig 4.13: Detection of line spacing from the two following lines 
VB.NET PDF Convert to Jpeg SDK: Convert PDF to JPEG images in vb.
file & pages edit, C#.NET PDF pages extract, copy, paste, C#.NET rotate PDF pages, C#.NET search text in PDF Able to convert password protected PDF document.
creating password protected pdf; copy from protected pdf
C# PDF Convert to Jpeg SDK: Convert PDF to JPEG images in C#.net
Password protected PDF document can be converted and changed. using RasterEdge.XDoc. PDF; Copy demo code below to achieve fast conversion from PDF file to Jpeg
convert password protected pdf to normal pdf online; pdf password recovery
Final Report                           PDF
TO 
HTML
C
ONVERSION
Page 27 
If the line spacing is greater than 2.5 times the line height or less than half the line 
height the line height is instead returned as the line spacing.  This is to stop incorrect 
values due to the line spacing being judged between two lines in different parts of the 
page or in different columns.  If space1 or space2 cannot be evaluated, as is the case at 
the very bottom of the page, the line height is also returned. 
The mergeTextObjects method keeps track of the current line spacing and recalls the 
findLineSpacing method to obtain a new value every time a new paragraph or column 
is encountered. 
In addition, every time a new line in the PDF is encountered (i.e. nextLine evaluates to 
true) the method changeLineSpacing is called to detect whether the line spacing has 
changed.  changeLineSpacing returns true if the gap between the two lines is too small, 
i.e. less than 70% of the current line spacing.  This ensures that, if the line spacing is 
reduced  (for  example,  double  spaced  text  becomes  single spaced),  the  line spacing 
continues to be tracked correctly, ensuring that new paragraphs are correctly detected. 
4.5.2  Styles and formatting 
Although JPedal provided access to all the font information in each text fragment, it 
was decided to use “standard” font families, Times and Helvetica, in order to allow the 
HTML to display properly on systems that did not have the fonts that were used to 
create the PDF.  Depending on the system, these fonts, or their known equivalents, are 
available either in bitmap form or as extensively hinted vectors to generate a clear, 
easy-to-read image at typical screen resolutions. 
Two  distinct  HTML  styles  were used,  h1  and  p  (standard paragraph),  which were 
chosen based on the size of the text in the PDF.  These styles are included in an internal 
CSS style sheet in the header of the HTML file.  The threshold between the two sizes 
was set at 14 points; any text over 14 points in size is therefore classified as a heading.  
An example of the output of both styles is shown below. 
Fig 4.14: Example of formatting information (left) preserved in the HTML conversion (right) 
VB.NET PDF Convert to Word SDK: Convert PDF to Word library in vb.
Create editable Word file online without email. Supports transfer from password protected PDF. VB.NET class source code for .NET framework.
copy protection pdf; protected pdf
C# PDF Convert to Word SDK: Convert PDF to Word library in C#.net
Quick to remove watermark and save PDF text, image, table, hyperlink and bookmark to Word Password protected PDF file can be printed to Word for mail merge.
pdf open password; pdf password protect
PDF
TO 
HTML
C
ONVERSION
           Final Report 
Page 28 
Additional formatting information was retained in body text.  JPedal gives the name of 
the entire font as a single string; if this string included “Bold” or “Italic” the 
<B>
and 
<I>
tags were used to change the appearance of the text.  While sub-headings, which 
may  be under 15 points in size, were sometimes recognized as  body  text,  the  bold 
attribute was still preserved, giving an appropriate appearance in HTML. 
This method was found to detect formatted text in most cases, although it did not work 
for fonts that use a synonym to describe their formatting, such as “Cursive” for italic.  It 
also does not work on Multiple Master fonts which have a continuously variable weight 
instead of the usual denominations such as “Light”, “Book”, “Medium”, “Bold”, etc. 
HTML provides a much wider range of heading styles, and one possible improvement 
would be to detect various heading levels in a document.  As this was not the main 
focus of this project, this remains as a suggestion for further development. 
Formatting information is detected by the findHeadings method which works through 
each text fragment in order, removing all formatting information from the contents 
attribute and setting the boolean isHeading[], isBold[] and isItalic[] attributes to true or 
false as appropriate. 
These attributes are added to the HTML during merging of the text fragments as this 
gives an opportunity to ensure that tags are not unnecessarily repeated and that each 
opening tag (e.g. 
<P>
) is met with its respective closing tag (e.g. 
</P>
). 
4.5.3  Symbols 
Certain symbols, including typographical quotation marks (e.g. “ and ”) and dashes, 
were found to display correctly in the Windows environment but not on other systems 
using other character sets.  As HTML is a platform independent format it was decided 
to replace typographical quotation marks with straight ones and dashes with hyphens 
with a space on either side.  This was performed in the replaceSymbols method in the 
pdf2html class. 
Fig 4.15: Straight quotation marks (left) and typographical quotation marks (right) 
.NET PDF SDK - Description of All PDF Processing Control Feastures
Easy to copy, paste, and cut image from PDF. Able to Open password protected PDF; Allow users to add for setting PDF security level; PDF text content, image and
create password protected pdf; crystal report to pdf with password
C#: How to Add HTML5 Document Viewer Control to Your Web Page
Then, copy the following lines of code to addCommand(new RECommand("Text")); _tabSignature.addCommand AppSettings.Get("resourceFolder"); protected void Page_Load
adding a password to a pdf using reader; add password to pdf reader
Final Report                           PDF
TO 
HTML
C
ONVERSION
Page 29 
4.5.4  Hyphenated text 
As  this  conversion  method  creates  text  that  can  be  re-flowed,  words  that  were 
hyphenated in the PDF often appear, in the output, at the beginning or in the middle of 
a line.  As newspapers and books contain a large number of hyphenated words it was 
decided to merge them into single words to make the text more readable. 
The  method  isHyphenated  takes  the  indices  of  two  successive  text  fragments  and 
returns true if: 
•  the current fragment begins with a letter and 
•  the previous fragment ends in a letter followed by a hyphen. 
The method also strips the hyphen from the end of the previous fragment. 
This method is  used  in the mergeTextObjects method at  the stage where nextLine 
evaluates to true.   If isHyphenated  evaluates  to true the text  fragments are  simply 
concatenated, without a space in between. 
4.5.5  Indentations 
Paragraphs are typically denoted in two ways; either by a larger line space or by an 
indentation.  Some documents even use both.  
There is, however, no proper way of performing an indent in HTML and the 
<TAB>
tag 
is ignored by most browsers.   It is possible  to include a HTML  paragraph style to 
indent the first line of each paragraph but this method always leaves a line space at the 
end of the paragraph.  This method was found to be unsuitable for texts such as the 
Dickens, where paragraphs can be shorter than one line in length. 
The  solution  was  to  use  four  spaces, 
&nbsp&nbsp&nbsp&nbsp
 to  simulate  an 
indentation.    Although  this  is  a  “trick”  and  therefore  not  recommended  HTML 
practice, it was the only way to obtain the required result. 
Indentations are detected at the merging stage.  As each text fragment is processed, the 
variables left_margin and right_margin are updated to keep track of the left and right 
margins of the text.  If a new line is encountered that is more than 6 points from the 
margin it is recognized as an indentation. 
C# PDF: C# Code to Create Mobile PDF Viewer; C#.NET Mobile PDF
RasterEdge_Imaging_Files/RasterEdge.js" type="text/javascript"></script Copy package file "Web.config" content to float DocWidth = 819; protected void Page_Load
add password to pdf document; change password on pdf
C# Image: How to Integrate Web Document and Image Viewer
First, copy the following lines of C# code to text/javascript"></script> <script type="text/javascript"> _fid mode; public string fid; protected void Page_Load
annotate protected pdf; pdf document password
PDF
TO 
HTML
C
ONVERSION
           Final Report 
Page 30 
Every time a new column is encountered the margins are reset to allow for the different 
horizontal position of the new column. 
Dropped capitals caused a problem with this method as text adjacent to them is always 
at  a  distance  from  the  margin.    This  was  solved  by  using  another  variable, 
indent_guard, which is updated in the same way as left_margin.  However, when two 
text fragments of differing  sizes are encountered, the indent_guard  is set to the x1 
position of the rightmost fragment, ensuring that any text adjacent to a dropped capital 
isn’t recognized as being indented. 
This method was found to give good results.  Its only shortcoming is that it cannot 
detect indented text at the top of the page as, at that stage, it has not processed the text 
further below to find the left margin. 
4.5.6  Forced carriage returns 
Forced carriage returns are carriage returns that are included not as a result of word 
wrapping, but to enforce a particular layout, for example with an address.  By default, 
the paragraph detection algorithm was found to merge each line of the address into a 
single line as shown below. 
Fig 4.16: Address merged into a single line 
It is not always possible to tell whether a carriage return is forced or a result of word 
wrapping.  However, when a line is much shorter than the width of the page, it is 
usually as a result of a forced carriage return (or being the last line in a paragraph).   
Different methods of detecting forced carriage returns were used on single- and multi-
column layouts.  With single-column layouts the width of the entire text across the page 
was calculated by the findTextWidth method.  Multi-column layouts are more complex 
and the text width only for a  particular column was sought.   As  the  left and  right 
margins are already being tracked during the merging process (see section 4.5.5) the text 
width can simply be calculated by deducting the left margin from the right margin. 
University of Warwick, 
Gibbet Hill Road, 
Coventry, 
West Midlands 
CV 4  7AL 
Final Report                           PDF
TO 
HTML
C
ONVERSION
Page 31 
A forced carriage return is detected if the current line was less than 70% of the full text 
width, or 60% of the column text width for multi-column layouts.  The smaller figure 
was used for multi-column layouts as they usually have fewer words per line, increasing 
the  probability  of  false  positives.    This  detection  occurs  in  the  mergeTextObjects 
method when a new line in the same paragraph is reached (i.e. nextLine evaluates to 
true). 
4.5.7  Raised and dropped capitals 
Raised and dropped capitals were catered for by altering the findHeadings method to 
assign the capital the p (normal paragraph) style even though the character is usually 
over  14pt  in  size.    Raised  and  dropped  capitals  are  detected  by  a  text  fragment 
containing one character followed by another text fragment on the same line using the 
sameLine  method.    As  the  sameLine  method  evaluates  to  true  whenever  the  co-
ordinates intersect it will always be true for raised or dropped capitals. 
Once the character is assigned the paragraph style it is successfully merged into the 
following paragraph by the mergeTextObjects method. 
Dropped capitals also caused a problem with the algorithms used for the detection of 
indentations in text; these are documented in section 4.5.5. 
4.5.8  Miscellaneous text fragments 
Miscellaneous text fragments include page numbers, copyright notices and other small 
text fragments that are not a main part of the page content itself.  These objects often 
appeared in the middle of the flow of text, usually between two different columns, 
interrupting the flow of the text.  It was therefore decided to attempt to detect these 
items and move them to the bottom of the page.   
Miscellaneous items are detected by the isMiscellaneous method which returns true if 
the item  is not  within  24 points  of  the  boundary of any other  text  block,  or  if  it 
includes vertical-running text. 
After  each  text  fragment  has  been  assigned  a  group[],  the  processPageFragments 
method creates a new group and assigns all miscellaneous fragments to it.  This ensures 
that, when the items are all sorted by group, the miscellaneous items will be moved to 
the bottom of the page. 
PDF
TO 
HTML
C
ONVERSION
           Final Report 
Page 32 
4.5.9  Empty text fragments 
Empty text fragments are fragments that do not contain any text, or a string of spaces.  
These are sometimes inserted by word processors between paragraphs, for example.  
Although these fragments do not display any text, their existence could cause problems 
with the paragraph and column detection methods.   
They are therefore detected by the isEmpty method and removed from the sort order in 
the  processPageFragments  method,  before  any  column  grouping  or  merging  takes 
place. 
4.6  The front end 
The front end was designed to take two command line parameters, an input file and an 
output file.  If the second parameter is omitted it generates the output file name by 
removing the “.pdf” extension if there is one and appending the “.html” extension.  If 
there are any errors with the parameters it displays an error message and exits. 
The tasks performed by the front end are as follows: 
•  open input file 
•  get PdfData object 
•  enumerate pages in PDF file 
•  append header (including style information) to output string 
•  for each page: 
 append a “Page x” heading if there is more than one page 
 call PdfGrouping.processPageFragments and append the result 
•  append 
</HTML>
to output string 
•  write output string to output file 
4.6.1  The -c option 
The -c option was included to instruct the  converter to attempt to detect columns; 
without this option column detection is automatically turned off.  This was because 
column  detection  occasionally  detected  false  positives  in  single-column  layouts, 
resulting in the text being output in the wrong order.  In general, a better result can be 
obtained for single-column layouts by omitting the -c option. 
This  option  is  passed  to  processPageFragments  as  a  boolean  parameter, 
detect_columns, which determines whether groupTextElements will be called. 
Final Report                           PDF
TO 
HTML
C
ONVERSION
Page 33 
4.6.2  Multiple pages 
The conversion software has been designed to convert each page independently from 
each other, as the process of correctly decoding the data from a single page had already 
presented a significant challenge.  Each page is therefore decoded in turn.  If there is 
more than one page in the PDF file, the front end adds a “Page x” heading to the 
beginning of each page in the HTML output. 
PDF
TO 
HTML
C
ONVERSION
           Final Report 
Page 34 
 Performance evaluation 
This  section  evaluates  the  results  given  by  the  conversion  software.    Annotated 
examples of the program’s output from each of the four PDF files are given, together 
with an analysis of the results.  These results are then compared to the results given by 
the existing solutions which are covered in section 2. 
5.1  Analysis of converted output 
Overall, the conversion software was found to produce good results with simple and 
moderately  complex  documents,  including  the  four  PDF  files  that  comprise  the 
conversion material chosen in section 3.3. 
In most cases, simple multi-column layouts were correctly detected and the columns 
were output in the correct order.  More complex layouts, such as the US Military Force 
in  Columbia  article  in  section  5.5,  where  an  article  spans  two  columns,  gave  less 
successful results.  Occasionally, elements on the page such  as headers, footers  and 
captions,  appeared  in  between  the  columns  instead  of  being  recognized  as 
miscellaneous and moved to the bottom of the page.  One major improvement, which 
is given as a suggestion for further work, would be to look at graphical elements of the 
page such as lines and rectangles.  These elements often indicate to the reader where 
different articles start and end. 
Most  features  of  the  page  layout,  as  described  in  section  4.5,  were  detected  and 
handled correctly.   In  particular,  the  line  spacing  detection  algorithm worked  very 
successfully and did not result in any unwanted new paragraphs.  Some of the feature 
detection  methods,  such  as  the  hyphenation  detection,  corrected  some  errors  but 
caused others.  This was because, where it met a double barrel word that was wrapped 
to the next line (such horse-pistols as described in section 5.3.2) it would still remove 
the hyphen and merge the two  parts of the word into one.  From  the information 
available to the program it is impossible to tell whether the hyphen should remain in 
place or be removed.  Only by understanding the text itself can this decision be made.  
One solution here would be to use a dictionary of hyphenated words, although this was 
beyond the scope of the project. 
Similarly, the detection of forced carriage returns depended on the ratio of the line 
width  to  the  text  width.    Therefore, forced  carriage  returns are not recognized  in 
longer lines and are merged into a complete line of text.  Again, without understanding 
Documents you may be interested
Documents you may be interested