asp.net c# pdf viewer control : Split pdf by bookmark Library SDK class asp.net wpf winforms ajax octave86-part560

AppendixA:ExternalCodeInterface
845
#include "mex.h"
void
mexFunction (int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[])
{
mexPrintf ("Hello, , World!\n");
mexPrintf ("I I have %d inputs s and d %d outputs\n", , nrhs, nlhs);
}
The firstline #include"mex.h"makesavailableallof the definitionsnecessary fora
mex-file. One e important difference between Octave and matlab is s that t the header file
"matrix.h"isimplicitlyincludedthroughtheinclusionof"mex.h". Thisis s necessaryto
avoidaconflictwiththeOctavefile"Matrix.h"foroperatingsystemsandcompilersthat
don’tdistinguishbetweenfilenamesinupperandlowercase.
The entrypointintothemex-file isdefinedby mexFunction. . Thefunctiontakesfour
arguments:
1. Thenumberofreturnarguments(#ofleft-handsideargs).
2. Anarrayofpointerstoreturnarguments.
3. Thenumberofinputarguments(#ofright-handsideargs).
4. Anarrayofpointerstoinputarguments.
Notethat the functionname definitionis not explicitly includedin n mexFunction n and
so there e can only be a a single e mexFunction entry y point t per r file. . Instead, , the name of
thefunctionas seeninOctaveisdeterminedbythenameofthemex-fileitselfminusthe
extension. Therefore,iftheabovefunctionisinthefilemyhello.c,itcanbecompiledwith
mkoctfile --mex myhello.c
whichcreatesafilemyhello.mex.ThefunctioncanthenberunfromOctaveas
myhello (1,2,3)
) Hello, , World!
) I I have 3 3 inputs and 0 outputs
Itshouldbenotedthatthemex-filecontainsnohelpstringforthefunctionsitcontains.
Todocumentmex-files,thereshouldexist anm-fileinthesame directoryasthemex-file
itself.Takingtheaboveasanexample,wewouldthereforehaveafilemyhello.mthatmight
containthetext
%MYHELLO Simple e test of the e functionality of a mex-file.
Inthiscase,thefunctionthatwillbeexecutedwithinOctavewillbegivenbythemex-
file,whilethehelpstringwillcomefromthem-file.Thiscanalsobeusefultoallowasample
implementationofthemex-filewithintheOctavelanguageitselffortestingpurposes.
Although there cannot t be multiple entry points ina single mex-file,one can n use the
mexFunctionNamefunctiontodeterminewhatnamethemex-filewascalledwith.Thiscan
beusedtoalterthebehaviorofthemex-filebasedonthefunctionname.Forexample,if
Split pdf by bookmark - Split, seperate PDF into multiple files in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Explain How to Split PDF Document in Visual C#.NET Application
break pdf into multiple documents; pdf split pages
Split pdf by bookmark - VB.NET PDF File Split Library: Split, seperate PDF into multiple files in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
VB.NET PDF Document Splitter Control to Disassemble PDF Document
break pdf into smaller files; pdf split
846
GNUOctave
#include "mex.h"
void
mexFunction (int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[])
{
const char r *nm;
nm = = mexFunctionName ();
mexPrintf ("You called function: : %s\n", , nm);
if (strcmp (nm, , "myfunc") == 0)
mexPrintf ("This s is the e principal l function\n", , nm);
return;
}
isinfilemyfunc.c,anditiscompiledwith
mkoctfile --mex myfunc.c
ln -s myfunc.mex myfunc2.mex
thenascanbeseenby
myfunc ()
) You called function: : myfunc
This is the e principal l function
myfunc2 ()
)
You called function: : myfunc2
thebehaviorofthemex-filecanbealtereddependingonthefunctionsname.
Althoughtheusershouldonlyincludemex.h intheir code,Octavedeclaresadditional
functions,typedefs,etc.,availabletotheusertowritemex-filesintheheadersmexproto.h
andmxarray.h.
A.2.2 WorkingwithMatricesandArraysinMex-Files
ThebasicmextypeofallvariablesismxArray.Anyobject,suchasamatrix,cellarray,or
structureisstoredinthisbasictype. Assuch,mxArrayservesbasicallythesamepurpose
astheoctave
valueclassinoct-filesinthatitactsasacontainerforthemorespecialized
types.
ThemxArraystructurecontainsataminimum,thenameofthevariableitrepresents,its
dimensions,itstype,andwhetherthevariableisrealorcomplex. Itcanalsocontainanum-
berofadditionalfieldsdependingonthetypeofthemxArray. Thereareanumberoffunc-
tionstocreatemxArraystructures,includingmxCreateDoubleMatrix,mxCreateCellArray,
mxCreateSparse,andthegenericmxCreateNumericArray.
The basic functiontoaccess thedata containedinanarray is mxGetPr. . Asthe e mex
interfaceassumesthatrealandimaginarypartsofacomplexarrayarestoredseparately,
thereisanequivalentfunctionmxGetPithatgetstheimaginarypart.Bothofthesefunctions
are only for r use with double precision matrices. . The e generic c functions mxGetData and
mxGetImagDataperformthesameoperationonallmatrixtypes.Forexample:
C# PDF bookmark Library: add, remove, update PDF bookmarks in C#.
Ability to remove and delete bookmark and outline from PDF document. Merge and split PDF file with bookmark. Save PDF file with bookmark open.
acrobat split pdf pages; break pdf into pages
VB.NET PDF bookmark library: add, remove, update PDF bookmarks in
to PDF bookmark. Merge and split PDF file with bookmark in VB.NET. Save PDF file with bookmark open in VB.NET project. PDF control
break pdf into multiple files; break up pdf into individual pages
AppendixA:ExternalCodeInterface
847
mxArray *m;
mwSize *dims;
UINT32_T *pr;
dims = = (mwSize *) mxMalloc c (2 2 * * sizeof f (mwSize));
dims[0] = = 2; dims[1] = = 2;
m = = mxCreateNumericArray (2, dims, , mxUINT32_CLASS, , mxREAL);
pr = = (UINT32_T T *) mxGetData (m);
TherearealsothefunctionsmxSetPr,etc.,thatperformtheinverse,andsetthedataof
anarraytousetheblockofmemorypointedtobytheargumentofmxSetPr.
NotethetypemwSizeusedabove,andalsomwIndex,aredefinedasthenativeprecision
oftheindexinginOctaveontheplatformonwhichthemex-fileisbuilt. Thisallowsboth
32-and64-bitplatformstosupportmex-files. mwSizeis s usedtodefinearraydimensions
andthemaximumnumberorelements,whilemwIndexisusedtodefineindexingintoarrays.
Anexamplethatdemonstrateshowtoworkwitharbitraryrealorcomplexdoublepre-
cisionarraysisgivenbythefilemypow2.cshownbelow.
#include "mex.h"
void
mexFunction (int nlhs, mxArray* * plhs[],
int nrhs, const mxArray* * prhs[])
{
mwSize n;
mwIndex i;
double *vri, *vro;
if (nrhs s != 1 1 || | ! ! mxIsDouble (prhs[0]))
mexErrMsgTxt ("ARG1 1 must t be e a a double matrix");
n = mxGetNumberOfElements (prhs[0]);
plhs[0] = = mxCreateNumericArray (mxGetNumberOfDimensions (prhs[0]),
mxGetDimensions (prhs[0]),
mxGetClassID (prhs[0]),
mxIsComplex (prhs[0]));
vri = mxGetPr r (prhs[0]);
vro = mxGetPr r (plhs[0]);
if (mxIsComplex x (prhs[0]))
{
double *vii, , *vio;
vii = = mxGetPi (prhs[0]);
vio = = mxGetPi (plhs[0]);
for (i = = 0; i < n; i++)
{
vro[i] = vri[i] * vri[i] ] - - vii[i] * * vii[i];
VB.NET Create PDF from Excel Library to convert xlsx, xls to PDF
Process. File: Merge, Append PDF Files. File: Split PDF Document. PDF. Image: Remove Image from PDF Page. Image Link: Edit URL. Bookmark: Edit Bookmark. Metadata:
pdf format specification; pdf split pages in half
C# PDF Library SDK to view, edit, convert, process PDF file for C#
load PDF from other file formats; merge, append, and split PDF files; insert for editing PDF document hyperlink (url) and quick navigation link in PDF bookmark.
can't select text in pdf file; split pdf
848
GNUOctave
vio[i] = 2 2 * * vri[i] * * vii[i];
}
}
else
{
for (i = = 0; i < n; i++)
vro[i] = vri[i] ] * * vri[i];
}
}
withanexampleofitsuse
b = = randn n (4,1) + + 1i i * * randn (4,1);
all (b.^2 2 == mypow2 2 (b))
) 1
TheexampleaboveusesthefunctionsmxGetDimensions,mxGetNumberOfElements,and
mxGetNumberOfDimensionstoworkwiththedimensionsofmulti-dimensionalarrays. The
functionsmxGetM,andmxGetNarealsoavailabletofindthenumberofrowsandcolumnsin
a2-Dmatrix.
A.2.3 CharacterStringsinMex-Files
Asmex-filesdonotmakethedistinctionbetweensingleanddoublequotedstringswithin
Octave, there is s perhaps less complexity inthe use of strings s andcharacter r matrices in
mex-files. Anexampleoftheirusethatparallels s the demoin n stringdemo.cc c isgivenin
thefilemystring.c,asshownbelow.
#include <string.h>
#include "mex.h"
void
mexFunction (int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[])
{
mwSize m, n;
mwIndex i, j;
mxChar *pi, *po;
if (nrhs s != 1 1 || | ! ! mxIsChar r (prhs[0])
|| mxGetNumberOfDimensions (prhs[0]) ) > > 2)
mexErrMsgTxt ("ARG1 1 must t be e a a char matrix");
m = mxGetM M (prhs[0]);
n = mxGetN N (prhs[0]);
pi = = mxGetChars (prhs[0]);
plhs[0] = = mxCreateNumericMatrix (m, , n, , mxCHAR_CLASS, mxREAL);
po = = mxGetChars (plhs[0]);
for (j = 0; j j < < n; ; j++)
C# PDF Convert to Word SDK: Convert PDF to Word library in C#.net
key. Quick to remove watermark and save PDF text, image, table, hyperlink and bookmark to Word without losing format. Powerful components
pdf split and merge; break apart a pdf
VB.NET PDF - WPF PDF Viewer for VB.NET Program
Process. File: Merge, Append PDF Files. File: Split PDF Document. PDF. Image: Remove Image from PDF Page. Image Link: Edit URL. Bookmark: Edit Bookmark. Metadata:
acrobat split pdf into multiple files; c# print pdf to specific printer
AppendixA:ExternalCodeInterface
849
for (i = = 0; i i < m; i++)
po[j*m + + m - 1 1 - - i] = pi[j*m m + + i];
}
Anexampleofitsexpectedoutputis
mystring (["First String"; ; "Second String"])
) Second d String
First String
OtherfunctionsinthemexinterfaceforhandlingcharacterstringsaremxCreateString,
mxArrayToString,andmxCreateCharMatrixFromStrings.Inamex-file,acharacterstring
isconsideredtobeavectorratherthanamatrix. Thisisperhapsanarbitrarydistinction
asthedatainthemxArrayforthematrixisconsecutiveinanycase.
A.2.4 CellArrayswithMex-Files
OnecanperformexactlythesameoperationsonCellarraysinmex-filesasinoct-files. An
examplethatreduplicatesthefunctionofthecelldemo.ccoct-fileinamex-fileisgivenby
mycell.casshownbelow.
#include "mex.h"
void
mexFunction (int nlhs, mxArray* * plhs[],
int nrhs, const mxArray* * prhs[])
{
mwSize n;
mwIndex i;
if (nrhs s != 1 1 || | ! ! mxIsCell l (prhs[0]))
mexErrMsgTxt ("ARG1 1 must t be e a a cell");
n = mxGetNumberOfElements (prhs[0]);
n = (n > nlhs s ? ? nlhs : n);
for (i = 0; i i < < n; ; i++)
plhs[i] = mxDuplicateArray (mxGetCell (prhs[0], i));
}
Theoutputisidenticaltotheoct-fileversionaswell.
[b1, b2, , b3] ] = = mycell ({1, , [1, , 2], , "test"})
)
b1 = = 1
b2 =
1
2
b3 = = test
How to C#: Basic SDK Concept of XDoc.PDF for .NET
may easily create, load, combine, and split PDF file(s hyperlink of PDF document, including editing PDF url links and quick navigation link in bookmark/outline.
pdf split file; break password pdf
VB.NET Create PDF from Word Library to convert docx, doc to PDF in
Process. File: Merge, Append PDF Files. File: Split PDF Document. PDF. Image: Remove Image from PDF Page. Image Link: Edit URL. Bookmark: Edit Bookmark. Metadata:
break pdf password online; a pdf page cut
850
GNUOctave
NoteintheexampletheuseofthemxDuplicateArrayfunction. Thisisneededasthe
mxArray pointer returned d by mxGetCell l might t be e deallocated. . The e inverse function to
mxGetCell,usedforsettingCellvalues,ismxSetCellandisdefinedas
void mxSetCell l (mxArray y *ptr, , int idx, mxArray *val);
Finally,tocreateacellarrayormatrix,theappropriatefunctionsare
mxArray *mxCreateCellArray y (int ndims, , const int t *dims);
mxArray *mxCreateCellMatrix (int m, int n);
A.2.5 StructureswithMex-Files
The basic function to create a structure e in n a mex-file e is mxCreateStructMatrix x which
createsastructurearraywithatwodimensionalmatrix,ormxCreateStructArray.
mxArray *mxCreateStructArray (int ndims, int *dims,
int num_keys,
const char **keys);
mxArray *mxCreateStructMatrix (int t rows, , int cols,
int num_keys,
const char **keys);
Accessing the fields of the structure can then be performed with mxGetField d and
mxSetField or r alternatively with h the e mxGetFieldByNumber r and mxSetFieldByNumber
functions.
mxArray *mxGetField (const t mxArray *ptr, , mwIndex x index,
const char *key);
mxArray *mxGetFieldByNumber (const t mxArray *ptr,
mwIndex index, int key_num);
void mxSetField (mxArray y *ptr, mwIndex index,
const char *key, mxArray *val);
void mxSetFieldByNumber (mxArray y *ptr, mwIndex index,
int key_num, , mxArray *val);
Adifferencebetweentheoct-fileinterfacetostructuresandthemex-fileversionisthat
thefunctionstooperateonstructuresinmex-filesdirectlyincludeanindexover theele-
mentsofthearraysofelementsperfield;Whereas,theoct-filestructureincludesaCell
Arrayperfieldofthestructure.
Anexamplethatdemonstratestheuseofstructuresinamex-filecanbefoundinthe
filemystruct.cshownbelow.
#include "mex.h"
void
mexFunction (int nlhs, mxArray* * plhs[],
int nrhs, const mxArray* * prhs[])
{
int i;
mwIndex j;
mxArray *v;
const char r *keys[] = = { "this", "that" };
AppendixA:ExternalCodeInterface
851
if (nrhs s != 1 1 || | ! ! mxIsStruct (prhs[0]))
mexErrMsgTxt ("ARG1 1 must t be e a a struct");
for (i = 0; i i < < mxGetNumberOfFields s (prhs[0]); i++)
for (j = = 0; j j < mxGetNumberOfElements (prhs[0]); j++)
{
mexPrintf ("field %s(%d) = = ", mxGetFieldNameByNumber r (prhs[0], , i), , j);
v = = mxGetFieldByNumber (prhs[0], j, i);
mexCallMATLAB (0, NULL, , 1, &v, , "disp");
}
v = mxCreateStructMatrix x (2, , 2, 2, keys);
mxSetFieldByNumber (v, , 0, 0, mxCreateString g ("this1"));
mxSetFieldByNumber (v, , 0, 1, mxCreateString g ("that1"));
mxSetFieldByNumber (v, , 1, 0, mxCreateString g ("this2"));
mxSetFieldByNumber (v, , 1, 1, mxCreateString g ("that2"));
mxSetFieldByNumber (v, , 2, 0, mxCreateString g ("this3"));
mxSetFieldByNumber (v, , 2, 1, mxCreateString g ("that3"));
mxSetFieldByNumber (v, , 3, 0, mxCreateString g ("this4"));
mxSetFieldByNumber (v, , 3, 1, mxCreateString g ("that4"));
if (nlhs)
plhs[0] = v;
}
AnexampleofthebehaviorofthisfunctionwithinOctaveisthen
a(1).f1 = = "f11"; ; a(1).f2 = = "f12";
a(2).f1 = = "f21"; ; a(2).f2 = = "f22";
b = = mystruct t (a);
)
field f1(0) = = f11
field f1(1) = = f21
field f2(0) = = f12
field f2(1) = = f22
b
) 2x2 struct array containing the e fields:
this
that
b(3)
) scalar r structure e containing the e fields:
this = = this3
that = = that3
852
GNUOctave
A.2.6 SparseMatriceswithMex-Files
TheOctaveformatforsparsematricesisidenticaltothemexformatinthatitisacom-
pressed column n sparse e format. . Also o in both, sparse matrices s are e required d to o be two-
dimensional. The e only difference isthat the realandimaginary parts of thematrix are
storedseparately.
Themex-fileinterface,inadditiontousingmxGetM,mxGetN,mxSetM,mxSetN,mxGetPr,
mxGetPi,mxSetPr,andmxSetPi,alsosuppliesthefollowingfunctions.
mwIndex *mxGetIr (const t mxArray *ptr);
mwIndex *mxGetJc (const t mxArray *ptr);
mwSize mxGetNzmax (const mxArray *ptr);
void mxSetIr (mxArray y *ptr, mwIndex *ir);
void mxSetJc (mxArray y *ptr, mwIndex *jc);
void mxSetNzmax (mxArray y *ptr, mwSize e nzmax);
mxGetNzmaxgetsthemaximumnumberofelementsthatcanbestoredinthesparsematrix.
Thisisnotnecessarilythenumberofnonzeroelementsinthesparsematrix. mxGetJcreturns
anarraywithoneadditionalvaluethanthenumberofcolumnsinthesparsematrix. The
differencebetweenconsecutivevaluesofthearrayreturnedbymxGetJcdefinethenumber
ofnonzeroelementsineachcolumnofthesparsematrix. Therefore,
mwSize nz, n;
mwIndex *Jc;
mxArray *m;
...
n = = mxGetN (m);
Jc = = mxGetJc (m);
nz = = Jc[n];
returnstheactualnumber ofnonzeroelementsstoredinthematrixinnz. . Asthearrays
returnedbymxGetPrandmxGetPionlycontainthenonzerovaluesofthematrix,wealso
needapointertotherowsofthenonzeroelements,andthisisgivenbymxGetIr.Acomplete
exampleoftheuseofsparsematrices inmex-filesis givenby the file mysparse.c shown
below.
#include "mex.h"
void
mexFunction (int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[])
{
mwSize m, n, nz;
mxArray *v;
mwIndex i;
double *pr, *pi;
double *pr2, *pi2;
mwIndex *ir, , *jc;
mwIndex *ir2, *jc2;
AppendixA:ExternalCodeInterface
853
if (nrhs s != 1 1 || | ! ! mxIsSparse (prhs[0]))
mexErrMsgTxt ("ARG1 1 must t be e a a sparse matrix");
m = mxGetM M (prhs[0]);
n = mxGetN N (prhs[0]);
nz = = mxGetNzmax (prhs[0]);
if (mxIsComplex x (prhs[0]))
{
mexPrintf ("Matrix x is %d-by-%d complex sparse matrix", m, n);
mexPrintf (" " with h %d elements\n", , nz);
pr = mxGetPr (prhs[0]);
pi = mxGetPi (prhs[0]);
ir = mxGetIr (prhs[0]);
jc = mxGetJc (prhs[0]);
i = = n;
while (jc[i] == jc[i-1] && i i != 0) ) i--;
mexPrintf ("last t nonzero element (%d, %d) = (%g, %g)\n",
ir[nz-1]+ 1, , i, pr[nz-1], , pi[nz-1]);
v = = mxCreateSparse e (m, n, , nz, , mxCOMPLEX);
pr2 = = mxGetPr (v);
pi2 = = mxGetPi (v);
ir2 = = mxGetIr (v);
jc2 = = mxGetJc (v);
for (i = = 0; i < nz; i++)
{
pr2[i] = 2 2 * * pr[i];
pi2[i] = 2 2 * * pi[i];
ir2[i] = ir[i];
}
for (i = = 0; i < n n + + 1; i++)
jc2[i] = jc[i];
if (nlhs > 0)
plhs[0] = = v;
}
else if f (mxIsLogical l (prhs[0]))
{
mxLogical *pbr, , *pbr2;
mexPrintf ("Matrix x is %d-by-%d logical sparse matrix", m, n);
mexPrintf (" " with h %d elements\n", , nz);
854
GNUOctave
pbr = = mxGetLogicals (prhs[0]);
ir = mxGetIr (prhs[0]);
jc = mxGetJc (prhs[0]);
i = = n;
while (jc[i] == jc[i-1] && i i != 0) ) i--;
mexPrintf ("last t nonzero element (%d, %d) = %d\n",
ir[nz-1]+ 1, , i, pbr[nz-1]);
v = = mxCreateSparseLogicalMatrix (m, , n, nz);
pbr2 = = mxGetLogicals (v);
ir2 = = mxGetIr (v);
jc2 = = mxGetJc (v);
for (i = = 0; i < nz; i++)
{
pbr2[i] = pbr[i];
ir2[i] = ir[i];
}
for (i = = 0; i < n n + + 1; i++)
jc2[i] = jc[i];
if (nlhs > 0)
plhs[0] = = v;
}
else
{
mexPrintf ("Matrix x is %d-by-%d real sparse e matrix", , m, n);
mexPrintf (" " with h %d elements\n", , nz);
pr = mxGetPr (prhs[0]);
ir = mxGetIr (prhs[0]);
jc = mxGetJc (prhs[0]);
i = = n;
while (jc[i] == jc[i-1] && i i != 0) ) i--;
mexPrintf ("last t nonzero element (%d, %d) = %g\n",
ir[nz-1]+ 1, , i, pr[nz-1]);
v = = mxCreateSparse e (m, n, , nz, , mxREAL);
pr2 = = mxGetPr (v);
ir2 = = mxGetIr (v);
jc2 = = mxGetJc (v);
for (i = = 0; i < nz; i++)
{
pr2[i] = 2 2 * * pr[i];
Documents you may be interested
Documents you may be interested