mvc display pdf in partial view : Extract images from pdf file SDK software project wpf winforms .net UWP 0131473816_book19-part36

int offsetX = 100;
int offsetY = 100;
dc.DrawLines(10, points, offsetX, offsetY);
DrawLines
does not fill the area surrounded by the lines.You can draw a filled
shape with an arbitrary number of sides using 
DrawPolygon
,and several of
them with 
DrawPolyPolygon
.
DrawPolygon
takes a point count,an array of points,
optional offsets to add to the points,and an optional fill style:
wxODDEVEN_RULE
,
the default,or 
wxWINDING_RULE
.
DrawPolygonPolygon
additionally takes an array
of integers that specifies the number of points to be used for each polygon.
The  following  code  demonstrates  how  to  draw  polygons  and  poly-
polygons,with the result shown in Figure 5-6.
void DrawPolygons(wxDC& dc)
{
wxBrush brushHatch(*wxRED, wxFDIAGONAL_HATCH);
dc.SetBrush(brushHatch);
wxPoint star[5];
star[0] = wxPoint(100, 60);
star[1] = wxPoint(60, 150);
star[2] = wxPoint(160, 100);
star[3] = wxPoint(40, 100);
star[4] = wxPoint(140, 150);
dc.DrawPolygon(WXSIZEOF(star), star, 0, 30);
dc.DrawPolygon(WXSIZEOF(star), star, 160, 30, wxWINDING_RULE);
wxPoint star2[10];
star2[0] = wxPoint(0, 100);
star2[1] = wxPoint(-59, -81);
star2[2] = wxPoint(95, 31);
star2[3] = wxPoint(-95, 31);
star2[4] = wxPoint(59, -81);
star2[5] = wxPoint(0, 80);
star2[6] = wxPoint(-47, -64);
star2[7] = wxPoint(76, 24);
star2[8] = wxPoint(-76, 24);
star2[9] = wxPoint(47, -64);
int count[2] = {5, 5};
dc.DrawPolyPolygon(WXSIZEOF(count), count, star2, 450, 150);
}
Device Context Drawing Functions
155
Extract images from pdf file - 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 image from pdf acrobat; extract photos from pdf
Extract images from pdf file - 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 images from pdf
156
Drawing and Printing Chapter 5
Figure 5-7 Drawing splines
Drawing Splines
DrawSpline
lets you draw a curve known as a “spline”between multiple points.
There is a version for three points,and a version for an arbitrary number of
points,both illustrated in this example code:
// Draw 3-point sline
dc.DrawSpline(10, 100, 200, 200, 50, 230);
// Draw 5-point spline
wxPoint star[5];
star[0] = wxPoint(100, 60);
star[1] = wxPoint(60, 150);
star[2] = wxPoint(160, 100);
star[3] = wxPoint(40, 100);
star[4] = wxPoint(140, 150);
dc.DrawSpline(WXSIZEOF(star), star);
This produces the two splines illustrated in Figure 5-7.
Figure 5-6 Drawing polygons
C# PDF Text Extract Library: extract text content from PDF file in
Ability to extract highlighted text out of PDF control provides text extraction from PDF images and image extracting PDF text to another PDF file, TXT and SVG
extract images from pdf files without using copy and paste; extract image from pdf online
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 extracting PDF text to another PDF file, and other
extract jpeg from pdf; extract color image from pdf in c#
Device Context Drawing Functions
157
Figure 5-8 Drawing with transparency
Drawing Bitmaps
There are two main ways of drawing bitmaps on a device context:
DrawBitmap
and 
Blit
.
DrawBitmap
is a simplified form of 
Blit
,and it takes a bitmap,a posi-
tion,and a boolean flag specifying transparent drawing.The transparency can
be either a simple mask or an alpha channel (which offers translucency),
depending on how the bitmap was loaded or created.The following code loads
an image with an alpha channel and draws it over lines of text.
wxString msg = wxT(“Some text will appear mixed in the image’s
shadow...”);
int y = 75;
for (size_t i = 0; i < 10; i++)
{
y += dc.GetCharHeight() + 5;
dc.DrawText(msg, 200, y);
}
wxBitmap bmp(wxT(“toucan.png”), wxBITMAP_TYPE_PNG);
dc.DrawBitmap(bmp, 250, 100, true);
This produces the drawing in Figure 5-8, where the shadows in the bitmap
appear to partially obscure the text underneath.
The 
Blit
function is moreflexible and enables you to copy a specific por-
tion of a source device context onto a destination device context.This is its pro-
totype:
bool Blit(wxCoord destX, wxCoord destY,
wxCoord width, wxCoord height, wxDC* dcSource,
wxCoord srcX, wxCoord srcY,
int logicalFunc = wxCOPY,
bool useMask = false,
wxCoord srcMaskX = -1, wxCoord srcMaskY = -1);
VB.NET PDF File Compress Library: Compress reduce PDF size in vb.
Reduce image resources: Since images are usually or large size, images size reducing can help to reduce PDF file size effectively.
extract images pdf acrobat; some pdf image extract
C# PDF File Compress Library: Compress reduce PDF size in C#.net
Reduce image resources: Since images are usually or large size, images size reducing can help to reduce PDF file size effectively.
extract jpg pdf; extract pdf images
This code copies an area from a source device context 
dcSource
to the destina-
tion (the object that the function is operating on).An area of specified 
width
and 
height
is drawn starting at the position (
destX
,
destY
) on the destination
surface,taken from the position (
srcX
,
srcY
) on the source.The logical function
logicalFunc
is usually 
wxCOPY
, which means the bits are transferred from
source to destination with no transformation.Not all platforms support a logi-
cal function other than 
wxCOPY
. For more information, please see “Logical
Functions”later in this chapter.
The last three parameters are used only when the source device context
is a 
wxMemoryDC
with a transparent bitmap selected into it.
useMask
specifies
whether transparent drawing is used,and 
srcMaskX
and 
srcMaskY
enable the
bitmap’s mask to start from a different position than the main bitmap start
position.
The following example loads a smallpattern into a bitmap and uses 
Blit
to fill a larger destination bitmap,with transparency if available.
wxMemoryDC dcDest;
wxMemoryDC dcSource;
int destWidth = 200, destHeight = 200;
// Create the destination bitmap
wxBitmap bitmapDest(destWidth, destHeight);
// Load the pattern bitmap
wxBitmap bitmapSource(wxT(“pattern.png”), wxBITMAP_TYPE_PNG);
int sourceWidth = bitmapSource.GetWidth();
int sourceHeight = bitmapSource.GetHeight();
// Clear the destination background to white
dcDest.SelectObject(bitmapDest);
dcDest.SetBackground(*wxWHITE_BRUSH);
dcDest.Clear();
dcSource.SelectObject(bitmapSource);
// Tile the smaller bitmap onto the larger bitmap
for (int i = 0; i < destWidth; i += sourceWidth)
for (int j = 0; j < destHeight; j += sourceHeight)
{
dcDest.Blit(i, j, sourceWidth, sourceHeight,
& dcSource, 0, 0, wxCOPY, true);
}
// Tidy up
dcDest.SelectBitmap(wxNullBitmap);
dcSource.SelectBitmap(wxNullBitmap);
You can also draw icons directly, with 
DrawIcon
.This operation always takes
transparency into account.For example:
158
Drawing and Printing Chapter 5
VB.NET PDF File Merge Library: Merge, append PDF files in vb.net
VB.NET Components to combine various scanned images to PDF, such as tiff, jpg, png, gif, bmp, etc. Append one PDF file to the end of another one in VB.NET.
pdf image extractor; how to extract images from pdf files
C# PDF File Merge Library: Merge, append PDF files in C#.net, ASP.
Combine scanned images to PDF, such as tiff, jpg, png, gif, bmp, etc. Merge Microsoft Office Word, Excel and PowerPoint data to PDF form. Append one PDF file to
some pdf image extractor; pdf extract images
#include “file.xpm”
wxIcon icon(file_xpm);
dc.DrawIcon(icon, 20, 30); 
Filling Arbitrary Areas
FloodFill
can be used to fill an arbitrary area of a device context up to a color
boundary.Pass a starting point, a color for finding the flood area boundary,
and a style to indicate how the color parameter should be used. The device
context will be filled with the current brush color.
The following example draws a green rectangle with a red border and
fills it with black,followed by blue.
// Draw a green rectangle outlines in red
dc.SetPen(*wxRED_PEN);
dc.SetBrush(*wxGREEN_BRUSH);
dc.DrawRectangle(10, 10, 100, 100);
dc.SetBrush(*wxBLACK_BRUSH);
// Now fill the green area with black (while green is found)
dc.FloodFill(50, 50, *wxGREEN, wxFLOOD_SURFACE);
dc.SetBrush(*wxBLUE_BRUSH);
// Then fill with blue (until red is encountered)
dc.FloodFill(50, 50, *wxRED, wxFLOOD_BORDER);
The function may fail if it cannot find the color specified,or the point is out-
side the clipping region.
FloodFill
won’t work with printer device contexts,or
with 
wxMetafileDC
.
Logical Functions
The current logical function determines how a source pixel (from a pen or
brush color,or source device context if using 
Blit
) combines with a destination
pixel in the current device context.The default is 
wxCOPY
,which simply draws
with the current color.The others combine the current color and the back-
ground using a logical operation.
wxINVERT
is commonly used for drawing rub-
ber bands or moving outlines because with this operation drawing a shape the
second time erases the shape.
The following example draws a dotted line using 
wxINVERT
and then
erases it before restoring the normal logical function.
wxPen pen(*wxBLACK, 1, wxDOT);
dc.SetPen(pen);
// Invert pixels
dc.SetLogicalFunction(wxINVERT);
Device Context Drawing Functions
159
VB.NET PDF Page Extract Library: copy, paste, cut PDF pages in vb.
Dim outputFilePath As String = Program.RootPath + "\\" 1.pdf" newDoc.Save( outputFilePath). VB.NET: Extract All Images from PDF Document.
how to extract a picture from a pdf; extract image from pdf in
C# PDF File Split Library: Split, seperate PDF into multiple files
Application. Best and professional adobe PDF file splitting SDK for Visual Studio .NET. outputOps); Divide PDF File into Two Using C#.
extract image from pdf java; extract vector image from pdf
dc.DrawLine(10, 10, 100, 100);
// Invert again, rubbing it out
dc.DrawLine(10, 10, 100, 100);
// Restore to normal drawing
dc.SetLogicalFunction(wxCOPY);
Another use for logical functions is to combine images to create new images.
For example,here’s one method for creating transparent jigsaw puzzle pieces
out of an image.First,draw a black outline of each shape on a white bitmap,
using a grid of standard (but randomized) puzzle edges.Then,for each piece,
flood-fill the outline to create a black puzzle shape on a white background.
Blit
the corresponding area of the puzzle image onto this template bitmap
with the 
wxAND_REVERSE
function to mask out the unwanted parts of the puzzle,
leaving the “stamped out”puzzle piece on a black background.This can be
made into a transparent 
wxBitmap
by converting to a 
wxImage
,setting black as
the image mask color,and converting back to a transparent 
wxBitmap,
which
can be drawnappropriately.(Note that this technique depends on there being
no black in the puzzle image,or else holes will appear in the puzzle pieces.)
Table 5-6 shows the logical function values and their meanings.
Table 5-6 Logical Functions
Logical Function
Meaning (src= source,dst= destination) 
wxAND
src AND dst 
wxAND_INVERT
(NOT src) AND dst 
wxAND_REVERSE
src AND (NOT dst) 
wxCLEAR
wxCOPY
src 
wxEQUIV
(NOT src) XOR dst 
wxINVERT
NOT dst 
wxNAND
(NOT src) OR (NOT dst) 
wxNOR
(NOT src) AND (NOT dst) 
wxNO_OP
dst 
wxOR
src OR dst 
wxOR_INVERT
(NOT src) OR dst 
wxOR_REVERSE
src OR (NOT dst) 
wxSET
wxSRC_INVERT
NOT src 
wxXOR
src XOR dst 
160
Drawing and Printing Chapter 5
U
SINGTHE
P
RINTING
F
RAMEWORK
As we’ve seen,
wxPrinterDC
can be created and used directly.However,a more
flexible method is to use the wxWidgets printing framework to “drive”print-
ing.The main task for the developer is to derive a new class from 
wxPrintout
,
overriding functions that specify how to print a page (
OnPrintPage
),how many
pages there are (
GetPageInfo
),document setup (
OnPreparePrinting
),and so on.
The wxWidgets printing framework will show the print dialog, create the
printer device context,and call appropriate 
wxPrintout
functions when appro-
priate.The same printout class can be used for both printing and preview.
To start printing,a 
wxPrintout
object is passed to a 
wxPrinter
object,and
Print
is called to kick off the printing process, showing a print dialog before
printing the pages specified by the layout object and the user.For example:
// A global object storing print settings
wxPrintDialogData g_printDialogData;
// Handler for Print menu item
void MyFrame::OnPrint(wxCommandEvent& event)
{
wxPrinter printer(& g_printDialogData);
MyPrintout printout(wxT(“My printout”));
if (!printer.Print(this, &printout, true))
{
if (wxPrinter::GetLastError() == wxPRINTER_ERROR)
wxMessageBox(wxT(“There was a problem printing.\nPerhaps your
current printer is not set correctly?”), wxT(“Printing”), wxOK);
else
wxMessageBox(wxT(“You cancelled printing”),
wxT(“Printing”), wxOK);
}
else
{
(*g_printDialogData) = printer.GetPrintDialogData();
}
}
Because the 
Print
function returns only after all pages have been rendered
and sent to the printer,the printout object can be createdon the stack.
The 
wxPrintDialogData
class stores data related to the print dialog,such
as the pages the user selected for printing and the number of copies to be
printed.It’s a good idea to keep a global 
wxPrintDialogData
object in your appli-
cation to store the last settings selected by the user.You can pass a pointer to
this data to 
wxPrinter
to be used in the print dialog,and then if printing is suc-
cessful,copy the settings back from 
wxPrinter
to your global object,as in the
previous example.(In a real application,
g_printDialogData
would probably be
Using the Printing Framework
161
a data member of your application class.) See Chapter 8,“Using Standard
Dialogs,”for more about print and page dialogs and how to use them.
To preview the document, create a 
wxPrintPreview
object, passing two
printout objects to it:one for the preview and one to use for printing if the user
requests it.You can also pass a 
wxPrintDialogData
object so that the preview
picks up settings that the user chose earlier.Then pass the preview object to
wxPreviewFrame
,call the frame’s 
Initialize
function,and show the frame.For
example:
// Handler for Preview menu item
void MyFrame::OnPreview(wxCommandEvent& event)
{
wxPrintPreview *preview = new wxPrintPreview(
new MyPrintout, new MyPrintout,
& g_printDialogData);
if (!preview->Ok())
{
delete preview;
wxMessageBox(wxT(“There was a problem previewing.\nPerhaps your
current printer is not set correctly?”),
wxT(“Previewing”), wxOK);
return;
   
wxPreviewFrame *frame = new wxPreviewFrame(preview, this,
wxT(“Demo Print Preview”));
frame->Centre(wxBOTH);
frame->Initialize();
frame->Show(true);
}
When the preview frame is initialized,it disables all other top-level windows
in order to avoid actions that might cause the document to be edited after the
print  or  preview  process  has  started. Closing  the  frame  automatically
destroys the two printout objects.Figure 5-9 shows the print preview window,
with a control bar along the top providing page navigation, printing, and
zoom control.
162
Drawing and Printing Chapter 5
More on wxPrintout
When creating a printout object,the application can pass an optional title that
will appear in the print manager under some operating systems.You will need
to provide at least 
GetPageInfo
,
HasPage
,and 
OnPrintPage
,but you can override
any of the other methods below as well.
GetPageInfo
should be overridden to return 
minPage
,
maxPage
,
pageFrom
,
and 
pageTo
.The first two integers represent the range supported by this print-
out object for the current document,and the second two integers represent a
user selection (not currently used by wxWidgets). The default values for
minPage
and 
maxPage
are 
1
and 
32,000
,respectively.However,the printout will
stop printing if 
HasPage
returns 
false
.Typically,your 
OnPreparePrinting
func-
tion will calculate the values returned by 
GetPageInfo
and will look something
like this:
Using the Printing Framework
163
Figure 5-9 Print preview window
void MyPrintout::GetPageInfo(int *minPage, int *maxPage,
int *pageFrom, int *pageTo)
{
*minPage = 1; *maxPage = m_numPages;
*pageFrom = 1; *pageTo = m_numPages;
}
HasPage
must return 
false
if the argument is outside the current page range.
Often its implementation will look like this,where 
m_numPages
has been calcu-
lated in 
OnPreparePrinting
:
bool MyPrintout::HasPage(int pageNum)
{
return (pageNum >= 1 && pageNum <= m_numPages);
}
OnPreparePrinting
is called before the print or preview process commences,
and overriding it enables the application to do various setup tasks,including
calculating the number of pages in the document.
OnPreparePrinting
can call
wxPrintout
functions such as 
GetDC
,
GetPageSizeMM
,
IsPreview
,and so on to get
theinformation it needs.
OnBeginDocument
is called with the start and end page numbers when each
document copy is about to be printed,and if overridden,it must call the base
wxPrintout::OnBeginDocument
function. Similarly,
wxPrintout::OnEndDocument
must be called if overridden.
OnBeginPrinting
is called once for the printing cycle, regardless of the
number of copies,and 
OnEndPrinting
is called at the end.
OnPrintPage
is passed a page number,and the application should override
it to return 
true
if the page was successfully printed (returning 
false
cancels
the print job).This function will use 
wxPrintout::GetDC
to get the device con-
text to draw on.
The following are the utility functions you can use in your overridden
functions,and they do not need to be overridden.
IsPreview
can be called to determine whether this is a real print task or a
preview.
GetDC
returns a suitable device context for the current task.When print-
ing,a 
wxPrinterDC
will be returned,and when previewing,a 
wxMemoryDC
will be
returned because a preview is rendered into a bitmap via a memory device
context.
GetPageSizeMM
returns the size of the printer page in millimeters,whereas
GetPageSizePixels
returns the size in pixels (the maximum resolution of the
printer). For a preview, this will not be the same as the size returned by
wxDC::GetSize
,which will return the preview bitmap size.
164
Drawing and Printing Chapter 5
Documents you may be interested
Documents you may be interested