convert byte array to pdf mvc : Adding pdf to html page application Library cloud windows .net winforms class make9-part2021

Chapter 7: Conditional Parts of Makefiles
81
Substitution and Analysis], page 84). Thisisusefulwhentouchisnotenoughtomakea
file appear up to date.
The findstring function determines whether one string appears as a substring of an-
other. If you want to test for the ‘-t’ flag, use ‘t’ as the first string and the value of
MAKEFLAGS as the other.
For example, here is how to arrange to use ‘ranlib -t’ to finish marking an archive file
up to date:
archive.a: ...
ifneq (,$(findstring t,$(MAKEFLAGS)))
+touch archive.a
+ranlib -t archive.a
else
ranlib archive.a
endif
The ‘+’ prefix marks those recipe lines as “recursive” so that they will be executed despite
use of the ‘-t’ flag. SeeSection5.7[RecursiveUseofmake],page50.
Adding pdf to html page - application Library cloud:C# PDF Convert to HTML SDK: Convert PDF to html files in C#.net, ASP.NET MVC, WinForms, WPF application
How to Convert PDF to HTML Webpage with C# PDF Conversion SDK
www.rasteredge.com
Adding pdf to html page - application Library cloud:VB.NET PDF Convert to HTML SDK: Convert PDF to html files in vb.net, ASP.NET MVC, WinForms, WPF application
PDF to HTML Webpage Converter SDK for VB.NET PDF to HTML Conversion
www.rasteredge.com
application Library cloud:VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
Support adding PDF page number. Offer PDF page break inserting function. DLLs for Adding Page into PDF Document in VB.NET Class. Add necessary references:
www.rasteredge.com
application Library cloud:C# PDF Page Insert Library: insert pages into PDF file in C#.net
By using reliable APIs, C# programmers are capable of adding and inserting (empty) PDF page or pages from various file formats, such as PDF, Tiff, Word, Excel
www.rasteredge.com
Chapter 8: Functions for Transforming Text
83
8 Functions for Transforming Text
Functions allow you to do text processing in the makefile to compute the files to operate
on or the commands to use in recipes. You use a function in a function call, where you
give the name of the function and some text (the arguments) for the function to operate
on. The result of the function’s processing is substituted into the makefile at the point of
the call, just as a variable might be substituted.
8.1 Function Call Syntax
Afunction call resembles a variable reference. It can appear anywhere a variable reference
can appear, and it is expanded using the same rules as variable references. A function call
looks like this:
$(function arguments)
or like this:
${function arguments}
Here function is a function name; one of a short list of names that are part of make. You
can also essentially create your own functions by using the call built-in function.
The arguments are the arguments of the function. They are separated from the function
name by one or more spaces or tabs, and if there is more than one argument, then they are
separated by commas. Such whitespace and commas are not part of an argument’s value.
The delimiters which you use to surround the function call, whether parentheses or braces,
can appear in an argument only in matching pairs; the other kind of delimiters may appear
singly. If the arguments themselves contain other function calls or variable references, it is
wisest to use the same kind of delimiters for all the references; write ‘$(subst a,b,$(x))’,
not ‘$(subst a,b,${x})’. This is because it is clearer, and because only one type of delim-
iter is matched to find the end of the reference.
The text written for each argument is processedby substitutionof variables and function
calls to produce the argument value, which is the text on which the function acts. The
substitution is done in the order in which the arguments appear.
Commas and unmatched parentheses or braces cannot appear in the text of an argument
as written; leading spaces cannot appear in the text of the first argument as written. These
characters can be put intothe argument value by variablesubstitution. First define variables
comma and space whose values are isolated comma and space characters, then substitute
these variables where such characters are wanted, like this:
comma:= ,
empty:=
space:= $(empty) $(empty)
foo:= a b c
bar:= $(subst $(space),$(comma),$(foo))
# bar is now ‘a,b,c’.
Here the subst function replaces each space with a comma, through the value of foo, and
substitutes the result.
application Library cloud:VB.NET PDF Library SDK to view, edit, convert, process PDF file
Perform annotation capabilities to mark, draw, and visualize objects on PDF document page. Capable of adding PDF file navigation features to your VB.NET program
www.rasteredge.com
application Library cloud:C# PDF Library SDK to view, edit, convert, process PDF file for C#
Capable of adding PDF file navigation features to your C# program. Perform annotation capabilities to mark, draw, and visualize objects on PDF document page.
www.rasteredge.com
84
GNU make
8.2 Functions for String Substitution and Analysis
Here are some functions that operate on strings:
$(subst from,to,text)
Performs a textual replacement on the text text: each occurrence of from is
replaced by to. The result is substituted for the function call. For example,
$(subst ee,EE,feet on the street)
substitutes the string ‘fEEt on the strEEt’.
$(patsubst pattern,replacement,text)
Finds whitespace-separated words in text that matchpattern and replaces them
with replacement. Here pattern may contain a ‘%’ which acts as a wildcard,
matching any number of any characters within a word. If replacement also con-
tains a ‘%’, the ‘%’ is replaced by the text that matched the ‘%’ in pattern. Only
the first ‘%’ in the pattern and replacement is treated this way; any subsequent
‘%’ is unchanged.
‘%’ characters in patsubst function invocations can be quoted with preceding
backslashes (‘\’). Backslashes that would otherwise quote ‘%’ characters can be
quoted with more backslashes. Backslashes that quote ‘%’ characters or other
backslashes are removed from the pattern before it is compared file names or
has a stem substituted into it. Backslashes that are not in danger of quoting ‘%’
characters go unmolested. For example, the pattern the\%weird\\%pattern\\
has ‘the%weird\’ preceding the operative ‘%’ character, and ‘pattern\\’ fol-
lowing it. The final two backslashes are left alone because they cannot affect
any ‘%’ character.
Whitespace between words is folded into single space characters; leading and
trailing whitespace is discarded.
For example,
$(patsubst %.c,%.o,x.c.c bar.c)
produces the value ‘x.c.o bar.o’.
Substitution references (see Section6.3.1[SubstitutionReferences], page62)
are a simpler way to get the effect of the patsubst function:
$(var:pattern=replacement)
is equivalent to
$(patsubst pattern,replacement,$(var))
The second shorthand simplifies one of the most common uses of patsubst:
replacing the suffix at the end of file names.
$(var:suffix=replacement)
is equivalent to
$(patsubst %suffix,%replacement,$(var))
For example, you might have a list of object files:
objects = foo.o bar.o baz.o
To get the list of corresponding source files, you could simply write:
application Library cloud:C# PDF insert image Library: insert images into PDF in C#.net, ASP
image adding library control for PDF document, you can easily and quickly add an image, picture or logo to any position of specified PDF document file page.
www.rasteredge.com
application Library cloud:C# PDF File & Page Process Library SDK for C#.net, ASP.NET, MVC
PDF in VB.NET, VB.NET convert PDF to HTML, VB.NET convert PDF to Word Provides you with examples for adding an (empty) page to a PDF and adding empty pages
www.rasteredge.com
Chapter 8: Functions for Transforming Text
85
$(objects:.o=.c)
instead of using the general form:
$(patsubst %.o,%.c,$(objects))
$(strip string)
Removes leading and trailing whitespace from string and replaces each inter-
nal sequence of one or more whitespace characters with a single space. Thus,
‘$(strip a b c )’ results in ‘a b c’.
The function strip can be very useful when used in conjunction with condi-
tionals. When comparing something with the empty string ‘’ using ifeq or
ifneq, you usually want a string of just whitespace to match the empty string
(seeChapter7[Conditionals],page77).
Thus, the following may fail to have the desired results:
.PHONY: all
ifneq
"$(needs_made)" ""
all: $(needs_made)
else
all:;@echo ’Nothing to make!’
endif
Replacing the variable reference ‘$(needs_made)’ with the function call
‘$(strip $(needs_made))’ in the ifneq directive would make it more robust.
$(findstring find,in)
Searches in for an occurrence of find. If it occurs, the value is find; otherwise,
the value is empty. You can use this function in a conditional to test for the
presence of a specific substring in a given string. Thus, the two examples,
$(findstring a,a b c)
$(findstring a,b c)
produce the values ‘a’ and ‘’ (the empty string), respectively. SeeSection7.3
[Testing Flags], page 80,forapracticalapplicationoffindstring.
$(filter pattern...,text)
Returns allwhitespace-separatedwords in text that do matchany ofthe pattern
words, removing any words that do not match. The patterns are written using
‘%’, just like the patterns used in the patsubst function above.
The filter function can be used to separate out different types of strings (such
as file names) in a variable. For example:
sources := foo.c bar.c baz.s ugh.h
foo: $(sources)
cc $(filter %.c %.s,$(sources)) -o foo
says that foo depends of foo.c, bar.c, baz.s and ugh.h but only foo.c, bar.c
and baz.s should be specified in the command to the compiler.
$(filter-out pattern...,text)
Returns all whitespace-separated words in text that do not match any of the
pattern words, removing the words that do match one or more. This is the
exact opposite of the filter function.
application Library cloud:VB.NET PDF File & Page Process Library SDK for vb.net, ASP.NET
page modifying page, you will find detailed guidance on creating, loading, merge and splitting PDF pages and Files, adding a page into PDF document, deleting
www.rasteredge.com
application Library cloud:C# PDF insert text Library: insert text into PDF content in C#.net
C#.NET PDF SDK - Insert Text to PDF Document in C#.NET. Providing C# Demo Code for Adding and Inserting Text to PDF File Page with .NET PDF Library.
www.rasteredge.com
86
GNU make
For example, given:
objects=main1.o foo.o main2.o bar.o
mains=main1.o main2.o
the following generates a list which contains all the object files not in ‘mains’:
$(filter-out $(mains),$(objects))
$(sort list)
Sorts the words of list in lexical order, removing duplicate words. The output
is a list of words separated by single spaces. Thus,
$(sort foo bar lose)
returns the value ‘bar foo lose’.
Incidentally, since sort removes duplicate words, you can use it for this purpose
even if you don’t care about the sort order.
$(word n,text)
Returns the nth word of text. The legitimate values of n start from 1. If n is
bigger than the number of words in text, the value is empty. For example,
$(word 2, foo bar baz)
returns ‘bar’.
$(wordlist s,e,text)
Returns the list of words in text starting with word s and ending with word e
(inclusive). The legitimate values of s start from 1; e may start from 0. If s is
bigger than the number of words in text, the value is empty. If e is bigger than
the number of words in text, words up to the end of text are returned. If s is
greater than e, nothing is returned. For example,
$(wordlist 2, 3, foo bar baz)
returns ‘bar baz’.
$(words text)
Returns the number of words in text. Thus, the last word of text is
$(word $(words text),text).
$(firstword names...)
The argument names is regarded as a series of names, separated by whitespace.
The value is the first name in the series. The rest of the names are ignored.
For example,
$(firstword foo bar)
produces the result ‘foo’. Although $(firstword text) is the same as $(word
1,text), the firstword function is retained for its simplicity.
$(lastword names...)
The argument names is regarded as a series of names, separated by whitespace.
The value is the last name in the series.
For example,
$(lastword foo bar)
application Library cloud:VB.NET PDF insert text library: insert text into PDF content in vb
VB.NET PDF - Insert Text to PDF Document in VB.NET. Providing Demo Code for Adding and Inserting Text to PDF File Page in VB.NET Program.
www.rasteredge.com
application Library cloud:C# PDF Annotate Library: Draw, edit PDF annotation, markups in C#.
text comments on PDF page using C# demo code in Visual Stuodio .NET class. C#.NET: Add Text Box to PDF Document. Provide users with examples for adding text box
www.rasteredge.com
Chapter 8: Functions for Transforming Text
87
produces the result ‘bar’. Although $(lastword text) is the same as $(word
$(words text),text), the lastword function was added for its simplicity and
better performance.
Here is a realistic example of the use of subst and patsubst. Suppose that a makefile
uses the VPATH variable tospecify a list of directories that make shouldsearch for prerequisite
files (seeSection4.4.1[VPATHSearchPathfor AllPrerequisites],page25). This example
shows how to tell the C compiler to search for header files in the same list of directories.
The value of VPATH is a list of directories separated by colons, such as ‘src:../headers’.
First, the subst function is used to change the colons to spaces:
$(subst :, ,$(VPATH))
This produces ‘src ../headers’. Then patsubst is used to turn each directory name
into a ‘-I’ flag. These can be added to the value of the variable CFLAGS, which is passed
automatically to the C compiler, like this:
override CFLAGS += $(patsubst %,-I%,$(subst :, ,$(VPATH)))
The effect is to append the text ‘-Isrc -I../headers’ to the previously given value of
CFLAGS. The override directive is used so that the new value is assigned even if the
previous value of CFLAGS was specified with a command argument (see Section6.7 [The
override Directive], page 68).
8.3 Functions for File Names
Several of the built-in expansion functions relate specifically to taking apart file names or
lists of file names.
Each of the following functions performs a specific transformation on a file name. The
argument of the function is regarded as a series of file names, separated by whitespace.
(Leading and trailing whitespace is ignored.) Each file name in the series is transformed in
the same way and the results are concatenated with single spaces between them.
$(dir names...)
Extracts the directory-part of each file name in names. The directory-part of
the file name is everything up through (and including) the last slash in it. If the
file name contains no slash, the directory part is the string ‘./’. For example,
$(dir src/foo.c hacks)
produces the result ‘src/ ./’.
$(notdir names...)
Extracts all but the directory-part of each file name in names. If the file name
contains no slash, it is left unchanged. Otherwise, everything through the last
slash is removed from it.
Afile name that ends witha slashbecomes an empty string. This is unfortunate,
because it means that the result does not always have the same number of
whitespace-separated file names as the argument had; but we do not see any
other valid alternative.
For example,
$(notdir src/foo.c hacks)
produces the result ‘foo.c hacks’.
88
GNU make
$(suffix names...)
Extracts the suffix of eachfile name in names. If the file name contains a period,
the suffix is everything starting with the last period. Otherwise, the suffix is
the empty string. This frequently means that the result will be empty when
names is not, and if names contains multiple file names, the result may contain
fewer file names.
For example,
$(suffix src/foo.c src-1.0/bar.c hacks)
produces the result ‘.c .c’.
$(basename names...)
Extracts all but the suffix of each file name in names. If the file name contains
aperiod, the basename is everything starting up to (and not including) the last
period. Periods in the directory part are ignored. If there is no period, the
basename is the entire file name. For example,
$(basename src/foo.c src-1.0/bar hacks)
produces the result ‘src/foo src-1.0/bar hacks’.
$(addsuffix suffix,names...)
The argument names is regarded as a series of names, separated by whitespace;
suffix is used as a unit. The value of suffix is appended to the end of each
individual name and the resulting larger names are concatenated with single
spaces between them. For example,
$(addsuffix .c,foo bar)
produces the result ‘foo.c bar.c’.
$(addprefix prefix,names...)
The argument names is regarded as a series of names, separated by whitespace;
prefix is used as a unit. The value of prefix is prepended to the front of each
individual name and the resulting larger names are concatenated with single
spaces between them. For example,
$(addprefix src/,foo bar)
produces the result ‘src/foo src/bar’.
$(join list1,list2)
Concatenates the two arguments word by word: the two first words (one from
each argument) concatenated form the first word of the result, the two second
words form the second word of the result, and so on. So the nth word of the
result comes from the nth word of each argument. If one argument has more
words that the other, the extra words are copied unchanged into the result.
For example, ‘$(join a b,.c .o)’ produces ‘a.c b.o’.
Whitespace between the words in the lists is not preserved; it is replaced with
asingle space.
This function can merge the results of the dir and notdir functions, to produce
the original list of files which was given to those two functions.
Chapter 8: Functions for Transforming Text
89
$(wildcard pattern)
The argument pattern is a file name pattern, typically containing wildcard
characters (as in shell file name patterns). The result of wildcard is a
space-separated list of the names of existing files that match the pattern. See
Section 4.3 [Using Wildcard Characters in File Names], page 23.
$(realpath names...)
For each file name in names return the canonical absolute name. A canonical
name does not contain any . or .. components, nor any repeated path separa-
tors (/) or symlinks. In case of a failure the empty string is returned. Consult
the realpath(3) documentation for a list of possible failure causes.
$(abspath names...)
For each file name in names return an absolute name that does not contain
any . or .. components, nor any repeated path separators (/). Note that, in
contrast to realpath function, abspath does not resolve symlinks and does not
require the file names to refer to an existing file or directory. Use the wildcard
function to test for existence.
8.4 Functions for Conditionals
There are three functions that provide conditional expansion. A key aspect of these func-
tions is that not all of the arguments are expanded initially. Only those arguments which
need to be expanded, will be expanded.
$(if condition,then-part[,else-part])
The if function provides support for conditional expansion in a functional
context (as opposed to the GNU make makefile conditionals such as ifeq (see
Section 7.2 [Syntax of Conditionals], page 78).
The first argument, condition, first has all preceding and trailing whitespace
stripped, then is expanded. If it expands to any non-empty string, then the con-
dition is considered to be true. If it expands to an empty string, the condition
is considered to be false.
If the condition is true then the second argument, then-part, is evaluated and
this is used as the result of the evaluation of the entire if function.
If the condition is false then the third argument, else-part, is evaluated and this
is the result of the if function. If there is no third argument, the if function
evaluates to nothing (the empty string).
Note that only one of the then-part or the else-part will be evaluated, never
both. Thus, either can contain side-effects (such as shell function calls, etc.)
$(or condition1[,condition2[,condition3...]])
The or function provides a “short-circuiting” OR operation. Each argument
is expanded, in order. If an argument expands to a non-empty string the
processing stops and the result of the expansion is that string. If, after all
arguments are expanded, all of them are false (empty), then the result of the
expansion is the empty string.
90
GNU make
$(and condition1[,condition2[,condition3...]])
The and function provides a “short-circuiting” AND operation. Each argument
is expanded, in order. If anargument expands toanempty string the processing
stops and the result of the expansion is the empty string. If all arguments
expand to a non-empty string then the result of the expansion is the expansion
of the last argument.
8.5 The foreach Function
The foreach function is very different from other functions. It causes one piece of text to
be used repeatedly, each time with a different substitution performed on it. It resembles
the for command in the shell sh and the foreach command in the C-shell csh.
The syntax of the foreach function is:
$(foreach var,list,text)
The first two arguments, var and list, are expanded before anything else is done; note that
the last argument, text, is not expanded at the same time. Then for each word of the
expanded value of list, the variable named by the expanded value of var is set to that word,
and text is expanded. Presumably text contains references to that variable, so its expansion
will be different each time.
The result is that text is expanded as many times as there are whitespace-separated
words in list. The multiple expansions of text are concatenated, with spaces between them,
to make the result of foreach.
This simple example sets the variable ‘files’ to the list of all files in the directories in
the list ‘dirs’:
dirs := a b c d
files := $(foreach dir,$(dirs),$(wildcard $(dir)/*))
Here text is ‘$(wildcard $(dir)/*)’. The first repetition finds the value ‘a’ for dir, so
it produces the same result as ‘$(wildcard a/*)’; the second repetition produces the result
of ‘$(wildcard b/*)’; and the third, that of ‘$(wildcard c/*)’.
This example has the same result (except for setting ‘dirs’) as the following example:
files := $(wildcard a/* b/* c/* d/*)
When text is complicated, you can improve readability by giving it a name, with an
additional variable:
find_files = $(wildcard $(dir)/*)
dirs := a b c d
files := $(foreach dir,$(dirs),$(find_files))
Here we use the variable find_files this way. We use plain ‘=’ to define a recursively-
expanding variable, so that its value contains an actual function call to be re-expanded
under the control of foreach; a simply-expanded variable would not do, since wildcard
would be called only once at the time of defining find_files.
The foreach function has no permanent effect on the variable var; its value and flavor
after the foreach function call are the same as they were beforehand. The other values
which are taken from list are in effect only temporarily, during the execution of foreach.
The variable var is a simply-expanded variable during the execution of foreach. If var was
Documents you may be interested
Documents you may be interested