how to view pdf file in asp.net using c# : Extract jpg from pdf Library application component asp.net html .net mvc code_reading42-part1159

[ Team LiB ]
11.2 Attack Plan
I now devise a plan for how to proceed. I will first search in the SQL documentation for functions with attributes and types similar to those 
of the function I wish to add. I will then model my function following the structure of those existing functions. To be able to efficiently use 
plain text-matching for searching through the code, I select a function with an uncommon name (DAYOFWEEK) as opposed to functions 
with names such as YEAR and HOUR.
I can now search for instances of that function to get a rough indication of the file(s) I will need to modify.
$ cd src/org/hsqldb
$ grep -i dayofweek *.java
Library.java:   [...], "DAYOFWEEK",
Library.java:   "org.hsqldb.Library.dayofweek", "DAYOFYEAR",
Library.java:    public static int dayofweek(java.sql.Date d){
I edit the Library.java file and search for the DAYOFWEEK string. The first instance appears in the following context.
[4]
[4]
hsqldb/src/org/hsqldb/Library.java:85–8 9
final static String sTimeDate[] = {
"CURDATE", "org.hsqldb.Library.curdate", "CURTIME",
[...]
"DAYOFMONTH", "org.hsqldb.Library.dayofmonth", "DAYOFWEEK",
"org.hsqldb.Library.dayofweek", "DAYOFYEAR",
Apparently the array sTimeDate maps SQL functions to the corresponding Java implementations.
I repeat my search in a case-insensitive manner to locate instances of the dayofweek function. The second (and last) instance of the 
string is a static method definition.
[5]
[5]
hsqldb/src/org/hsqldb/Library.java:814–82 4
/**
* Method declaration
* @param d
* @return
*/
public static int dayofweek(java.sql.Date d) {
return getDateTimePart(d, Calendar.DAY–OF–WEEK) ;
}
As you can see, the method is not commented in any meaningful manner, but I feel I need to understand its functioning since I will model 
my new code on similar lines. Assuming that getDateTimePart is part of the Java library, I open the JDK documentation and read the 
details of the Calendar class. However, I find no references to a getDateTimePart method, so I continue my search in the hsqldb source 
code. I find it used in many different instances, and I also isolate its definition.
[6]
[6]
hsqldb/src/org/hsqldb/Library.java:777–78 3
private static int getDateTimePart(java.util.Date d, int part) {
Calendar c = new GregorianCalendar();
Extract jpg from pdf - Select, copy, paste PDF images in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support PDF Image Extraction from a Page, a Region on a Page, and PDF Document
extract photos from pdf; how to extract images from pdf file
Extract jpg from pdf - VB.NET PDF Image Extract Library: Select, copy, paste PDF images in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support PDF Image Extraction from a Page, a Region on a Page, and PDF Document
extract pdf images; extract images from pdf
c.setTime(d);
return c.get(part);
}
Again, the definition is preceded by an unfilled javadoc comment template; not terribly helpful. The function apparently creates c as an 
instance of the Calendar class, sets its value to the date passed, and returns an element of Calendar, as specified by the part parameter.
My task is to return a part related to the phase of the moon. I start by searcing for the word "moon" in the documentation of the Java 
Calendar and GregorianCalendar classes. I do not find anything useful, and I continue reading the GregorianCalendar JDK notes for the 
class's architecture. The details on how the GregorianCalendar is implemented are fascinating; however, I end up realizing that I will 
require new code to calculate the phase of the moon.
[ Team LiB ]
C# PDF Convert to Jpeg SDK: Convert PDF to JPEG images in C#.net
NET library to batch convert PDF files to jpg image files. High Turn multiple pages PDF into single jpg files respectively online. Support
some pdf image extractor; extract images from pdf online
VB.NET PDF Convert to Jpeg SDK: Convert PDF to JPEG images in vb.
PDF to images, C#.NET PDF file & pages edit, C#.NET PDF pages extract, copy, paste, C# NET components to batch convert adobe PDF files to jpg image files.
extract image from pdf file; extract color image from pdf in c#
[ Team LiB ]
11.3 Code Reuse
Not feeling a particular rush to reinvent the wheel, I decide to search for an existing implementation of the moon phase calculation 
algorithm. I could have searched the entire Web or an open-source software repository using a search engine, but I start closer to the 
material I have at hand by searching through the book's CD-ROM for the word "moon." I immediately realize I need to separate the chaff 
from the wheat.
$ find . -type -f -print | xargs grep -i moon
./netbsdsrc/games/battlestar/nightfile.c:
"Feather palms outlined by mellow moonlight and a silvery black
ocean line\n\
./netbsdsrc/games/battlestar/nightfile.c:
by a huge tropical moon stretches at least 30 meters inland.\n\
[...]
./netbsdsrc/games/hack/hack.main.c:
pline("You are lucky! Full moon tonight.");
./netbsdsrc/games/pom/pom.c:
* Phase of the Moon.  Calculates the current phase of the moon.
[...]
./netbsdsrc/lib/libc/stdlib/malloc.c:
* a memory fault if the old area was tiny, and the moon
Among a large number of fictional references and satirical comments the code in pom.c
[7]
appears to be actually calculating the phase 
of the moon. A quick look in the NetBSD manual page confirms my hunch and also offers some light relief.
[7]
netbsdsrc/games/pom/pom.c
The pom utility displays the current phase of the moon. Useful for selecting software completion target dates and 
predicting managerial behavior.
I continue reading the program's source code, intending to extract the phase of moon algorithm and port it to the hsqldb Java source. A 
comment lists a book that provides details of the algorithm.
[8]
[8]
netbsdsrc/games/pom/pom.c:54–5 5
* Based on routines from `Practical Astronomy with Your
* Calculator', by Duffett-Smith.  Comments give the section
* from the book [...]
A potentially useful fact; however, I will first try to extract meaning directly from the code.
The largest function in the file is the potm function, which appears to be a promising case.
[9]
[9]
netbsdsrc/games/pom/pom.c:133–13 5
double
potm(days)
double days;
Again the function's comment (potm–-return phase of the moo o n) is not very useful for purposes other than justifying the function's name. 
C# Image Convert: How to Convert Adobe PDF to Jpeg, Png, Bmp, &
String inputFilePath = @"C:\input.pdf"; String outputFilePath = @"C:\output.jpg"; // Convert PDF to jpg. C# sample code for PDF to jpg image conversion.
extract pictures from pdf; how to extract images from pdf files
C# Image Convert: How to Convert Tiff Image to Jpeg, Png, Bmp, &
RasterEdge.XDoc.PDF.dll. String inputFilePath = @"C:\input.tif"; String outputFilePath = @"C:\output.jpg"; // Convert tiff to jpg.
extract images from pdf files; extract vector image from pdf
Given that I have no other clue about what the days argument represents, I locate the function's call to get a hint from its use.
[10]
[10]
netbsdsrc/games/pom/pom.c:104
today = potm(days) + .5;
I then proceed to read backward to see how the value of the days variable is derived.
[11]
[11]
netbsdsrc/games/pom/pom.c:89–10 3
struct timeval tp;
struct timezone tzp;
struct tm *GMT;
time–t tmpt ;
double days, today, tomorrow;
int cnt;
if (gettimeofday(&tp,&tzp))
err(1, "gettimeofday");
tmpt = tp.tv_sec;
GMT = gmtime(&tmpt);
days = (GMT->tm_yday + 1) + ((GMT->tm_hour +
(GMT->tm_min / 60.0) + (GMT->tm_sec / 3600.0)) / 24.0);
for (cnt = EPOCH;cnt < GMT->tm_year;++cnt)
days += isleap(cnt) ? 366 : 365;
The code, apart from the EPOCH constant, mostly uses standard ANSI-C and POSIX functions. I therefore reason that I can reconstruct 
from equivalent information in Java a potm argument that works in the same way with no further need to understand what thedays 
argument actually represents. I note that the code appears to be calculating the number of days from EPOCH to tp. I am not sure how 
and why the isleap function is being used, but I decide to deal with this problem later.
I proceed to search the source backward, looking for the EPOCH constant. The search reveals a number of constants that probably also 
need to be moved to the Java code.
[12]
[12]
netbsdsrc/games/pom/pom.c:70–7 7
#define PI       3.141592654
#define EPOCH    85
#define EPSILONg 279.611371 /* solar ecliptic long at EPOCH */
#define RHOg  282.680403 /* solar ecliptic long of perigee */
#define ECCEN 0.01671542 /* solar orbit eccentricity */
#define lzero 18.251907  /* lunar mean long at EPOCH */
#define Pzero 192.917585 /* lunar mean long of perigee at EPOCH */
#define Nzero 55.204723  /* lunar mean long of node at EPOCH */
I use the following regular expression–based replace operation in my editor  (vi)
[13]
[13]
Although the statement may appear like tty noise bursting from an old modem, its deconstruction is not overly 
difficult. All the statement does (take a deep breath) is: from the code point marked a to the code point marked b
('a,'b), substitute (s/#define, followed by a tab (^I), followed by the stored (\(...\)) string \1: anything but a tab or a 
space ([^^I ]) repeated zero or more times (*), followed by a space or tab ([ ^I]), followed by the stored string \2  that 
can contain any character repeated zero or more times (.*), followed by a tab (^I), followed by the stored string \3
that can also contain any character repeated zero or more times, with (/) a tab, followed by the stored string \3 (the 
comment), followed by a newline (^M ), followed by a tab and private static final double, followed by the stored 
string \1  (the constant name), followed by =, followed by the stored string \2 (the constant's value).
C# Create PDF from images Library to convert Jpeg, png images to
Batch convert PDF documents from multiple image formats, including Jpg, Png, Bmp, Gif, Tiff, Bitmap, .NET Graphics, and REImage.
extract image from pdf c#; pdf extract images
VB.NET PDF - Convert PDF with VB.NET WPF PDF Viewer
read PDF, VB.NET convert PDF to text, VB.NET extract PDF pages, VB PDF to image file formats with high quality, support converting PDF to PNG, JPG, BMP and
online pdf image extractor; extract jpg from pdf
:'a,'bs/#define^I\([^^I ]*\)[ ^I]*\(.*\)^I\(.*\)/^I\3^M^I
private static final double \\1 = \\2;
to automatically transform most of the above preprocessor defines into Java constant definitions.
private static final double PI = 3.141592654;
private static final double EPOCH = 85;
/* solar ecliptic long at EPOCH */
private static final double EPSILONg = 279.611371;
/* solar ecliptic long of perigee at EPOCH */
private static final double RHOg = 282.680403;
/* solar orbit eccentricity */
private static final double ECCEN = 0.01671542;
/* lunar mean long at EPOCH */
private static final double lzero = 18.251907;
/* lunar mean long of perigee at EPOCH */
private static final double Pzero = 192.917585;
/* lunar mean long of node at EPOCH */
private static final double Nzero = 55.204723;
To see if isleap is a standard C function, I quickly compile a simple test program.
#include <time.h>
main() {int i = isleap(444);}
The function appears undefined, so apparently it is nonstandard; I therefore search for its definition in the files it includes.
[14]
[14]
netbsdsrc/include/tzfile.h:151
#define isleap(y) ((((y) % 4) == 0 && ((y) % 100) != 0) || \
((y) % 400) == 0)
From its definition I see that the function takes a year as an argument and returns true if the year is a leap year. I search for the word 
"leap" in the Java GregorianCalendar class; I find it supported in the same form as theisLeapYear  method.
I continue browsing the pom.c file looking for other functions I might need to port to the Java implementation. For each of the two 
functions found (dtor and adj360) I search the source to see where the corresponding function is used. Both functions are used inside 
potm and will therefore need to be ported.
I now shift my attention to understanding what is represented by the return value of the potm  function. The code inside potm is totally 
opaque.
[15]
[15]
netbsdsrc/games/pom/pom.c:163
return(50 * (1 - cos(dtor(D))));            /* sec 63 #3 */
However, the code sequence at the point where the function is called suggests that the phase is returned as a floating-point number with
values 0–100 representing the moon's phase from a new to a full moon .
[16]
[16]
netbsdsrc/games/pom/pom.c:106–10 9
if ((int)today == 100)
(void)printf("Full\n");
else if (!(int)today)
(void)printf("New\n");
Subsequent use of the value confirms the theory, since 50 apparently represents the moon's two quarter values (half-moons).
[17]
C# WPF PDF Viewer SDK to convert and export PDF document to other
C#.NET PDF file & pages edit, C#.NET PDF pages extract, copy, paste PDF to image file formats with high quality, support converting PDF to PNG, JPG, BMP and
extract image from pdf in; pdf image extractor online
VB.NET Create PDF from images Library to convert Jpeg, png images
Support create PDF from multiple image formats in VB.NET, including Jpg, Png, Bmp, Gif, Tiff, Bitmap, .NET Graphics, and REImage.
extract image from pdf acrobat; extract image from pdf using
[17]
netbsdsrc/games/pom/pom.c:112–11 4
if ((int)today == 50)
(void)printf("%s\n", tomorrow > today ?
"at the First Quarter" : "at the Last Quarter");
The original pom.c
[18]
code displays the current phase of the moon. Since the new moonPhase method will calculate the phase of the 
moon on a date passed as its argument, I decide that the C code manipulating the current date should not be trivially ported to Java. I 
need to spend more effort to understand the meaning of the days variable. The first steps of the calculation
[19]
[18]
netbsdsrc/games/pom/pom.c
[19]
netbsdsrc/games/pom/pom.c:100–10 1
days = (GMT->tm_yday + 1) + ((GMT->tm_hour +
(GMT->tm_min / 60.0) + (GMT->tm_sec / 3600.0)) / 24.0);
for (cnt = EPOCH; cnt < GMT->tm_year;++cnt)
days += isleap(cnt) ? 366 : 365;
today = potm(days) + .5;
contain an expression part divided by 24 and additions of the 365 constant; both strongly indicate that days probably contains the 
number of days (including fractional parts) since EPOCH. If my understanding is correct, then the code can be rewritten in terms of the 
Java getTime difference between the Date object passed as the moonPhase method's argument and a Date object representing EPOCH.
GregorianCalendar e =
new GregorianCalendar(EPOCH, Calendar.JANUARY, 1);
return potm((d.getTime() - e.getTime().getTime()) /
1000.0 / 60.0 / 60.0 / 24.0);
However, a number of questions remain open and cannot be easily answered from the code: the issue of time zones and the consistent 
handling of leap years between the C and the Java approach. To answer these questions I decide that, instead of spending more time 
trying to understand the code, I will test my Java implementation against results obtained from the C version.
I proceed to transcribe the rest of the code into Java almost verbatim, without attempting to understand it. The adj360 function needs a 
bit more work since it receives an argument as a pointer. Reading the code in the function's body, I see that the pointer is used to pass 
an argument by reference and modify its value in the calling context.
[20]
[20]
netbsdsrc/games/pom/pom.c:181–19 2
void
adj360(double *deg;)
{
for (;;)
if (*deg < 0)
*deg += 360;
else if (*deg > 360)
*deg -= 360;
else
break;
}
I can trivially modify the function and its calls via a source-to-source transformation by adding a return statement at the function's end; 
this is the only exit point for the function. The Java equivalent will thus be the following code.
private static double adj360(double deg)
{
for (;;)
if (deg < 0)
deg += 360;
else if (deg > 360)
deg -= 360;
else
break;
return (deg);
}
Calls to sin and cos also need to be prefixed by the Java Math prefix; similarly, I take the opportunity to use Java'sdefinition of Math.PI to 
replace the C program's definition. The first draft of the moon phase algorithm transcribed into Java appears in Figure 11.1
.
[ Team LiB ]
[ Team LiB ]
11.4 Testing and Debugging
I end my implementation of the MoonPhase class with the addition of a simple test harness to verify its correct operation.
public static void main(String args[]) {
GregorianCalendar t = new GregorianCalendar(2002,
Calendar.SEPTEMBER, 30);
System.out.println(moonPhase(t.getTime()));
}
Figure 11.1 The moon phase algorithm transcribed into Java.
import java.util.*;
class MoonPhase {
private static final int EPOCH = 85;
/* solar ecliptic long at EPOCH */
private static final double EPSILONg = 279.611371;
[...]        
<-- a
<-- b
public static double moonPhase(Date d) {
GregorianCalendar e = new GregorianCalendar(EPOCH, Calendar.JANUARY, 1);
return potm((d.getTime() - e.getTime().getTime()) /
1000.0 / 60.0 / 60.0 / 24.0);
}
<-- c
public static void main(String args[]) {
GregorianCalendar t = new GregorianCalendar(2002, Calendar.SEPTEMBER, 30);
System.out.println(moonPhase(t.getTime()));
}
private static double potm(double days) {
[...]
Ec = 360 / Math.PI * ECCEN * Math.sin(dtor(Msol));        
<-- d
[...]        
<-- e
}
private static double dtor(double deg) {
return(deg * Math.PI / 180);
}
private static double adj360(double deg)
{
[...]        
<-- f
}
}
(a) Other constants
(b) Driver function
(c) Test harness
(d) Use Java Math
(e) Almost verbatim copy of the original C source
(f) See text
Testing the class with a few full-moon days (which I glean from my organizer's calendar) reveals that my initial implementation is not 
working correctly. The part most likely to be wrong is the code I completely reimplemented in Java.
[21]
[21]
netbsdsrc/games/pom/pom.c:102–10 3
for (cnt = EPOCH;cnt < GMT->tm –year;++cnt )
days += isleap(cnt) ? 366 : 365;
In the above code EPOCH is compared against tm–yea r, so I can reasonably assume that both entities reference the same underlying 
quantities. A quick look in the manual page of the ctime function shows the following definition for tm–yea r.
int tm–year;   /* year - 1900 * /
Thus tm–yea r has an implicit constant offset of 1900. The corresponding documentation of the Java Calendar and GregorianCalendar
classes does not indicate the use of such an offset; I therefore need to adjust EPOCH accordingly.
private static final int EPOCH = 1985;
Following that change, the Java and C code appear to produce compatible results, and I can therefore proceed to modify the hsqldb
code. According to my understanding, the only change needed is to add a new entry in the sTimeDate array.
"org.hsqldb.MonnPhase.moonPhase", "PHASEOFMOON",
After rebuilding the source, I am ready to test the new function. I prepare a small SQL test script I will use from now on to test the 
program's operation.
create table test (d date);
insert into test values('2002-09-22')
select phaseofmoon(d) from test;
Running the above script I get my first error from hsqldb: "unexpected token: PHASEOFMOON." Apparently I need to better understand 
how hsqldb is extended. I begin by examining the compiled class files to ensure that my code got compiled. I find them in the directory
classes/org/hsqldb; however, the directory contains no trace of a recompiled Library or the compiled MoonPhase class. Rereading the 
build script I am using, I discover that the compiled files are directly stored into a jar (Java archive) file. I therefore examine the jar file, 
looking for MoonPhase.
$ jar tvf hsqldb.jar | grep -i moon
2061 Mon Sep 30 11:30:32 GMT+03:00 2002 org/hsqldb/MoonPhase.class
The compiled file is there, so the reason for the token not being recognized lies elsewhere.
I repeat my search for instances of dayofweek strings to see if I missed something, to no avail. However, while examining the code again 
I added
"org.hsqldb.MonnPhase.moonPhase", "PHASEOFMOON",
I notice a spelling error and correct it.
"org.hsqldb.MoonPhase.moonPhase", "PHASEOFMOON",
Nevertheless, after rebuilding hsqldb I still get the error "unexpected token: PHASEOFMOON."
I now search for the code that produces the error message.
$ grep "unexpected token" *.java
(no results)
$ grep unexpected *.java
(no results)
I reason that I probably overlooked some source code: code that contains the "unexpected token" error message and also the code I 
should have modified. A recursive directory search for other Java source files does not reveal anything interesting. I try a 
case-insensitive search; the message could get formatted in a weird way. This time I obtain a number of matches.
$ grep -i unexpected *.java
Access.java: throw Trace.error(Trace.UNEXPECTED–TOKEN, right) ;
Database.java: throw Trace.error(Trace.UNEXPECTED–TOKEN, sToken) ;
[...]
Function.java: Trace.check(i != -1, Trace.UNEXPECTED–TOKEN, function) ;
Parser.java: throw Trace.error(Trace.UNEXPECTED–TOKEN, token) ;
[...]
Tokenizer.java: throw Trace.error(Trace.UNEXPECTED–TOKEN, sToken) ;
[...]
Trace.java: UNEXPECTED–TOKEN = 10 ,
[...]
Trace.java: "37000 Unexpected token",
"37000 Unexpected end of command",
It turns out that I was searching for the error message spelled incorrectly; in the application it was indeed spelled with an uppercase "U." 
As a side effect of my error, I find the references to the Trace.UNEXPECTED–TOKE N constant in the Parser.java and Tokenizer.java
files. Judging by the file names, the Parser class handles the SQL grammar, while the Tokenizer class handles the lexical analysis; I 
reason that the error probably stems from the latter.
I quickly browse through the Tokenizer.java source to identify the problem. My eye first falls on a code sequence initializing a table with 
keywords. The editor I am using colors strings with a distinct color, so the whole block stands out.
[22]
[22]
hsqldb/src/org/hsqldb/Tokenizer.java:66–7 5
String keyword[] = {
"AND", "ALL", "AVG", "BY", "BETWEEN", "COUNT", "CASEWHEN",
"DISTINCT", "DISTINCT", "EXISTS", "EXCEPT", "FALSE", "FROM",
"GROUP", "IF", "INTO", "IFNULL", "IS", "IN", "INTERSECT", "INNER",
Documents you may be interested
Documents you may be interested