pdf viewer c# : Add photo to pdf in preview software Library project winforms asp.net web page UWP OReilly_-_POSIX_Programmers_Guide15-part1948

gid_t      *grpptr;           /* pointer to the list of 
* active groups 
*/ 
int           i; 
gid_t      gid; 
#ifndef NGROUPS_MAX      /* If NGROUPSMAX is not defined */ 
#define NGROUPS_MAX 0    /* assume that it is zero */ 
#endif 
#if NGROUPSMAX < 1 
/* This printf is compiled if NGROUPS_MAX is less than 1 */ 
(void)printf("Supplementary group IDs are" 
"not supported\n"); 
#else 
/* 
* This is compiled if there is at least one 
* supp
lementary group. 
*/ 
ngroups = getgroups(0,(gidt *)NULL);   /* get the number 
* of supplementary group 
* IDs in use 
*/ 
if (ngroups == -1) 
(void)perror("getgroups() failed"); 
return; 
if (ngroups == 0) 
(void
)printf("No supplementary groups are" 
"available\n"); 
return; 
grpptr = calloc(ngroups,sizeof(gid_t)); 
/* Allocate an arra
y with 
* ngroups members each big 
* enough for a gid_t. 
* grpptr points to the 
* array. 
*/ 
if (getgroups(ngroups,grpptr) == -1) /* Get group IDs */ 
* It is likely that the system will support multiple groups. The Federal Information Processing
Standard (FIPS) version of POSIX requires that multiple groups be supported. This means than any
vendor who would like to sell to the United States Government m
ust support multiple groups.
However, a fully portable program must tolerate any legal environment.
P
age 129
(void)perror("getgroups() failed"); 
return; 
(void)printf("The following supplementary groups are 
Add photo to pdf in preview - insert images into PDF in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Sample C# code to add image, picture, logo or digital photo into PDF document page using PDF page editor control
acrobat add image to pdf; how to add a jpeg to a pdf
Add photo to pdf in preview - VB.NET PDF insert image library: insert images into PDF in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Guide VB.NET Programmers How to Add Images in PDF Document
add picture to pdf in preview; add image to pdf online
" available:\n"); 
for (i=l; i <= ngroups; i++)      /* Loop over all IDs */ 
gid = *grpptr++;             /* Load an ID into gid and 
* update grpptr to point 
* to the next ID. 
*/ 
(void)printf("\t");          /* Print a tab */ 
printgroup(gid);             /* Then the group ID */ 
(void)printf("\n");    
/* Then a newline */ 
#endif 
return; 
Now, let's write the 
main()
function. The first thing we need is the login name; the
getlogin()
function returns a pointer to the name. To get the terminal pathname, we pass
ctermid()
a pointer to a character array and it fills in the pathname.
The user and group IDs are obtained with 
getuid()
geteuid()
getgid()
, and
getegid()
. These functions are always successful and there is no return value to indicate an
error. On very old UNIX systems, 
uids
and 
pids
were 8-bits. Most System V and BSD
syste
ms use 16 bits for IDs. POSIX allows 32-bit numbers as vendors expand their systems to
32-bits. A typical 1991 operating system defines a 
pid_t
as a long and restricts the values to
be less than 65535. This practice avoids breaking old applications. Your p
rograms should
assume that 
pids
and 
gids
may be 32 bits.
All that is left is to add the required 
#includes
and 
#defines
in the front and the
complete program is shown in Example 7-1:
EXAMPLE 7-1. 
printinfo.c
#define _POSIX SOURCE 1 
#include <stdio.h> 
#include <limits.h> 
#include <unistd.h> 
#include <sys/types.h> 
#include <grp.h> 
#include <pwd.h> 
/* 
* Print out the group number in de
cimal followed by 
* (groupname) 
*/ 
void printgroup(gid_t groupid) 
unsigned long     lt;      /* temp */ 
struct group *grpptr;      /* pointer to group info */ 
P
age 130
lt = (unsigned  long)groupid;  /* make the gid a long */ 
(void)printf(" %lu(",lt);      /* print it */ 
C# PDF remove image library: remove, delete images from PDF in C#.
Support removing vector image, graphic picture, digital photo, scanned signature, logo, etc. Remove Image from PDF Page Using C#. Add necessary references:
add an image to a pdf in preview; add signature image to pdf
VB.NET PDF remove image library: remove, delete images from PDF in
Support removing vector image, graphic picture, digital photo, scanned signature, logo, etc. VB.NET: Remove Image from PDF Page. Add necessary references:
add picture to pdf file; add photo to pdf in preview
grpptr = getgrgid(groupid);    /* get group structure */ 
if (grpptr == NULL)            /* print question 
marks if 
* group name is unknown 
*/ 
(void)printf("??????)"); 
return; 
(void)printf("%
s)",grpptr->gr_name);     /* print group name */ 
return; 
/* 
* Print out the user ID in decimal followed by 
* (username) 
*/ 
void printuser(uid_t userid) 
unsigned long       l
t;             /* temp */ 
struct passwd *pwptr;               /* pointer to user info */ 
lt = (unsigned long)userid;    /* make the uid a long */ 
(void)printf(" %lu(",lt);      /* print the number */ 
pwptr
= getpwuid(userid);      /* get the information */ 
if (pwptr == NULL)             /* print question marks if 
* user ID is not known 
*/ 
(void)printf("??????)"); 
return; 
(void)printf("%s)",pwptr->pw_name); 
return; 
void printallgroups() 
int           ngroups;           
/* number of active groups */ 
gid_t      *grpptr;                 /* pointer to the list of 
* active groups 
*/ 
int           i; 
gid_t      gid; 
#ifndef NGROUPS_MAX 
#define NGROUPS_MAX 0 
#endif 
#if NGROUPS_MAX < 1 
(void)printf("Supplementary group IDs are 
"not supported\n"); 
#else 
ngroups = g
etgroups(0,(gid_t *)NULL);     /* get the number 
* of supplementary
group 
* IDs in use 
*/ 
VB.NET PDF copy, paste image library: copy, paste, cut PDF images
to copy, paste and cut vector image, graphic picture, digital photo, scanned signature VB.NET DLLs: Copy, Paste, Cut Image in PDF Page. Add necessary references:
how to add image to pdf acrobat; how to add image to pdf file
if (ngroups == -1) 
P
age 131
(void)perror("getgroups()  failed"); 
return; 
if (ngroups == 0) 
(void)printf("No supplementary groups are  
"available\n"); 
return; 
grpptr = (gid_t *)calloc(ngroups,sizeof(gid_t)); 
if (getgroups(ngroups,grpptr) == -1) 
(void)perror("getgroups() failed"); 
return; 
(void)printf("The following supplementary groups are  
"available:\n"); 
for (i=l; i <= ngroups; i++) 
gid = *g
rpptr++; 
(void)printf("\t"); 
printgroup(gid); 
{void)printf("\n"); 
#endif 
return; 
int main() 
uid_t     uid; 
gid_t     
gid; 
char      *login; 
char      termid[L_ctermid]; 
login = getlogin(); 
if (login == NULL) 
(void)printf("Login name is not known\n"); 
else 
(void)printf("Login name is '%s'\n",login); 
(void)ctermid(termid); 
(void)printf("Terminal pathname is '%s'\n",termid); 
uid = getuid(); 
(void)
printf("Real UID is"); 
printuser(uid); 
uid = geteuid(); 
(void)printf(" and effective UID is"); 
printuser(uid); 
gid = getgid(); 
(void)printf("\nReal group ID is"); 
pr
intgroup(gid); 
gid = getegid(); 
(void)printf(" and effective group ID is "); 
printgroup(gid); 
(void)printf("\n");  
P
age 132
printallgroups(); 
return(O); 
}
System Identification
POSIX provides the 
uname()
function to give us some minimal information about the system
you are using. The function is defined as:
int uname(struct utsname *name);
and fills in the 
struct utsname
passed by the caller. If 
uname()
is successful, a
nonnegative value is returned. Upon failure, 
-1
is returned.
The 
struct utsname
is defined in the header file 
<sys/utsname.h>
as a set of
null-terminated character arrays. The structure contains the following members:
Member Name
Description
sysname
Name of this operating system.
nodename
Name of this node within a network. Note: There is no guarantee that this name can
be used for anything. The name returned in 
nodename
may (or may not) be useful
for network use.
relea
se
Current release level of this implementation.
version
Current version level of this release.
While POSIX provides the release level and version, it never defines them.
machine
Name of the hardware type the system is running on.
As with most POSIX structures, these members can be in any order and other members can be
present.
A typical use is:
#include <sys/utsname.h> 
struct utsname unamebuf; 
. . . 
if (uname(&unamebuf) == -1) 
(void)printf("The system name is unknown\n"); 
else 
(void)printf("This system is called '%s'\n", 
unamebuf.sysname); 
. . . 
The format of each member is implementation-defined. POSIX does not specify the format of
any of the members. There is no way a fully-portable program can interpret the information.
P
age 133
Date and Time
One important part of the environment is the current date and time. Programs have lots of
reasons to obtain and manipulate this information. The Standard C/POSIX environment
provides a set of utilities for dealing with time.
The time() Function
The 
time()
function returns the number of seconds since midnight January 1, 1970
Coordinated Universal Time.
*
The function is defined as:
time_t time(time_t *tloc);
It returns the time and stores it into 
tloc
. The call 
time(NULL)
merely returns the time and
no value is stored.
The type 
time_t
is defined in 
<time.h>
. While it is typically an 
unsigned long
, it
can be a 
double
or 
long double
.
The localtime() and gmtime() Function
s
The 
time()
function is really all you need. Given the number of seconds since a known time,
it is possible to compute any time component you need. However, to prevent every programmer
from reinventing the wheel, some handy library functions are provided. T
wo functions,
gmtime()
and 
localtime()
, convert a 
time_t
to a 
struct tm
. The 
gmtime()
function returns 
UTC
, while 
localtime()
returns the local time. The 
struct tm
contains
the following members:
Type
Name
Range
Description
int
tm_sec
0 - 61
**
Seconds after the minute.
int
tm_min
0 - 59
Minutes after the hour.
int
tm_hour
0 - 23
Hours after midnight.
int
tm_mday
1 - 31
Day of the month.
int
tm_mon
0- 11
Months since January.
int
tm_year
Years sinc
e 1900.
int
tm_wday
0- 6
Days since Sunday.
int
tm_yday
0- 365
Days since January 1st.
* Coordinated Universal Time is the new name for Greenwich Mean Time. The standard abbreviation
is UTC because if England was going to get ''universal time'' at least the name was going to be in
French. Such are the politics of standards. 
** The range for 
tm_sec
allows for two leap seconds.
P
age 134
Type
Name
Range
Description
int
tm_isdst
Daylight Savings Time flag:
>0 if DST is in effect
=0 if DST is not in effect
<0 if the information is not available
These members can appear in any order and there may be additional members. 
The time-conversion functions are defined as:
struct tm *localtime(const time_t *timer);
and:
struct tm *gmtime(const time_t *timer);
The argument is a pointer to a 
time_t
. The 
localtime()
and 
gmtime()
functions return
a pointer to a structure containing time information. The next call to 
localtime()
or
gmtime()
may (or may not) overwrite this structure. If you want to keep it around, co
py it
somewhere safe.
A simple example of 
localtime()
is:
time_t        now; 
struct tm     *t; 
now = time((time_t *)NULL); 
t = localtime(&now); 
(void)printf("It is now %2d:%2d:%2d on %d/%d/%d\n", 
t->tm_hour, t->tm_min, t->tm_sec, 
t->tm_mon+l, t->tm_mday, t->tm_year); 
(void)printf("Day of week: %d\n",t->tm_wday+l); 
(void)printf("Day of year: %d\n",t->tm_yday+l); 
if (t->tm_isdst > 0) 
(void)printf("Daylight savings time
\n"); 
else 
(void)printf("Standard time\n"); 
Notice that you need to add "1" to the month before printing it. The value in 
tm_mon
is in the
range 0 to 11.
The 
gmtime()
function is exactly the same as 
localtime()
, except that the time is
expressed in Coordinated Universal Time (UTC). Standard C allows this function to return
NULL
if the time zone is unknown, but POSIX Section 8.1.1 requires that the time zone
be
known.
If your program needs to be ported to non-POSIX and non-UNIX systems, 
localtime()
is
more portable than 
gmtime()
.
P
age 135
The mktime() Function
The 
mktime()
function is the inverse of 
localtime()
. It converts the structure that
Standard C calls a 
broken-down time
to
a value of type 
time_t
. The function is defined as:
time_t mktime(struct tm *timeptr);
The 
mktime()
function ignores the original values of 
tm_wday
and 
tm_yday
. On
successful completion, the values of 
tm_wday
and 
tm_yday
are updated and the other
values are set to reflect the specified calendar time. This can be used to compute the day of th
e
week a given date falls on.
The 
mktime()
function may or may not fail on all invalid times, for example, February 29,
1995. It is best not to give 
mktime()
invalid input.
The strftime() Function
To print the current date or time, it is possible to use 
localtime()
and format a string. The
strftime()
function, similar to 
sprintf()
, performs this task. It converts a 
struct
tm
to a string under the guidance of a format string. The 
strftime()
function 
is defined as:
size_t strftime(char *s, size_t maxsize, 
const char *format, const struct tm *timeptr); 
where 
s
points to an array of 
maxsize
bytes. 
format
is a format-control string and
timeptr
is a pointer to a structure returned by 
localtime()
or 
gmtime()
.
Characters are copied from the format string to the array pointed to by 
s
. A conversion
specifier consists of a 
%
followed by a character that determines the substitution. The list of
conversion specifiers is 
strftime()
conversion specifiers:
Specifier
Replaced by the locale's
%a
Abbreviated weekday name.
%A
Full weekday name.
%b
Abbreviated month name.
%B
Full month name.
%c
Date and time.
%d
Day of the month as a decimal number (01-31).
%H
Hour as a decimal number (00-23).
%I
Hour as a decima
l number (01-12).
%j
Day of the year as a decimal number (001-366).
P
age 136
Specifier
Replaced by the locale's
%m
Month as a decimal number (01-12).
%M
Minute as a decimal number (00-59).
%p
Equivalent of 
AM/PM
for use with a 12-hour clock.
%S
Second as a decimal number (00-61).
%U
Week of the year as a decimal number (00-53) usin
g the first Sunday as day 1
of week 1.
%w
Weekday as a decimal number (0[Sunday]-6).
%w
Week of the year as a decimal number (00-53) using the first Monday as day 1
of week 1.
%x
Date.
%X
Time.
%y
Year without a century (00-99).
%Y
Year with century (e.g.,
1991).
%z
Time zone.
%%
%
Here are some examples of format strings and possible output in the POSIX locale:
Format:
Result:
%A,%B,%d,%Y
Saturday April 13, 1991
%a %d-%b-%y
Sat 13-Apr-91
%m/%d/%y
04/13/90
%Y%m%d
19900413
%H:%M
15:25
%H:%M:%S
15:25:30
%c
Sat Apr 13 15:25:30 1991
%X on %x
3:25 PM on 4/13/91
The formats 
%c,%X
, and 
%x
produce strings for the current locale. They offer an easy way to
produce a program that can be moved from country to country.
* The locales are covered in Chapter 10, 
Porting to Far-off Lands. 
The information in the example is
the default POSIX result.
P
age 137
The asctime() and ctime() Functions
There are a couple of functions that are shorthand for popular routines.
The function 
asctime(timeptr)
returns a pointer to a string of the form:
Sat Apr 13 15:25:30 1991\n\0
The function 
ctime(timer)
is equivalent to:
asctime( localtime(timer))
The difftime() Function
The C standard defines the 
difftime()
function as:
double difftime(time t timel, time_t time2);
returning the number of seconds between 
time1
and 
time2
expressed as a double. Since
POSIX defines the units of 
time_t
as seconds since midnight January 1, 1970 Coordinated
Universal Time, this function is not needed. A simple subtraction with a cast gives
the same
answer. For example, in:
time_t     start,end; 
double     diffl, diff2; 
. . .        
diffl = difftime(end,start); 
diff2 = end - start; 
diff1
will be equal to 
diff2
. Use the 
difftime()
function if your code might be ported
to systems which use Standard C but do not conform to POSIX.
The clockO and timesO Functions
Documents you may be interested
Documents you may be interested