mvc open pdf in browser : Extract image from pdf online application control tool html azure winforms online 0131473816_book60-part82

Cross-Platform Builds Using Bakefile
565
If you built wxWidgets with 
configure
,your application makefile is likely
to contain references to 
wx-config
to supply the correct flags (see the later sec-
tion “Using wx-config”). For example:
CC = gcc
minimal: minimal.o
$(CC) -o minimal minimal.o `wx-config —libs`
minimal.o: minimal.cpp mondrian.xpm
$(CC) `wx-config —cxxflags` -c minimal.cpp -o minimal.o
clean:
rm -f *.o minimal
Modifying  makefiles  by  hand  can  quickly  become  tedious  as  your  project
grows. The next section describes how to use Bakefile  to  generate makefiles
for all platforms.
C
ROSS
-P
LATFORM
B
UILDS
U
SING
B
AKEFILE
Maintaining a large number of different project files and formats can quickly
become overwhelming. To simplify the maintenance of these formats, Vaclav
Slavik  created Bakefile, an  XML-based  makefile  wrapper that  generates all
the native project  files  for wxWidgets. So now, even though wxWidgets  sup-
ports all these formats, wxWidgets developers need only update one file—the
bakefile—and Bakefile handles the rest. Fortunately, Bakefile isn’t specific to
wxWidgets in any way—you can use Bakefile for your own projects.
Note that  this tutorial assumes that you  are  familiar with how to build
software using one of the supported makefile systems, that you have some basic
familiarity with how makefiles work, and that you are capable of setting envi-
ronment variables on your platform. Also note that the terms “Unix” and “Unix-
based” refer  to  all  operating  systems  that  share  a  Unix  heritage, including
FreeBSD, Linux, Mac OS X, and various other operating systems.
Getting Started
First, you’ll need to install Bakefile. You can always find the latest version for
download at Bakefile’s web site:
http://bakefile.sf.net
.
It is  also  available  on  the  CD-ROM  included  with  this  book. A  binary
installer  is  provided  for  Windows  users, whereas  users  of  Unix-based
operating systems will need to unpack the tarball and run
configure && make && make install
Extract image from pdf online - 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 text from image pdf file; pdf image extractor c#
Extract image from pdf online - 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 text from pdf image; extract jpg pdf
566
Buidling Your Own wxWidgets Applications Appendix B
Packages  for  some  distributions  are  also  available; check  the  web  site  for
details.
Setting Up Your wxWidgets Build Environment
Before you can build wxWidgets software using Bakefile or any other build
system, you need to make sure that wxWidgets is built and that wxWidgets
projects can find the wxWidgets includes and library files. wxWidgets build
instructions can be found by going to the 
docs
subfolder, then looking for the
subfolder that corresponds to your platform (such as 
msw
,
gtk
,
mac
) and read-
ing 
install.txt
there. After you’ve done that, the following sections provide
some extra steps you should take to make sure your Bakefile projects work
with wxWidgets.
On Windows
After  you’ve  built  wxWidgets, you  should  create  an  environment  variable
named 
WXWIN
and set it to the home folder of your wxWidgets source tree. (If
you use the command line to build, you can also set or override 
WXWIN
at build
time by passing it in as an option to your makefile.)
On Unix and Mac OS X
In a  standard  install, you  need not  do anything as long as 
wx-config
is on
your  PATH.
wx-config
is  all  you  need; see  “Using  wx-config” later  in  this
appendix.
A Sample wxWidgets Project Bakefile
Now that everything is set up, it’s time to take Bakefile for a test run. It is
recommended that you use the wxWidgets sample bakefile to get started. It
can  be  found  in  the 
build/bakefiles/wxpresets/sample
directory  in  the
wxWidgets source tree. Here is the 
minimal.bkl
bakefile used in the sample:
<?xml version=”1.0” ?>
<!— $Id: minimal.bkl,v 1.1 2005/01/27 22:47:37 VS Exp $ —>
<makefile>
<include file=”presets/wx.bkl”/>
<exe id=”minimal” template=”wx”>
<app-type>gui</app-type>
<debug-info>on</debug-info>
<runtime-libs>dynamic</runtime-libs>
<sources>minimal.cpp</sources>
VB.NET PDF Text Extract Library: extract text content from PDF
Extract highlighted text out of PDF document. control provides text extraction from PDF images and image files. Best VB.NET PDF text extraction SDK library and
pdf image extractor online; how to extract pictures from pdf files
C# PDF Text Extract Library: extract text content from PDF file in
Ability to extract highlighted text out of PDF document. from scanned PDF by using XDoc.PDF for .NET Image text extraction control provides text extraction from
extract images pdf; extract images from pdf online
<wx-lib>core</wx-lib>
<wx-lib>base</wx-lib>
</exe>
</makefile>
It’s a complete sample ready to be baked, so go into the directory mentioned
previously and run the following command.
On Windows:
bakefile -f msvc -I.. minimal.bkl
On UNIX:
bakefile -f gnu -I.. minimal.bkl
It should generate a makefile (
makefile.vc
or 
GNUmakefile
,respectively), which
you can use to build the software. You can then build the software using the
command 
nmake -f makefile.vc
or 
make -f GNUmakefile
respectively. Now let’s
take a look at some of the basic Bakefile concepts that you’ll need to know to
move on from here.
Project Types
As  mentioned earlier, Bakefile  builds makefiles  for  many  different  develop-
ment environments. The 
-f
option accepts a list of formats that you would like
to build, separated by commas. Valid values are shown in Table B-1.
Table B-1 Bakefile Project Types
autoconf
GNU autoconf Makefile.in files 
borland
Borland C/C++ makefiles 
cbuilderx
C++ Builder X project files 
dmars
Digital Mars makefiles 
dmars_smake
Digital Mars makefiles for SMAKE 
gnu
GNU toolchain makefiles (Unix) 
mingw
MinGW makefiles (mingw32-make) 
msevc4prj
MS Embedded Visual C++ 4 project files 
msvc
MS Visual C++ nmake makefiles 
msvc6prj
MS Visual C++ 6.0 project files 
watcom
OpenWatcom makefiles 
Cross-Platform Builds Using Bakefile
567
VB.NET PDF insert image library: insert images into PDF in vb.net
NET framework component supports inserting image to PDF in preview without adobe PDF control installed. Access to freeware download and online VB.NET class
extract images from pdf files; how to extract images from pdf
C# HTML5 PDF Viewer SDK to view PDF document online in C#.NET
Create PDF Online. Convert PDF Online. WPF PDF Viewer. View PDF in WPF. Annotate PDF in WPF. Image: Extract Image from PDF. PDF Write. Text: Insert Text to PDF.
pdf extract images; extract images from pdf c#
autoconf Project Type
You  may  notice  that  in  the  sample folder, there  is  also  a  file  called 
configure.in
.That file is the input for 
autoconf
,which creates the 
configure
scripts that you often see when you build software from source on Unix-based
platforms. People use configure scripts because they make your Unix make-
files  more portable by  automatically  detecting  the  right libraries and com-
mands to use on the user’s operating system. This is necessary because there
are many Unix-based operating systems and they are all slightly different.
Bakefile does  not generate a 
configure
or 
configure.in
script, so  if you
want  to  use  these  scripts  with  your  Unix-based  software, you  will  need  to
learn how to use 
autoconf
.Unfortunately, this topic deserves its own a book
and is beyond the scope of this tutorial, but a free book on the subject can be
found online at:
http://sources.redhat.com/autobook/
.
Note that you do not need to use 
automake
when you are using Bakefile,
just 
autoconf
,as Bakefile essentially does the same thing as 
automake
.
Targets
Every project needs to have a target or targets, specifying what is to be built.
With Bakefile, you specify the target by creating a tag named with the target
type. The possible names for targets are shown in Table B-2.
Table B-2 Bakefile Targets
exe
Create an executable file.
dll
Create a shared library.
lib
Create a static library.
module
Create a library that is loaded at runtime (a plugin).
Note that the previous sample is an “exe” target. After you create the target,
all  the  build  settings, including  flags  and  linker  options, should  be  placed
inside the target tag as they are in the 
minimal.bkl
sample.
Adding Sources and Includes
Obviously, you need to be able to add source and include files to your project.
You add sources using the 
<sources>
tag (as shown previously), and you add
include  directories using  the 
<include>
tag. You can add  multiple 
<sources>
and 
<include>
tags  to  add  multiple  source  files, or  you  can  add  multiple
sources and includes into one tag by separating them with a space, like this:
<sources>minimal.cpp minimal2.cpp minimal3.cpp</sources>
568
Buidling Your Own wxWidgets Applications Appendix B
VB.NET PDF- View PDF Online with VB.NET HTML5 PDF Viewer
PDF Online. Annotate PDF Online. Create PDF Online. Convert PDF Online. WPF PDF Extract Text from PDF. Text: Search Text in PDF. Image: Extract Image from PDF.
extract images from pdf acrobat; how to extract text from pdf image file
C# PDF insert image Library: insert images into PDF in C#.net, ASP
to zoom and crop image and achieve image resizing. Merge several images into PDF. Insert images into PDF form field. Access to freeware download and online C#.NET
extract pdf pages to jpg; how to extract images from pdf files
If your sources are in a subfolder of your Bakefile, you use the slash character
to  denote directories, even  on Windows. (For  example,
src/minimal.cpp
.)  For
more options and flags, please consult the Bakefile documentation in the 
doc
subfolder of Bakefile or on the Bakefile web site.
Build Options
What if you want to offer a debug and a release build? Or separate Unicode
and ANSI builds? You can do this in Bakefile by creating options. To create an
option, use  the 
<option>
tag. A  typical  option  has  three  important  parts: a
name, a  default  value, and  a  comma-separated  list  of  values. For  example,
here is how to create a 
DEBUG
option that builds debug by default:
<option name=”DEBUG”>
<default-value>1</default-value>
<values>0 1</values>
</option>
You can then test the value of this option and conditionally set build settings,
flags, and so on. For more information on both options and conditional state-
ments, please refer to the Bakefile documentation.
Bakefile Presets/Templates and Includes
Most projects will reuse certain settings, or options, in their makefiles, such as
DEBUG
or static/dynamic library options. Also it is common to have to use set-
tings from another project; for example, any project that uses wxWidgets will
need  to  build  using  the  same  flags  and  options  used  to  build  wxWidgets.
Bakefile makes these things easier by letting users create Bakefile templates,
where you can store common settings.
Bakefile ships with a couple of templates, found in the 
presets
subfolder
of your Bakefile installation. The 
simple.bkl
template adds a 
DEBUG
option to
makefiles so that you can build in release or debug mode. To add this template
to your  project, simply  add  the  tag 
<include  file=”presets/simple.bkl”/>
to
the  top  of  your  bakefile. Then, when  creating  your  target, add  the
template=”simple”
attribute to it. Now, when you have built the makefile, your
users can write commands like
nmake -f makefile.vc DEBUG=1
or
make -f GNUmakefile DEBUG=1
in order to build the software in debug mode.
Cross-Platform Builds Using Bakefile
569
VB.NET PDF - Convert PDF Online with VB.NET HTML5 PDF Viewer
PDF Online. Annotate PDF Online. Create PDF Online. Convert PDF Online. WPF PDF Extract Text from PDF. Text: Search Text in PDF. Image: Extract Image from PDF.
extract photos pdf; extract jpeg from pdf
VB.NET PDF - Create PDF Online with VB.NET HTML5 PDF Viewer
PDF Online. Annotate PDF Online. Create PDF Online. Convert PDF Online. WPF PDF Extract Text from PDF. Text: Search Text in PDF. Image: Extract Image from PDF.
extract pictures from pdf; pdf image text extractor
To  simplify  the  building  of  wxWidgets-based  projects, wxWidgets  con-
tains a set of bakefiles that automatically configure your build system to be
compatible with wxWidgets. As you’ll notice in the previous sample, the sam-
ple project uses the 
wx
template. After you’ve included the template, your soft-
ware will now build with wxWidgets support.
Because the wxWidgets  presets don’t exist in the Bakefile presets sub-
folder, Bakefile needs to know where to find these presets. The 
-I
command
adds the 
wxpresets
folder to Bakefile’s search path.
If  you  regularly  include  Bakefile  presets  in  places  other  than  the
Bakefile 
presets
folder, then you can set the 
BAKEFILE_PATHS
environment vari-
able so that Bakefile can find these Bakefiles and include them in your proj-
ect. This way you no longer need to specify the 
-I
flag each time you build.
Lastly, it’s  important  to note  that the Win32 
wx
project  bakefiles  come
with some common build options that users can use  when building the soft-
ware. These options are shown in Table B-3.
Table B-3 Bakefile Build Options
Option 
Values 
Description 
WX_SHARED
0 (default), 1 
Specify static or dynamic wxWidgets libs.
WX_UNICODE
0 (default), 1 
Use ANSI or Unicode wxWidgets libs.
WX_DEBUG
0, 1 (default) 
Use release or debug wxWidgets libs.
WX_VERSION
25 and higher 
Specify version of wxWidgets libs.
(default is 26) 
Note that these options are not needed under Unix because 
wx-config
can be
used to specify these options.
bakefile_gen — Automated Bakefile Scripts
If you have a large project, you can imagine that the calls to Bakefile would
get  more  and  more  complex  and  unwieldy. For  this  reason, a  script  called 
bakefile_gen
was  created, which  reads in a 
.bkgen
file  that  provides all  the
commands needed to build all the makefiles your project supports. A discus-
sion  of  how  to  use 
bakefile_gen
is  beyond  the  scope  of  this  tutorial, but  it
deserves  a  mention  because  it  can  be  invaluable  to  large  projects.
Documentation on 
bakefile_gen
can be found in the Bakefile distribution.
Conclusion
This concludes our basic tutorial of the cross-platform Bakefile build system
management  tool. From  here, please  be  sure  to  take  a  good  look  at  the
Bakefile documentation to see what else it is capable of. Please post questions
to the Bakefile mailing list, or if you have questions specific to the wxWidgets
570
Buidling Your Own wxWidgets Applications Appendix B
template  Bakefile, send  an  email  to  the  wxWidgets  mailing  list. See  the
Bakefile  and  wxWidgets  web  sites  for  information  on  how  to  subscribe  to
these lists.
Enjoy using Bakefile!
U
SING WX
-
CONFIG
When  you  build  wxWidgets  using 
configure
and 
make
,wxWidgets  creates  a
special script called 
wx-config
,which produces the necessary compiler flags for
compiling and linking wxWidgets programs, and manages returning the cor-
rect  flags  when  you  have  multiple  versions  of  the  wxWidgets  libraries
installed in the same location (such as 
/usr/local
). You can use 
wx-config
from
makefiles or run it by hand to see what flags you need to insert into your IDE
settings. If you’re using Visual Studio, BC++, or MinGW without MSYS, you
won’t use 
wx-config
.
If  you  look  in  your  wxWidgets  build  directory, you  will  see 
wx-config
there, and also in 
/usr/local/bin
if you ran 
make install
.
The  flags  that  produce  the  necessary  compile  and  link  settings  are 
--cxxflags
and 
--libs
,respectively. For example, on Mac OS X, the output of
each could be
$ wx-config --cxxflags
-I/usr/local/lib/wx/include/mac-unicode-release-static-2.6 
-I/usr/local/include/wx-2.6 -D__WXMAC__ -D_FILE_OFFSET_BITS=64 
-D_LARGE_FILES -DWX_PRECOMP -DNO_GCC_PRAGMA
$ wx-config --libs
-L/usr/local/lib   -framework QuickTime -framework IOKit -framework Carbon
-framework Cocoa -framework System  /usr/local/lib/libwx_macu_xrc-2.6.a
/usr/local/lib/libwx_macu_html-2.6.a /usr/local/lib/libwx_macu_adv-2.6.a
/usr/local/lib/libwx_macu_core-2.6.a
/usr/local/lib/libwx_base_carbonu_xml-2.6.a
/usr/local/lib/libwx_base_carbonu_net-2.6.a
/usr/local/lib/libwx_base_carbonu-2.6.a -framework WebKit -lexpat -lz 
-lpthread -liconv -lwxregexu-2.6 -lwxtiff-2.6 -lwxjpeg-2.6-lwxpng-2.6
Without  passing  these flags to  the  compiler  and linker  when building  your
own applications, you are likely to receive hundreds of errors because the com-
piler won’t know  anything  about the  wxWidgets classes  that  your program 
is using.
Using wx-config from the Build Directory
If you did not install the wxWidgets files into 
/usr/local
,you will need to use
wx-config
“in-place,” meaning  that  it  will  produce  absolute  paths  to  that
build’s files right from the build directory. This should be done by passing the 
-
--inplace
flag to 
wx-config
with whatever flags you are requesting. Even if you
did run 
make install
,nothing prevents you from using the in-place flag with a
Using wx-config
571
particular build of wxWidgets. When running in-place, you do not need to pass
any build configuration parameters because an in-place 
wx-config
knows only
about one build, the build from which you are running 
wx-config
in-place.
Using wx-config from /usr/local and Choosing Your Configuration
When you have built and installed multiple configurations of wxWidgets, you
can  specify  to 
wx-config
which  configuration’s  build  flags  you  would  like
returned. For example, if you  are creating both debug  and release  builds  of
your project, you should be sure to get the correct flags for each configuration
from 
wx-config
,for example:
wx-config --debug=no
or
wx-config --debug=yes
Many options are available to choose  specific build configurations. The most
commonly used flags are
wx-config [--inplace] [--unicode[=yes|no]] [--debug[=yes|no]] [--
version[=VERSION]] [--release] [--static]
You can also retrieve a list of available configurations using 
wx-config –list
.
A full list of flags is available by using 
wx-config --help
.
WX
W
IDGETS
S
YMBOLS AND
H
EADERS
Although wxWidgets defines a lot of symbols, there is only a handful that you
are likely to need to use in your projects. Sometimes, it may be necessary to
execute  certain  code  only  on  certain  platforms  or  under  certain  conditions,
such as the following:
#ifdef __WXMAC__
// Do something Mac-only
#endif
For your convenience, Table B-4 lists the common symbols and when they are
defined. Additional  symbols may be defined by  the ports  not covered in this
book (such OS/2, Palm, and Cocoa).
572
Buidling Your Own wxWidgets Applications Appendix B
Table B-4 Platform and Toolkit Symbols
Platform and Toolkit Symbols
__
WXMSW
__ 
Microsoft Windows 
__
WXWINCE
__ 
Microsoft Windows CE 
__
WXMAC
__ 
Mac OS X 
__
WXGTK
__ 
Using the GTK library, version 1 or 2 
__
WXGTK20
__ 
Using the GTK library, version 2 
__
UNIX
__ 
Unix-based platform (for example, Linux, Mac OS X, HP-UX) 
__
DARWIN
__ 
Open-source BSD variant used by Mac OS X 
__
LINUX
__ 
Any Linux-based platform 
Library / Build Options 
wxUSE_UNICODE
Enable string Unicode support.
__
WXDEBUG
__ 
Library compiled with debugging support.
WX_PRECOMP
Use pre-compiled headers.
The use of defined symbols ties in very closely to wxWidgets’ directory struc-
ture, as discussed in Appendix A. Consider for a moment that you can include
a single file, regardless of the target platform, and yet wxWidgets always uses
the correct platform information. Nearly all of the header files in 
include/wx
have a block like the following (taken from 
combobox.h
):
#if defined(__WXUNIVERSAL__)
#include “wx/univ/combobox.h”
#elif defined(__WXMSW__)
#include “wx/msw/combobox.h”
#elif defined(__WXMOTIF__)
#include “wx/motif/combobox.h”
#elif defined(__WXGTK__)
#include “wx/gtk/combobox.h”
#elif defined(__WXMAC__)
#include “wx/mac/combobox.h”
#elif defined(__WXCOCOA__)
#include “wx/cocoa/combobox.h”
#elif defined(__WXPM__)
#include “wx/os2/combobox.h”
#endif
By using the symbols defined for various platforms or toolkits, one common
header file can include the correct platform-specific header without you need-
ing  to  perform  these  tedious  checks  yourself. Simply  include  the  correct
header  in 
include/wx
,and  wxWidgets does the rest. For  example, you would
only need to use one line to add the necessary headers to support combo boxes:
#include “wx/combobox.h”
wxWidgets Symbols and Headers
573
However, it  would  still  be  very  tedious  to  add  the  headers  for  all  of  the
wxWidgets  classes  that  you  use  in  each  source  file. wxWidgets  provides
include/wx/wx.h,
which itself includes many of the commonly used class head-
ers. There is also 
include/wx/wxprec.h
,which you need to include when using
precompiled headers on supported platforms. For example:
// For compilers that support precompilation, includes “wx.h”.
#include <wx/wxprec.h>
#ifndef WX_PRECOMP
// Include your minimal set of headers here, or wx.h
#include <wx/wx.h>
#endif
... now your other include files ...
If your code must  work  across different versions  of wxWidgets, it’s useful to
know about the macro 
wxCHECK_VERSION(major, minor, release)
.It succeeds if
the version that the  source is being compiled against  is at least the version
specified. For example:
#if wxCHECK_VERSION(2,5,5)
// Anything for wxWidgets 2.5.5 and above
#else
// Anything for wxWidgets 2.5.4 and below
#endif
574
Buidling Your Own wxWidgets Applications Appendix B
Documents you may be interested
Documents you may be interested