pdf viewer in asp net c# : Add photo to pdf file software application dll windows azure winforms web forms postgresql-9.4-A479-part3004

Chapter 31. libpq - C Library
*
If the user supplies a parameter on the command line, use it as the
*
conninfo string; otherwise default to setting dbname=postgres and using
*
environment variables or defaults for all other connection parameters.
*
/
if (argc > 1)
conninfo = argv[1];
else
conninfo = "dbname = postgres";
/
*
Make a connection to the database
*
/
conn = PQconnectdb(conninfo);
/
*
Check to see that the backend connection was successfully made
*
/
if (PQstatus(conn) != CONNECTION_OK)
{
fprintf(stderr, "Connection to database failed: %s",
PQerrorMessage(conn));
exit_nicely(conn);
}
/
*
*
Our test case here involves using a cursor, for which we must be inside
*
a transaction block.
We could do the whole thing with a single
*
PQexec() of "select
*
from pg_database", but that’s too trivial to make
*
a good example.
*
/
/
*
Start a transaction block
*
/
res = PQexec(conn, "BEGIN");
if (PQresultStatus(res) != PGRES_COMMAND_OK)
{
fprintf(stderr, "BEGIN command failed: %s", PQerrorMessage(conn));
PQclear(res);
exit_nicely(conn);
}
/
*
*
Should PQclear PGresult whenever it is no longer needed to avoid memory
*
leaks
*
/
PQclear(res);
/
*
*
Fetch rows from pg_database, the system catalog of databases
*
/
res = PQexec(conn, "DECLARE myportal CURSOR FOR select
*
from pg_database");
if (PQresultStatus(res) != PGRES_COMMAND_OK)
{
fprintf(stderr, "DECLARE CURSOR failed: %s", PQerrorMessage(conn));
PQclear(res);
exit_nicely(conn);
}
PQclear(res);
res = PQexec(conn, "FETCH ALL in myportal");
if (PQresultStatus(res) != PGRES_TUPLES_OK)
{
718
Add photo to pdf file - 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
adding an image to a pdf file; add png to pdf preview
Add photo to pdf file - 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 photo to pdf reader; how to add a jpg to a pdf
Chapter 31. libpq - C Library
fprintf(stderr, "FETCH ALL failed: %s", PQerrorMessage(conn));
PQclear(res);
exit_nicely(conn);
}
/
*
first, print out the attribute names
*
/
nFields = PQnfields(res);
for (i = 0; i < nFields; i++)
printf("%-15s", PQfname(res, i));
printf("\n\n");
/
*
next, print out the rows
*
/
for (i = 0; i < PQntuples(res); i++)
{
for (j = 0; j < nFields; j++)
printf("%-15s", PQgetvalue(res, i, j));
printf("\n");
}
PQclear(res);
/
*
close the portal ... we don’t bother to check for errors ...
*
/
res = PQexec(conn, "CLOSE myportal");
PQclear(res);
/
*
end the transaction
*
/
res = PQexec(conn, "END");
PQclear(res);
/
*
close the connection to the database and cleanup
*
/
PQfinish(conn);
return 0;
}
Example 31-2. libpq Example Program 2
/
*
*
testlibpq2.c
*
Test of the asynchronous notification interface
*
*
Start this program, then from psql in another window do
*
NOTIFY TBL2;
*
Repeat four times to get this program to exit.
*
*
Or, if you want to get fancy, try this:
*
populate a database with the following commands
*
(provided in src/test/examples/testlibpq2.sql):
*
*
CREATE TABLE TBL1 (i int4);
*
*
CREATE TABLE TBL2 (i int4);
*
*
CREATE RULE r1 AS ON INSERT TO TBL1 DO
*
(INSERT INTO TBL2 VALUES (new.i); NOTIFY TBL2);
*
*
and do this four times:
719
VB.NET Image: Mark Photo, Image & Document with Polygon Annotation
What's more, if coupled with .NET PDF document imaging add-on, the VB.NET annotator SDK can easily generate polygon annotation on PDF file without using
add picture to pdf in preview; add signature image to pdf acrobat
VB.NET Image: Image Cropping SDK to Cut Out Image, Picture and
NET image cropper control SDK; VB.NET image cropping method to crop picture / photo; you can adjust the size of created cropped image file, add antique effect
how to add image to pdf; pdf insert image
Chapter 31. libpq - C Library
*
*
INSERT INTO TBL1 VALUES (10);
*
/
#ifdef WIN32
#include <windows.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <sys/time.h>
#include <sys/types.h>
#include "libpq-fe.h"
static void
exit_nicely(PGconn
*
conn)
{
PQfinish(conn);
exit(1);
}
int
main(int argc, char
**
argv)
{
const char
*
conninfo;
PGconn
*
conn;
PGresult
*
res;
PGnotify
*
notify;
int
nnotifies;
/
*
*
If the user supplies a parameter on the command line, use it as the
*
conninfo string; otherwise default to setting dbname=postgres and using
*
environment variables or defaults for all other connection parameters.
*
/
if (argc > 1)
conninfo = argv[1];
else
conninfo = "dbname = postgres";
/
*
Make a connection to the database
*
/
conn = PQconnectdb(conninfo);
/
*
Check to see that the backend connection was successfully made
*
/
if (PQstatus(conn) != CONNECTION_OK)
{
fprintf(stderr, "Connection to database failed: %s",
PQerrorMessage(conn));
exit_nicely(conn);
}
/
*
*
Issue LISTEN command to enable notifications from the rule’s NOTIFY.
*
/
res = PQexec(conn, "LISTEN TBL2");
if (PQresultStatus(res) != PGRES_COMMAND_OK)
720
VB.NET Image: Image Scaling SDK to Scale Picture / Photo
about this VB.NET image scaling control add-on, we developer can only scale one image / picture / photo at a able to scale most common image file formats, like
adding an image to a pdf form; add a picture to a pdf
VB.NET Image: Image Resizer Control SDK to Resize Picture & Photo
VB.NET Image & Photo Resizing Overview. The practical this VB.NET image resizer control add-on, can powerful & profession imaging controls, PDF document, image
add photo to pdf online; add image to pdf preview
Chapter 31. libpq - C Library
{
fprintf(stderr, "LISTEN command failed: %s", PQerrorMessage(conn));
PQclear(res);
exit_nicely(conn);
}
/
*
*
should PQclear PGresult whenever it is no longer needed to avoid memory
*
leaks
*
/
PQclear(res);
/
*
Quit after four notifies are received.
*
/
nnotifies = 0;
while (nnotifies < 4)
{
/
*
*
Sleep until something happens on the connection.
We use select(2)
*
to wait for input, but you could also use poll() or similar
*
facilities.
*
/
int
sock;
fd_set
input_mask;
sock = PQsocket(conn);
if (sock < 0)
break;
/
*
shouldn’t happen
*
/
FD_ZERO(&input_mask);
FD_SET(sock, &input_mask);
if (select(sock + 1, &input_mask, NULL, NULL, NULL) < 0)
{
fprintf(stderr, "select() failed: %s\n", strerror(errno));
exit_nicely(conn);
}
/
*
Now check for input
*
/
PQconsumeInput(conn);
while ((notify = PQnotifies(conn)) != NULL)
{
fprintf(stderr,
"ASYNC NOTIFY of ’%s’ received from backend PID %d\n",
notify->relname, notify->be_pid);
PQfreemem(notify);
nnotifies++;
}
}
fprintf(stderr, "Done.\n");
/
*
close the connection to the database and cleanup
*
/
PQfinish(conn);
return 0;
}
721
VB.NET Image: How to Save Image & Print Image Using VB.NET
NET programmers save & print image / photo / picture from NET method and demo code to add image printing printing multi-page document files, like PDF and Word
add a picture to a pdf document; add image to pdf java
C# Image: How to Add Antique & Vintage Effect to Image, Photo
this C#.NET antique effect creating control add-on is widely used in modern photo editors, which powerful & profession imaging controls, PDF document, tiff
add image to pdf acrobat; how to add a jpeg to a pdf
Chapter 31. libpq - C Library
Example 31-3. libpq Example Program 3
/
*
*
testlibpq3.c
*
Test out-of-line parameters and binary I/O.
*
*
Before running this, populate a database with the following commands
*
(provided in src/test/examples/testlibpq3.sql):
*
*
CREATE TABLE test1 (i int4, t text, b bytea);
*
*
INSERT INTO test1 values (1, ’joe”s place’, ’\\000\\001\\002\\003\\004’);
*
INSERT INTO test1 values (2, ’ho there’, ’\\004\\003\\002\\001\\000’);
*
*
The expected output is:
*
*
tuple 0: got
*
i = (4 bytes) 1
*
t = (11 bytes) ’joe’s place’
*
b = (5 bytes) \000\001\002\003\004
*
*
tuple 0: got
*
i = (4 bytes) 2
*
t = (8 bytes) ’ho there’
*
b = (5 bytes) \004\003\002\001\000
*
/
#ifdef WIN32
#include <windows.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <sys/types.h>
#include "libpq-fe.h"
/
*
for ntohl/htonl
*
/
#include <netinet/in.h>
#include <arpa/inet.h>
static void
exit_nicely(PGconn
*
conn)
{
PQfinish(conn);
exit(1);
}
/
*
*
This function prints a query result that is a binary-format fetch from
*
a table defined as in the comment above.
We split it out because the
*
main() function uses it twice.
*
/
static void
show_binary_results(PGresult
*
res)
722
VB.NET Image: Tutorial for Flipping Image Using Our .NET Image SDK
version of .NET imaging SDK and add the following becomes a mirror reflection of the photo on the powerful & profession imaging controls, PDF document, tiff
adding jpg to pdf; add image pdf
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 image to pdf form; add jpg to pdf file
Chapter 31. libpq - C Library
{
int
i,
j;
int
i_fnum,
t_fnum,
b_fnum;
/
*
Use PQfnumber to avoid assumptions about field order in result
*
/
i_fnum = PQfnumber(res, "i");
t_fnum = PQfnumber(res, "t");
b_fnum = PQfnumber(res, "b");
for (i = 0; i < PQntuples(res); i++)
{
char
*
iptr;
char
*
tptr;
char
*
bptr;
int
blen;
int
ival;
/
*
Get the field values (we ignore possibility they are null!)
*
/
iptr = PQgetvalue(res, i, i_fnum);
tptr = PQgetvalue(res, i, t_fnum);
bptr = PQgetvalue(res, i, b_fnum);
/
*
*
The binary representation of INT4 is in network byte order, which
*
we’d better coerce to the local byte order.
*
/
ival = ntohl(
*
((uint32_t
*
) iptr));
/
*
*
The binary representation of TEXT is, well, text, and since libpq
*
was nice enough to append a zero byte to it, it’ll work just fine
*
as a C string.
*
*
The binary representation of BYTEA is a bunch of bytes, which could
*
include embedded nulls so we have to pay attention to field length.
*
/
blen = PQgetlength(res, i, b_fnum);
printf("tuple %d: got\n", i);
printf(" i = (%d bytes) %d\n",
PQgetlength(res, i, i_fnum), ival);
printf(" t = (%d bytes) ’%s’\n",
PQgetlength(res, i, t_fnum), tptr);
printf(" b = (%d bytes) ", blen);
for (j = 0; j < blen; j++)
printf("\\%03o", bptr[j]);
printf("\n\n");
}
}
int
main(int argc, char
**
argv)
{
const char
*
conninfo;
723
Chapter 31. libpq - C Library
PGconn
*
conn;
PGresult
*
res;
const char
*
paramValues[1];
int
paramLengths[1];
int
paramFormats[1];
uint32_t
binaryIntVal;
/
*
*
If the user supplies a parameter on the command line, use it as the
*
conninfo string; otherwise default to setting dbname=postgres and using
*
environment variables or defaults for all other connection parameters.
*
/
if (argc > 1)
conninfo = argv[1];
else
conninfo = "dbname = postgres";
/
*
Make a connection to the database
*
/
conn = PQconnectdb(conninfo);
/
*
Check to see that the backend connection was successfully made
*
/
if (PQstatus(conn) != CONNECTION_OK)
{
fprintf(stderr, "Connection to database failed: %s",
PQerrorMessage(conn));
exit_nicely(conn);
}
/
*
*
The point of this program is to illustrate use of PQexecParams() with
*
out-of-line parameters, as well as binary transmission of data.
*
*
This first example transmits the parameters as text, but receives the
*
results in binary format.
By using out-of-line parameters we can avoid
*
a lot of tedious mucking about with quoting and escaping, even though
*
the data is text.
Notice how we don’t have to do anything special with
*
the quote mark in the parameter value.
*
/
/
*
Here is our out-of-line parameter value
*
/
paramValues[0] = "joe’s place";
res = PQexecParams(conn,
"SELECT
*
FROM test1 WHERE t = $1",
1,
/
*
one param
*
/
NULL,
/
*
let the backend deduce param type
*
/
paramValues,
NULL,
/
*
don’t need param lengths since text
*
/
NULL,
/
*
default to all text params
*
/
1);
/
*
ask for binary results
*
/
if (PQresultStatus(res) != PGRES_TUPLES_OK)
{
fprintf(stderr, "SELECT failed: %s", PQerrorMessage(conn));
PQclear(res);
exit_nicely(conn);
}
724
Chapter 31. libpq - C Library
show_binary_results(res);
PQclear(res);
/
*
*
In this second example we transmit an integer parameter in binary form,
*
and again retrieve the results in binary form.
*
*
Although we tell PQexecParams we are letting the backend deduce
*
parameter type, we really force the decision by casting the parameter
*
symbol in the query text.
This is a good safety measure when sending
*
binary parameters.
*
/
/
*
Convert integer value "2" to network byte order
*
/
binaryIntVal = htonl((uint32_t) 2);
/
*
Set up parameter arrays for PQexecParams
*
/
paramValues[0] = (char
*
) &binaryIntVal;
paramLengths[0] = sizeof(binaryIntVal);
paramFormats[0] = 1;
/
*
binary
*
/
res = PQexecParams(conn,
"SELECT
*
FROM test1 WHERE i = $1::int4",
1,
/
*
one param
*
/
NULL,
/
*
let the backend deduce param type
*
/
paramValues,
paramLengths,
paramFormats,
1);
/
*
ask for binary results
*
/
if (PQresultStatus(res) != PGRES_TUPLES_OK)
{
fprintf(stderr, "SELECT failed: %s", PQerrorMessage(conn));
PQclear(res);
exit_nicely(conn);
}
show_binary_results(res);
PQclear(res);
/
*
close the connection to the database and cleanup
*
/
PQfinish(conn);
return 0;
}
725
Chapter 32. Large Objects
PostgreSQL has a large object facility, which provides stream-style access to user data that is stored
in a special large-object structure. Streaming access is useful when working with data values that are
too large to manipulate conveniently as a whole.
This chapter describes the implementation and the programming and query language interfaces to
PostgreSQL large object data. We use the libpq C library for the examples in this chapter, but most
programminginterfaces nativetoPostgreSQL supportequivalent functionality. Other interfaces might
use the large object interface internally to provide generic support for large values. This is not de-
scribed here.
32.1. Introduction
All large objects are stored in a single system table named
pg_largeobject
. Each large object
also has an entry in the system table
pg_largeobject_metadata
.Large objects can be created,
modified, and deletedusing a read/write API that is similar to standard operations on files.
PostgreSQL alsosupports a storage system called “TOAST”, which automaticallystores values larger
thana singledatabase page intoa secondarystorage area per table. This makes thelargeobject facility
partially obsolete. One remaining advantage of the large object facility is that it allows values up to 4
TB in size, whereas TOASTed fields can be at most 1 GB. Also, reading and updating portions of a
large object can be done efficiently, while most operations on a TOASTed field will read or write the
whole value as a unit.
32.2. Implementation Features
The large object implementation breaks large objects up into “chunks” and stores the chunks in rows
in the database. A B-tree index guarantees fast searches for the correct chunk number when doing
random access reads and writes.
The chunks stored for a large object do not have to be contiguous. For example, if an application
opens a new large object, seeks to offset 1000000, and writes a few bytes there, this does not result in
allocation of 1000000 bytes worth of storage; onlyof chunks covering the range of data bytes actually
written. A read operation will, however, read out zeroes for any unallocated locations preceding the
last existing chunk. This corresponds to the common behavior of “sparsely allocated” files in Unix
file systems.
As of PostgreSQL 9.0, large objects have an owner and a set of access permissions, which can be
managed using GRANT and REVOKE.
SELECT
privileges are required to read a large object, and
UPDATE
privileges are required to write or truncate it. Only the large object’s owner (or a database
superuser) can delete, comment on, or change the owner of a large object. To adjust this behavior for
compatibility with prior releases, see the lo_compat_privileges run-time parameter.
32.3. Client Interfaces
This section describes the facilities that PostgreSQL’s libpq client interface library provides for ac-
cessing large objects. The PostgreSQL large object interface is modeled after the Unix file-system
interface, with analogues of
open
,
read
,
write
,
lseek
,etc.
726
Chapter 32. Large Objects
All large object manipulationusing these functions must take place within an SQL transaction block,
since large object file descriptors are only valid for the duration of a transaction.
If an error occurs while executing any one of these functions, the function will return an otherwise-
impossible value, typically 0 or -1. A message describing the error is stored in the connection object
and can be retrieved with
PQerrorMessage
.
Client applications that use these functions should include the header file
libpq/libpq-fs.h
and
link with the libpq library.
32.3.1. Creating a Large Object
The function
Oid lo_creat(PGconn
*
conn, int mode);
creates a new large object. The return value is the OID that was assigned to the new large object, or
InvalidOid
(zero) onfailure.
mode
is unused and ignored as of PostgreSQL 8.1;however, for back-
ward compatibility with earlier releases it is best to set it to
INV_READ
,
INV_WRITE
,or
INV_READ |
INV_WRITE
.(These symbolic constants are defined inthe header file
libpq/libpq-fs.h
.)
An example:
inv_oid = lo_creat(conn, INV_READ|INV_WRITE);
The function
Oid lo_create(PGconn
*
conn, Oid lobjId);
also creates a new large object. The OID to be assigned can be specified by
lobjId
;if so, failure
occurs if that OID is already in use for some large object. If
lobjId
is
InvalidOid
(zero) then
lo_create
assigns an unused OID (this is the same behavior as
lo_creat
). The return value is the
OID that was assignedto the new large object, or
InvalidOid
(zero) on failure.
lo_create
is new as of PostgreSQL 8.1;if this function is run againstan older server version, itwill
fail and return
InvalidOid
.
An example:
inv_oid = lo_create(conn, desired_oid);
32.3.2. Importing a Large Object
To import an operating system file as a large object, call
Oid lo_import(PGconn
*
conn, const char
*
filename);
filename
specifies the operating system name of the file to be imported as a large object. The return
value is the OID that was assigned to the new large object, or
InvalidOid
(zero) on failure. Note
that the file is read by the client interface library, not by the server; so it must exist in the client file
system and be readable by the client application.
The function
727
Documents you may be interested
Documents you may be interested