open source pdf to image converter c# : Adding form fields to pdf files Library application component asp.net windows html mvc 5212-part533

4.19.4 See Also 
Recipe 4.17
for simple sorting and Recipe 4.18
for sorting with a custom function; 
documentation on 
array_multisort( )
at http://www.php.net/array-multisort
.  
Recipe 4.20 Sorting an Array Using a Method Instead of a Function 
4.20.1 Problem 
You want to define a custom sorting routine to order an array. However, instead of using a 
function, you want to use an object method.  
4.20.2 Solution 
Pass in an array holding a class name and method in place of the function name:  
usort($access_times, array('dates', 'compare')); 
4.20.3 Discussion 
As with a custom sort function, the object method needs to take two input arguments and 
return 1, 0, or -1, depending if the first parameter is larger than, equal to, or less than the 
second:  
class pc_sort { 
// reverse-order string comparison 
function strrcmp($a, $b) { 
return strcmp($b, $a); 
usort($words, array('pc_sort', 'strrcmp')); 
4.20.4 See Also 
Chapter 7
for more on classes and objects; Recipe 4.18
for more on custom sorting of arrays. 
Recipe 4.21 Randomizing an Array 
4.21.1 Problem 
You want to scramble the elements of an array in a random order.  
4.21.2 Solution 
If you're running PHP 4.3 or above, use 
shuffle( )
:  
shuffle($array); 
Adding form fields to pdf files - C# PDF Field Edit Library: insert, delete, update pdf form field in C#.net, ASP.NET, MVC, Ajax, WPF
Online C# Tutorial to Insert, Delete and Update Fields in PDF Document
change font on pdf form; change font pdf form
Adding form fields to pdf files - VB.NET PDF Field Edit library: insert, delete, update pdf form field in vb.net, ASP.NET, MVC, Ajax, WPF
How to Insert, Delete and Update Fields in PDF Document with VB.NET Demo Code
add email button to pdf form; convert pdf to editable form
If you're running an earlier version, use the 
pc_array_shuffle( )
function shown in 
Example 4-4
.  
Example 4-4. pc_array_shuffle( )  
function pc_array_shuffle($array) { 
$i = count($array); 
while(--$i) { 
$j = mt_rand(0, $i); 
if ($i != $j) { 
// swap elements 
$tmp = $array[$j]; 
$array[$j] = $array[$i]; 
$array[$i] = $tmp; 
return $array; 
Here's an example: 
$cards = range(1,52); // deal out 52 "cards" 
$cards = pc_array_shuffle($cards); 
4.21.3 Discussion 
There's already a 
shuffle( )
function in PHP to shuffle arrays, but as of PHP 4.2.2, it 
doesn't do its job correctly. The built-in shuffling algorithm tends to favor certain permutations 
more than others. Elements end up looking randomized, but since each element doesn't have 
the same chance of ending up in each position, it's not a true shuffle. This is fixed in PHP 4.3.  
pc_array_shuffle( )
, known as the Fisher-Yates shuffle, equally distributes the elements 
throughout the array. Use it if you run a version of PHP earlier than 4.3. Unlike 
shuffle( )
this function returns the scrambled array instead of modifying it in-place. It also requires a 
tightly packed array with integer keys.  
4.21.4 See Also 
Recipe 4.22
for a function that simulates shuffling a deck of cards; documentation on 
shuffle( )
at http://www.php.net/shuffle
Recipe 4.22 Shuffling a Deck of Cards 
4.22.1 Problem 
You want to shuffle a deck of cards and deal them out.  
4.22.2 Solution 
VB.NET PDF Library SDK to view, edit, convert, process PDF file
Capable of adding PDF file navigation features to your VB.NET program. and load PDF from other file formats; merge, append, and split PDF files; insert, delete
changing font size in pdf form; create pdf forms
C# PDF insert image Library: insert images into PDF in C#.net, ASP
Insert images into PDF form field. To help you solve this technical problem, we provide this C#.NET PDF image adding control, XDoc.PDF for .NET.
cannot save pdf form in reader; adding an image to a pdf form
Create a array of 52 integers, shuffle them, and map them to cards: 
$suits = array('Clubs', 'Diamonds', 'Hearts', 'Spades'); 
$cards = array('Ace', 2, 3, 4, 5, 6, 7, 8, 9, 10, 'Jack', 'Queen', 'King'); 
$deck = pc_array_shuffle(range(0, 51)); 
while (($draw = array_pop($deck)) != NULL) { 
print  $cards[$draw / 4] . ' of ' . $suits[$draw % 4] . "\n"; 
This code uses the 
pc_array_shuffle( )
function from Recipe 4.21
.  
4.22.3 Discussion 
Here, a pair of arrays, 
$suits
and 
$cards
, is created to hold the English representation of a 
card. The numbers 
0
through 
51
are randomly arranged and assigned to 
$deck
. To deal a 
card, just pop them off the top of the array, treating the array like a literal deck of cards.  
It's necessary to add the check against 
NULL
inside the 
while
, otherwise the loop terminates 
when you draw the zeroth card. If you modify the deck to contain the numbers 1 through 52, 
the mathematics of deciding which number belongs to which card becomes more complex.  
To deal multiple cards at once, call 
array_slice( )
:  
array_slice($deck, $cards * -1); 
4.22.4 See Also 
Recipe 4.21
for a function that randomizes an array; documentation on 
array_slice( )
at 
http://www.php.net/array-slice
.  
Recipe 4.23 Removing Duplicate Elements from an Array 
4.23.1 Problem 
You want to eliminate duplicates from an array.  
4.23.2 Solution 
If the array is already complete, use 
array_unique( )
, which returns a new array that 
contains no duplicate values:  
$unique = array_unique($array); 
If you create the array while processing results, here is a technique for numerical arrays:  
foreach ($_REQUEST['fruits'] as $fruit) { 
if (!in_array($array, $fruit)) { $array[ ] = $fruit; } 
C# PDF Page Insert Library: insert pages into PDF file in C#.net
such as how to merge PDF document files by C# code PDF document pages and how to split PDF document in APIs, C# programmers are capable of adding and inserting
best way to make pdf forms; adding text to pdf form
C# Create PDF Library SDK to convert PDF from other file formats
Create fillable PDF document with fields. you can also protect created PDF file by adding digital signature Create PDF Document from Existing Files Using C#.
add fillable fields to pdf; edit pdf form
Here's one for associative arrays:  
foreach ($_REQUEST['fruits'] as $fruit) { 
$array[$fruit] = $fruit; 
4.23.3 Discussion 
Once processing is completed, 
array_unique( )
is the best way to eliminate duplicates. 
But, if you're inside a loop, you can eliminate the duplicate entries from appearing by checking 
if they're already in the array.  
An even faster method than using 
in_array( )
is to create a hybrid array in which the key 
and the value for each element are the same. This eliminates the linear check of 
in_array( 
)
but still allows you to take advantage of the array family of functions that operate over the 
values of an array instead of the keys.  
In fact, it's faster to use the associative array method and then call 
array_values( )
on the 
result (or, for that matter, 
array_keys( )
, but 
array_values( )
is slightly faster) than to 
create a numeric array directly with the overhead of 
in_array( )
 
4.23.4 See Also 
Documentation on 
array_unique( )
at http://www.php.net/array-unique
.  
Recipe 4.24 Finding the Union, Intersection, or Difference of Two Arrays 
4.24.1 Problem 
You have a pair of arrays, and you want to find their union (all the elements), intersection 
(elements in both, not just one), or difference (in one but not both).  
4.24.2 Solution 
To compute the union: 
$union = array_unique(array_merge($a, $b)); 
To compute the intersection: 
$intersection = array_intersection($a, $b); 
To find the simple difference:  
$difference = array_diff($a, $b); 
C# PDF Library SDK to view, edit, convert, process PDF file for C#
Capable of adding PDF file navigation features to your C# merge, append, and split PDF files; insert, delete to insert, delete and update PDF form fields in C#
cannot save pdf form; change font size pdf fillable form
VB.NET PDF File & Page Process Library SDK for vb.net, ASP.NET
add it into the original PDF document to form a complete detailed guidance on creating, loading, merge and splitting PDF pages and Files, adding a page
changing font size in pdf form field; change font size in pdf fillable form
And for the symmetric difference:  
$difference = array_merge(array_diff($a, $b), array_diff($b, $a)); 
4.24.3 Discussion 
Many necessary components for these calculations are built into PHP, it's just a matter of 
combining them in the proper sequence.  
To find the union, you merge the two arrays to create one giant array with all values. But, 
array_merge( )
allows duplicate values when merging two numeric arrays, so you call 
array_unique( )
to filter them out. This can leave gaps between entries because 
array_unique( )
doesn't compact the array. It isn't a problem, however, as 
foreach
and 
each( )
handle sparsely filled arrays without a hitch.  
The function to calculate the intersection is simply named 
array_intersection( )
and 
requires no additional work on your part.  
The 
array_diff( )
function returns an array containing all the unique elements in 
$old
that aren't in 
$new
. This is known as the simple difference:  
$old = array('To', 'be', 'or', 'not', 'to', 'be'); 
$new = array('To', 'be', 'or', 'whatever'); 
$difference = array_diff($old, $new); 
Array 
( 
[3] => not 
[4] => to 
) 
The resulting array, 
$difference
contains 
'not'
and 
'to'
, because 
array_diff( )
is 
case-sensitive. It doesn't contain 
'whatever'
because it doesn't appear in 
$old
.  
To get a reverse difference, or in other words, to find the unique elements in 
$new
that are 
lacking in 
$old
, flip the arguments:  
$old = array('To', 'be', 'or', 'not', 'to', 'be'); 
$new = array('To', 'be', 'or', 'whatever'); 
$reverse_diff = array_diff($new, $old); 
Array 
( 
[3] => whatever 
) 
The 
$reverse_diff
array contains only 
'whatever'
.  
If you want to apply a function or other filter to 
array_diff( )
, roll your own diffing 
algorithm:  
C# PDF File & Page Process Library SDK for C#.net, ASP.NET, MVC
to PDF; VB.NET Form: extract value from fields; Form Process. Data: Read, Extract Field Data. Data: Auto Fill Provides you with examples for adding an (empty) page
allow saving of pdf form; pdf add signature field
C# PDF insert text Library: insert text into PDF content in C#.net
text character and text string to PDF files using online text to PDF page using .NET XDoc.PDF component in Supports adding text to PDF in preview without adobe
best program to create pdf forms; adding text to a pdf form
// implement case-insensitive diffing; diff -i 
$seen = array( ); 
foreach ($new as $n) { 
$seen[strtolower($n)]++; 
foreach ($old as $o) { 
$o = strtolower($o); 
if (!$seen[$o]) { $diff[$o] = $o; } 
The first 
foreach
builds an associative array lookup table. You then loop through 
$old
and, if 
you can't find an entry in our lookup, add the element to 
$diff
.  
It can be a little faster to combine 
array_diff( )
with 
array_map( )
:  
$diff = array_diff(array_map('strtolower', $old), array_map('strtolower', 
$new)); 
The symmetric difference is what's in 
$a
, but not 
$b
, and what's in 
$b
, but not 
$a
:  
$difference = array_merge(array_diff($a, $b), array_diff($b, $a)); 
Once stated, the algorithm is straightforward. You call 
array_diff( )
twice and find the two 
differences. Then you merge them together into one array. There's no need to call 
array_unique( )
, since you've intentionally constructed these arrays to have nothing in 
common.  
4.24.4 See Also 
Documentation on 
array_unique( )
at http://www.php.net/array-unique
array_intersect( )
at http://www.php.net/array-intersect
array_diff( )
at 
http://www.php.net/array-diff
array_merge( )
at http://www.php.net/array-merge
, and 
array_map( )
at http://www.php.net/array-map
.  
Recipe 4.25 Finding All Element Combinations of an Array 
4.25.1 Problem 
You want to find all combinations of sets containing some or all of the elements in an array, 
also called the power set.  
4.25.2 Solution 
Use the 
pc_array_power_set( )
function shown in Example 4-5
.  
Example 4-5. pc_array_power_set( )  
C# PDF Digital Signature Library: add, remove, update PDF digital
to PDF; VB.NET Form: extract value from fields; Form Process. Data: Read, Extract Field Data. Data: Auto Fill Security of Your PDF File by Adding Digital Signatures
add text field pdf; can reader edit pdf forms
C# PDF Password Library: add, remove, edit PDF file password in C#
Following are examples for adding password to a plain PDF passwordSetting.IsAnnot = true; // Allow to fill form. IsAssemble = true; // Add password to PDF file
change font in pdf form field; adding images to pdf forms
function pc_array_power_set($array) { 
// initialize by adding the empty set 
$results = array(array( )); 
foreach ($array as $element) 
foreach ($results as $combination) 
array_push($results, array_merge(array($element), 
$combination)); 
return $results; 
This returns an array of arrays holding every combination of elements, including the empty 
set. For example:  
$set = array('A', 'B', 'C'); 
$power_set = pc_array_power_set($set); 
$power_set
contains eight arrays: 
array( ); 
array('A'); 
array('B'); 
array('C'); 
array('A', 'B'); 
array('A', 'C'); 
array('B', 'C'); 
array('A', 'B', 'C'); 
4.25.3 Discussion 
First, you include the empty set, 
{}
, in the results. After all, one potential combination of a 
set is to take no elements from it.  
The rest of this function relies on the nature of combinations and PHP's implementation of 
foreach
. Each new element added to the array increases the number of combinations. The 
new combinations are all the old combinations alongside the new element; a two-element 
array containing 
A
and 
B
generates four possible combinations: 
{}
{A}
{B}
, and 
{A,
B}
Adding 
C
to this set keeps the four previous combinations but also adds four new 
combinations: 
{C}
{A,
C}
{B,
C}
, and 
{A,
B,
C}
.  
Therefore, the outer 
foreach
loop moves through every element of the list; the inner 
foreach
loops through every previous combination created by earlier elements. This is the 
tricky bit; you need to know exactly how PHP behaves during a 
foreach
.  
The 
array_merge( )
function combines the element with the earlier combinations. Note, 
however, the 
$results
array added to the new array with 
array_push()
is the one that's 
cycled through in the 
foreach
. Normally, adding entries to 
$results
causes an infinite loop, 
but not in PHP, because PHP operates over a copy of the original list. But, when you pop back 
up a level to the outer loop, and reexecute the 
foreach
with the next 
$element
, it's reset. 
So, you can operate directly on 
$results
in place and use it as a stack to hold your 
combinations. By keeping everything as arrays, you're given far more flexibility when it comes 
to printing out or further subdividing the combinations at a later time.  
To remove the empty set, replace the opening line of: 
// initialize by adding the empty set 
$results = array(array( )); 
with: 
// initialize by adding the first element 
$results = array(array(array_pop($array))); 
Since a one-element array has only one combination — itself — popping off an element is 
identical to making the first pass through the loop. The double 
foreach
statements don't 
know they're really starting their processing with the second element in the array.  
To print the results with tabs between elements inside the combination and returns between 
each combination, use the following:  
$array = array('Adam', 'Bret', 'Ceff', 'Dave'); 
foreach (pc_array_power_set($array) as $combination) { 
print join("\t", $combination) . "\n"; 
Here's how to print only three-element sized combinations:  
foreach (pc_array_power_set($set) as $combination) { 
if (3 == count($combination)) { 
print join("\t", $combination) . "\n"; 
Iterating over a large set of elements takes a long time. A set of 
n
elements generates 2
n+1
sets. In other words, as 
n
grows by 1, the number of elements doubles.  
4.25.4 See Also 
Recipe 4.26
for a function that finds all permutation of an array. 
Recipe 4.26 Finding All Permutations of an Array 
4.26.1 Problem 
You have an array of elements and want to compute all the different ways they can be 
ordered.  
4.26.2 Solution 
Use one of the two permutation algorithms discussed next. 
4.26.3 Discussion 
The 
pc_permute()
function shown in Example 4-6
is a PHP modification of a basic recursive 
function.  
Example 4-6. pc_permute( )  
function pc_permute($items, $perms = array( )) { 
if (empty($items)) {  
print join(' ', $perms) . "\n"; 
 else { 
for ($i = count($items) - 1; $i >= 0; --$i) { 
$newitems = $items; 
$newperms = $perms; 
list($foo) = array_splice($newitems, $i, 1); 
array_unshift($newperms, $foo); 
pc_permute($newitems, $newperms); 
For example: 
pc_permute(split(' ', 'she sells seashells')); 
she sells seashells 
she seashells sells 
sells she seashells 
sells seashells she 
seashells she sells 
seashells sells she 
However, while this recursion is elegant, it's inefficient, because it's making copies all over the 
place. Also, it's not easy to modify the function to return the values instead of printing them 
out without resorting to a global variable.  
The 
pc_next_permutation( )
function shown in Example 4-7
, however, is a little slicker. It 
combines an idea of Mark-Jason Dominus from Perl Cookbook by Tom Christianson and 
Nathan Torkington (O'Reilly) with an algorithm from Edsger Dijkstra's classic text A Discipline 
of Programming (Prentice-Hall).  
Example 4-7. pc_next_permutation( )  
function pc_next_permutation($p, $size) { 
// slide down the array looking for where we're smaller than the next 
guy 
for ($i = $size - 1; $p[$i] >= $p[$i+1]; --$i) { } 
// if this doesn't occur, we've finished our permutations 
// the array is reversed: (1, 2, 3, 4) => (4, 3, 2, 1) 
if ($i == -1) { return false; } 
// slide down the array looking for a bigger number than what we found 
before 
for ($j = $size; $p[$j] <= $p[$i]; --$j) { } 
// swap them 
$tmp = $p[$i]; $p[$i] = $p[$j]; $p[$j] = $tmp; 
// now reverse the elements in between by swapping the ends 
for (++$i, $j = $size; $i < $j; ++$i, --$j) { 
$tmp = $p[$i]; $p[$i] = $p[$j]; $p[$j] = $tmp; 
return $p; 
$set = split(' ', 'she sells seashells'); // like array('she', 'sells', 
'seashells') 
$size = count($set) - 1; 
$perm = range(0, $size); 
$j = 0; 
do {  
foreach ($perm as $i) { $perms[$j][] = $set[$i]; } 
} while ($perm = pc_next_permutation($perm, $size) and ++$j); 
foreach ($perms as $p) { 
print join(' ', $p) . "\n"; 
Dominus's idea is that instead of manipulating the array itself, you can create permutations of 
integers. You then map the repositioned integers back onto the elements of the array to 
calculate the true permutation — a nifty idea.  
However, this technique still has some shortcomings. Most importantly, to us as PHP 
programmers, it frequently pops, pushes, and splices arrays, something that's very Perl-
centric. Next, when calculating the permutation of integers, it goes through a series of steps 
to come up with each permutation; because it doesn't remember previous permutations, it 
therefore begins each time from the original permutation. Why redo work if you can help it?  
Dijkstra's algorithm solves this by taking a permutation of a series of integers and returning 
the next largest permutation. The code is optimized based upon that assumption. By starting 
with the smallest pattern (which is just the integers in ascending order) and working your way 
upwards, you can scroll through all permutations one at a time, by plugging the previous 
permutation back into the function to get the next one. There are hardly any swaps, even in 
the final swap loop in which you flip the tail.  
There's a side benefit. Dominus's recipe needs the total number of permutations for a given 
pattern. Since this is the factorial of the number of elements in the set, that's a potentially 
expensive calculation, even with memoization. Instead of computing that number, it's faster to 
return 
false
from 
pc_next_permutation( )
when you notice that 
$i
==
-1
. When that 
Documents you may be interested
Documents you may be interested