asp.net c# pdf viewer : Break a pdf into parts SDK Library service wpf .net windows dnn O%27Reilly%20-%20C++%20Cookbook%20(2007)43-part422

Page 431
ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html
Break a pdf into parts - 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
cannot print pdf file no pages selected; break pdf into multiple documents
Break a pdf into parts - 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
pdf file specification; break a pdf password
Recipe 11.2. Finding the Greatest or Least Value in a
Container
Problem
You want to find the maximum or minimum value in a container.
Solution
Example 11-2
shows how to find the minimum and maximum elements in a container by using the
functions max_element and min_element found in the <algorithm> header. These functions return iterators
that point to the first occurence of an element with the largest or smallest value, respectively.
Example 11-2. Finding the minimum or maximum element from a container
#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;
int getMaxInt(vector<int>& v) {
return *max_element(v.begin( ), v.end( ));
}
int getMinInt(vector<int>& v) {
return *min_element(v.begin( ), v.end( ));
}
int main( ) {
vector<int> v;
for (int i=10; i < 20; ++i) v.push_back(i);
cout << "min integer = " << getMinInt(v) << endl;
cout << "max integer = " << getMaxInt(v) << endl;
}
The program in Example 11-2
produces the following output:
min integer = 10
max integer = 19
Discussion
You may have noticed the dereferencing of the return value from the calls to min_element and
max_element. This is because these functions return iterators and not actual values, so the results have to
be dereferenced. You may find it a minor inconvenience to have to dereference the return type, but it
avoids unnecssarily copying the return value. This can be especially significant when the return value has
expensive copy semantics (e.g., large strings).
The generic algorithms provided by the standard library are obviously quite useful, but it is more
important for you to be able to write your own generic functions for getting the minimum and maximum
value from a container. For instance, let's say that you want a single function which returns the minimum
and maximum values by modifying reference parameters instead of returning them in a pair or some other
structure. This is demonstrated in Example 11-3
.
Example 11-3. Generic function for returning the minimum and maximum value
#include <algorithm>
#include <vector>
#include <iostream>
Page 432
ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html
C# TWAIN - Install, Deploy and Distribute XImage.Twain Control
how to install XImage.Twain into visual studio RasterEdge.XDoc.PDF.dll. device. TwainTransferMode = method; break; } if (method == TwainTransferMethod.TWSX_FILE
acrobat split pdf into multiple files; break apart a pdf file
C# TWAIN - Specify Size and Location to Scan
C# TWAIN image scanning size and location contains two parts. if (frame == TwainStaticFrameSizeType.LetterUS) { this.device.FrameSize = frame; break; } } }.
break pdf into multiple pages; can't select text in pdf file
Page 433
ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html
Page 434
ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html
Recipe 11.3. Computing the Sum and Mean of Elements in a
Container
Problem
You want to compute the sum and mean of elements in a container of numbers.
Solution
You can use the accumulate function from the <numeric> header to compute the sum, and then divide by
the size to get the mean. Example 11-5
demonstrates this using a vector.
Example 11-5. Computing the sum and mean of a container
#include <numeric>
#include <iostream>
#include <vector>
using namespace std;
int main( ) {
vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
int sum = accumulate(v.begin( ), v.end( ), 0);
double mean = double(sum) / v.size( );
cout << "sum = " << sum << endl;
cout << "count = " << v.size( ) << endl;
cout << "mean = " << mean << endl;
}
The program in Example 11-5
produces the following output:
sum = 10
count = 4
mean = 2.5
Discussion
The accumulate function generally provides the most efficient and simplest method to find the sum of all
the elements in a container.
Even though this recipe has a relatively simple solution, writing your own generic function to compute a
mean is not so easy. Example 11-6
shows one way to write such a generic function:
Example 11-6. A generic function to compute the mean
template<class Iter_T>
double computeMean(Iter_T first, Iter_T last) {
return static_cast<double>(accumulate(first, last, 0.0)) 
/ distance(first, last);
}
The computeMean function in Example 11-6
is sufficient for most purposes but it has one restriction: it
doesn't work with input iterators such as istream_iterator.
istream_iterator and ostream_iterator
Page 435
ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html
Page 436
ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html
Page 437
ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html
Recipe 11.4. Filtering Values Outside a Given Range
Problem
You want to ignore values from a sequence that fall above or below a given range.
Solution
Use the remove_copy_if function found in the <algorithm>, as shown in Example 11-8
.
Example 11-8. Removing elements from a sequence below a value
#include <algorithm>
#include <vector>
#include <iostream>
#include <iterator>
using namespace std;
struct OutOfRange
{
OutOfRange(int min, int max)
: min_(min), max_(max)
{ }
bool operator( )(int x) {
return (x < min_) || (x > max_);
}
int min_;
int max_;
};
int main( )
{
vector<int> v;
v.push_back(6);
v.push_back(12);
v.push_back(18);
v.push_back(24);
v.push_back(30);
remove_copy_if(v.begin( ), v.end( ),
ostream_iterator<int>(cout, "\n"), OutOfRange(10,25));
}
The program in Example 11-8
produces the following output:
12
18
24
Discussion
The remove_copy_if function copies the elements from one container to another container (or output
iterator), ignoring any elements that satisfy a predicate that you provide (it probably would have been
more accurate if the function was named copy_ignore_if). The function, however, does not change the
size of the target container. If, as is often the case, the number of elements copied by remove_copy_if is
fewer than the size of the target container, you will have to shrink the target container by calling the erase
member function.
The function remove_copy_if requires a unary predicate (a functor that takes one argument and returns a
boolean value) that returns true when an element should not be copied. In Example 11-8
the predicate is
the function object OutOfRange. The OutOfRange constructor takes a lower and upper range, and
Page 438
ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html
Page 439
ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html
Page 440
ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html
Documents you may be interested
Documents you may be interested