devexpress asp.net mvc pdf viewer : Extract pdf pages reader software control dll winforms web page html web forms AppleShellScripting-201414-part634

Closes the output to that pipe and sends another message to tail. This shows that a new instance of
tail
processed this command (because otherwise, the previous line would not have been printed).
Writes two lines to the file
/tmp/testfile-awk
.If this file exists, it is overwritten. By using the redirect
operator, the script demonstrates that additional output (after the first redirect) is appended to the file
until the file is closed (regardless of whether you use the redirect or concatenation operator).
BEGIN {
print "This is a test." | "/usr/bin/tail -n 1";
print "This is only a test." | "/usr/bin/tail -n 1";
close("/usr/bin/tail -n 1");
print "Yikes!" | "/usr/bin/tail -n 1";
print "This is another test" > "/tmp/testfile-awk"
print "This is yet another test entirely" > "/tmp/testfile-awk"
}
Note:  In AWK scripts (unlike in shell scripts), paths for redirects and pipes are considered strings.
Thus, paths should be surrounded by double quotes so that they do not resemble regular expressions.
In a similar way, you can read input from a file using the redirection or pipe operator by combining the operator
with the
getline
function. The
getline
reads a record from an outside file or pipe under programmatic
control.
When you call
getline
,the
awk
interpreter sets the variable
$0
to the next record from the specified file. The
function returns
1
if a record was read,
0
if the end of file was reached, or
-1
if an error occurred (for example,
if the file does not exist).
The following AWK script reads a record from
/tmp/testfile-awk
,and then reads a record from the output
of the
echo
command:
BEGIN {
getline < "/tmp/testfile-awk";
print "The record was " $0;
"/bin/echo 'This is a test line'" | getline
print "The second record was " $0;
}
How AWK-ward
File Input and Output
2014-03-10   |   Copyright © 2003, 2014 Apple Inc. All Rights Reserved.
141
Extract pdf pages reader - software control dll:C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Easy to Use C# Code to Extract PDF Pages, Copy Pages from One PDF File and Paste into Others
www.rasteredge.com
Extract pdf pages reader - software control dll:VB.NET PDF Page Extract Library: copy, paste, cut PDF pages in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Detailed VB.NET Guide for Extracting Pages from Microsoft PDF Doc
www.rasteredge.com
Warning:  The
getline
function overwrites any value of
$0
read from the input file. Be sure you don’t
need it again before you call this function.
Integrating AWK Scripts with Shell Scripts
It is often useful to combine AWK scripts with shell scripts to perform various tasks. This creates two challenges:
getting information into an AWK script (beyond the bulk data read via standard input) and getting information
back out in a form that is usable by the shell. These topics are covered in the sections that follow.
Accepting Arguments from Shell Scripts
Much like the similarly named C variables, the
ARGV
variable is an array of arguments passed to an AWK script,
and the
ARGC
variable contains the number of arguments in
ARGV
.These variables are demonstrated in Listing
9-1.
Listing 9-1
Test script for arguments (
23_arguments.awk
)
{
for (i=0; i<ARGC; i++) {
print "ARGUMENT " i " is " ARGV[i];
}
}
Save this script as
23_arguments.awk
and then issue the following commands:
echo > myinputfile
awk -f 23_arguments.awk myinputfile
You should see the following output:
ARGUMENT 0 is awk
ARGUMENT 1 is myinputfile
How AWK-ward
Integrating AWK Scripts with Shell Scripts
2014-03-10   |   Copyright © 2003, 2014 Apple Inc. All Rights Reserved.
142
software control dll:C# PDF Page Insert Library: insert pages into PDF file in C#.net
Page: Insert PDF Pages. |. Home ›› XDoc.PDF ›› C# PDF: Insert PDF Page. Add and Insert Multiple PDF Pages to PDF Document Using C#.
www.rasteredge.com
software control dll:C# PDF Text Extract Library: extract text content from PDF file in
inputFilePath); PDFTextMgr textMgr = PDFTextHandler.ExportPDFTextManager(doc); // Extract text content C# example code for text extraction from all PDF pages.
www.rasteredge.com
Note:  All arguments passed to AWK scripts must be the names of files that actually exist. This cannot
be used for passing arbitrary data.
Reading Environment Variables
As in shell scripts, AWK scripts have access to environment variables. The AWK interpreter stores a copy of its
environment in the
ENVIRON
associative array, indexed by the name of the variable.
Note:  It is not possible to set the environment passed to programs that an AWK script executes
except by using the
env
tool as an intermediary.
For example, to print the value of the
PATH
environment variable, you would write code like the following:
{
print "PATH IS: " ENVIRON["PATH"];
}
Extracting Output from AWK Scripts
When writing shell scripts, one of the trickiest things to get right is handling the output of tools that your
scripts call. Fortunately, the tabular data format commonly used by AWK scripts is also easy to read in shell
scripts. The UNIX command-line environment provides the
cut
tool, which is specifically designed to extract
tabular data from lines of text.
Consider the following AWK script. It reads a file containing five tab-delimited data fields, then outputs three
of those fields (also in a tab-delimited format).
BEGIN {
RS="\n";
FS="\t";
}
{
print $1 "\t" $3 "\t" $5;
}
You can parse its output as shown in Listing 9-2.
How AWK-ward
Integrating AWK Scripts with Shell Scripts
2014-03-10   |   Copyright © 2003, 2014 Apple Inc. All Rights Reserved.
143
software control dll:C# PDF Image Extract Library: Select, copy, paste PDF images in C#
Image: Extract Image from PDF. |. Home ›› XDoc.PDF ›› C# PDF: Extract PDF Image. How to C#: Extract Image from PDF Document.
www.rasteredge.com
software control dll:VB.NET PDF Text Extract Library: extract text content from PDF
PDF ›› VB.NET PDF: Extract PDF Text. VB.NET PDF - Extract Text from PDF Using VB. How to Extract Text from PDF with VB.NET Sample Codes in .NET Application.
www.rasteredge.com
Listing 9-2
Parsing the output of an AWK script
#!/bin/sh
# Store the output in a variable.
OUTPUT="$(awk 'BEGIN { \
RS="\n"; \
FS="\t"; \
} \
{ \
print $1 "\t" $3 "\t" $5; \
}' tab_delimited_file)"
# Set the field separator to a newline so that
# the "for" statement below will put one line
# at a time in the "LINE" variable.
IFS="
"
# Parse and print the records.
RECORD=1
for LINE in $OUTPUT ; do
# By default, cut uses tab as its delimiter,
# so these commands take the first,
# second, and third tab-delimited fields
# from a single line of input, respectively.
FIELD_1="$(echo "$LINE" | cut -f 1)"
FIELD_2="$(echo "$LINE" | cut -f 2)"
FIELD_3="$(echo "$LINE" | cut -f 3)"
echo "RECORD $RECORD"
echo "
FIELD 1: $FIELD_1"
echo "
FIELD 2: $FIELD_2"
echo "
FIELD 3: $FIELD_3"
echo
How AWK-ward
Integrating AWK Scripts with Shell Scripts
2014-03-10   |   Copyright © 2003, 2014 Apple Inc. All Rights Reserved.
144
software control dll:VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
Page: Delete Existing PDF Pages. |. Home ›› XDoc.PDF ›› VB.NET PDF: Delete PDF Page. How to VB.NET: Delete Consecutive Pages from PDF.
www.rasteredge.com
software control dll:VB.NET PDF Image Extract Library: Select, copy, paste PDF images
Image: Extract Image from PDF. |. Home ›› XDoc.PDF ›› VB.NET PDF: Extract PDF Image. VB.NET PDF - Extract Image from PDF Document in VB.NET.
www.rasteredge.com
RECORD="$(expr $RECORD '+' 1)"
done
Another useful technique when dealing with complex result sets is to write different pieces of data to different
files. Parsing several simple files can sometimes be easier than parsing a single complex result set, particularly
when parsing it in a shell script.
How AWK-ward
Integrating AWK Scripts with Shell Scripts
2014-03-10   |   Copyright © 2003, 2014 Apple Inc. All Rights Reserved.
145
software control dll:C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
Page: Delete Existing PDF Pages. Provide C# Users with Mature .NET PDF Document Manipulating Library for Deleting PDF Pages in C#.
www.rasteredge.com
software control dll:VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
Page: Insert PDF Pages. |. Home ›› XDoc.PDF ›› VB.NET PDF: Insert PDF Page. Add and Insert Multiple PDF Pages to PDF Document Using VB.
www.rasteredge.com
For the most part, scripts that run on other UNIX-based or UNIX-like platforms (Linux, for example) also run
correctly on OS X and vice versa. There are differences, however.
In addition to finding subtle variations in the file system hierarchy and the behavior of common command-line
tools, you will also find different tools and technologies for device I/O and for adding and removing users and
groups.
Bourne Shell Version
OS X provides BASH as its Bourne shell implementation. When executed as
/bin/sh
,it should be fully
compatible with other implementations. However, occasionally differences may arise. The same is true of other
operating systems that use BASH or ZSH as their Bourne shell implementation.
For maximum compatibility, you should carefully avoid using any BASH-specific extensions in shell scripts. If
you cannot avoid BASH extensions, you should explicitly make the script execute in BASH by changing the
first line to the following:
#!/bin/bash
You should use a similar first line for scripts written using ZSH extensions.
2014-03-10   |   Copyright © 2003, 2014 Apple Inc. All Rights Reserved.
146
Designing Scripts for Cross-Platform Deployment
Compatibility Note:  For detailed lists of places where BASH and ZSH differ from pure Bourne shell
variants, seehttp://www.gnu.org/software/bash/manual/bashref.html#Major-Differences-From-The-
Bourne-Shelland http://zsh.dotsrc.org/FAQ/zshfaq02.html.
For more information about BASH and ZSH, see the manual pages for
bash
and
zsh
.
For maximum cross-platform compatibility, you should test your code using several shells, including
dash
and/or
ash
.For moreinformation about DASH, seehttp://gondor.apana.org.au/~herbert/dash/.
Cross-Platform Line Endings
Different operating systems use different characters to indicate the end of each line in text files. This can cause
strange and unusual behavior if you aren’t expecting it:
Command-line tools in OS X (and other UNIX or Linux variants) use UNIX-style line endings. This means
that each line in a text file ends with a newline character (character
10
/
0xA
,often abbreviated LF).
Many older Mac applications use "Mac-style” line endings. This means that each line in a text file ends with
acarriage return character (character
13
/
0xD
,often abbreviated CR).
When processed with command-line utilities in UNIX or Linux variants, files with legacy Mac-style line
endings show up as a single line on the screen; as each line printed to thescreen, it overwrites the previous
line. This is because UNIX and Linux move the cursor to the left edge of the screen when they encounter
acarriage return, but do not move the cursor down a line.
Windows applications and many network services use Windows-style line endings. This means that each
line in a text file ends with both a carriage return and a line feed (character
13
/
0xD
followed by character
10
/
0xA
,often abbreviated CR/LF or CRLF).
When processed with command-line utilities in UNIX or Linux variants, content with Windows-style line
endings looks right, but may behave in unexpected ways due to the extra carriage return at the end of
each line. For example, the extra carriage return can perturb the splitting behavior in awk, can cause
patterns that use the end-of-line anchor in regular expressions to fail, and so on.
Occasionally, you may also encounter a file that ends with a newline followed by a carriage return (the
reverse of Windows line endings, abbreviated LF/CR or LFCR).
When processed with command-line utilities in UNIXor Linux variants, as with Windows-style line endings,
everything will appear right, but you will get strange behavior, including field splitting problems,
misbehavior of patterns containing the start-of-line anchor in regular expressions, and so on.
It is generally straightforward to detect the line ending type of a text file and read it correctly. The following
code snippet demonstrates one way:
Designing Scripts for Cross-Platform Deployment
Cross-Platform Line Endings
2014-03-10   |   Copyright © 2003, 2014 Apple Inc. All Rights Reserved.
147
Listing 10-1 ConvertinglineendingstoUNIX-stylenewlines
TYPE="$(file "$1" | sed 's/.*with //' | sed 's/ .*//')"
if [ "$TYPE" = "CR" ] ; then
DATA="$(tr '\r' '\n' < "$1")"
else
# Most versions of the "file" command can't detect
# LFCR line endings, so do this even if the file
# appears to have UNIX line endings.
DATA="$(tr -d '\r' < "$1")"
fi
Converting between these formats is also relatively easy once you have determined that you need to do so.
Listing 10-2 Convertingbetweenlineendingformats
# Convert from legacy Mac-style CR line endings
# to UNIX-style LF line endings for use with
# command-line tools
tr '\r' '\n' < mac_text_file > unix_text_file
# Convert from UNIX-style LF to legacy Mac-style CR
# line endings
tr '\n' '\r' < unix_text_file > mac_text_file
# Convert from Windows-style CR/LF line endings (or
# LF/CR line endings) to UNIX line endings
tr -d '\r' < windows_text_file > unix_text_file
# Convert from UNIX-style LF line endings to
# Windows-style CR/LF line endings
CR="$(printf "\r")"
sed "s/$/$CR/" < unix_text_file > windows_text_file
Designing Scripts for Cross-Platform Deployment
Cross-Platform Line Endings
2014-03-10   |   Copyright © 2003, 2014 Apple Inc. All Rights Reserved.
148
Working with Device I/O
OS X uses the I/O Kit for device drivers. Unlike most UNIX-based and UNIX-like operating systems, most devices
are not exposed through device files in
/dev
.(Disks and serial ports are notable exceptions.)
In general, device I/O must be written in a C-derived language using the functionality in the I/O Kit framework.
However, if you are writing your own device driver, you can expose a device file in
/dev
if desired.
Note:  Devices cannot be accessed through
/dev/mem
in OS X.
See IOKit Fundamentals for general information, Accessing Hardware From Applications to learn how to write
an application to access device drivers from user space, or Kernel Programming Guide to learn how to support
device files and the
ioctl
system call in the kernel.
File System Hierarchy
Anumber of files are in different places in OS X than in other operating systems. For more information about
the OS X layout, read File System Overview. For more information about other operating systems, read the
following:
hier
—The OS X manual page hier(7) describes the OS X file-system hierarchy.
http://www.FreeBSD.org/cgi/man.cgi?query=hier&sektion=7—TheFreeBSDmanualpage
hier(7)
describes the FreeBSD file-system hierarchy. It is similar to the hierarchy used by most BSD-based operating
systems. (No, the spelling of section is not a typo.)
http://www.pathname.com/fhs/—TheFilesystemHierarchyStandarddescribesthefilesystemhierarchy
used by Linux-based operating systems, and is derived from the hierarchy used by AT&T UNIX-based
operating systems.
http://h20000.www2.hp.com/bc/docs/support/SupportManual/c02255645/c02255645.pdf—Thisappendix
from the HP-UX documentation describes the hierarchy of AT&T UNIX-based operating systems.
http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?top-
ic=/com.ibm.aix.baseadmn/doc/baseadmndita/fs_tree_org.htm—ThispageintheIBMpSeriesandAIX
Information Center describes the hierarchy of AIX.
Designing Scripts for Cross-Platform Deployment
Working with Device I/O
2014-03-10   |   Copyright © 2003, 2014 Apple Inc. All Rights Reserved.
149
System Administration Tasks
This section provides an overview of a few common system administration tasks. Completecoverage of system
administration tasks is beyond the scope of this document. For a more thorough treatment, read Introduction
to Command-Line Administration athttp://manuals.info.apple.com/en_US/IntroCommandLine_v10.6.pdf.
Managing Users and Groups
In the default configuration of OS X, users and groups are not stored in a password file on disk. Thus, you
cannot modify the password file directly.
OS X supports a number of data stores for user and groupinformation, including LDAP and flat files. Depending
on the configuration, users could potentially be stored locally or remotely and accessed through any of these
methods. Thus, to add users and groups through shell scripts in a general way, you must use the Directory
Service command-line utility,
dscl
(or the Directory Service API upon which that utility is based).
Because the
dscl
tool is specific to OS X, if you are writing scripts for cross-platform deployment, you should
test for its existence and fall back to traditional password file modification if it is not there. To learn how to do
this, readTheifStatement (page 46).
To learn more about managing users and groups from the command line, read Introduction to Command-Line
Administration athttp://manuals.info.apple.com/en_US/IntroCommandLine_v10.6.pdf.
To learn more about Directory Service records at a high level, read Open Directory Programming Guide. To
learn how to use the Directory Service command line utility to alter those records, read the manual page for
dscl
.
To seehow to manually add a new user from the command line, read the Additional Features chapter of Porting
UNIX/Linux Applications to OS X . For scripts to help you add new users and groups programmatically, seeUser
and Group Management (page 312)inthe Starting Points (page 273)chapterofthisdocument.
Access Control List (ACL) Management
Some UNIX-based and UNIX-like operating systems provide
setfacl
,
chacl
,or
acledit
/
aclget
/
aclput
for setting file and directory ACLs. OS X does not. Instead, OS X provides file ACL modification through the
chmod
command.
Regrettably, there is no standardized syntax for getting and setting ACLs on the command line (nor even a
standard set of supported rights across operating systems). Currently, the only way to portably handle ACLs
is to avoid them entirely or to require your users to write an OS-specific plug-in.
If you must use ACLs in a cross-platform script, you must special-case the code on a per-OS basis. The easiest
way to do this is to use the output of the
uname
command. (See the
uname
manual page for more information.)
Designing Scripts for Cross-Platform Deployment
System Administration Tasks
2014-03-10   |   Copyright © 2003, 2014 Apple Inc. All Rights Reserved.
150
Documents you may be interested
Documents you may be interested