from small one page howto to huge articles all in one place

search text in:

Which linux distribution do you use?

poll results

Last additions:
using iotop to find disk usage hogs

using iotop to find disk usage hogs






average rating: 1.7 (82 votes) (1=very good 6=terrible)

May 25th. 2007:




why adblockers are bad

Workaround and fixes for the current Core Dump Handling vulnerability affected kernels

Workaround and fixes for the current Core Dump Handling vulnerability affected kernels






average rating: 1.3 (27 votes) (1=very good 6=terrible)

April, 26th. 2006:

You are here: manpages


Updated: libXp 1.0.3
Index Return to Main Contents


libXp - X Print Client Library  


cc [ flag... ] file...-lXp [ library... ] .nf #include <X11/extensions/Print.h>  


libXp provides public APIs to allow client applications to render to non-display devices.

When an application wishes to print, it makes a display connection to the X print server and asks to see the list of printers available with an XpGetPrinterList() request. Once the application has selected a printer, it creates and sets a print context using XpCreateContext() and XpSetContext().

The Print Context represents the embodiment of the printer selected. It is initialized by the Xprint server at XpCreateContext() time to contain a printer's default capabilities, as well as, the description of its overall capabilties, and to maintain the state of settings on the printer, the state of rendering against the printer, and the rendered output.

The Print Context affects how the DDX driver generates its page description language (PDL) and how the PDL is submitted to a spooler. The print context may also affect fonts and other elements in the dix layer of the X Print Server. The print contexts can be shared among processes. Applications can enlist the help of secondary processes to manipulate print options in the Print context rather than taking on the task directly.

Once an application has set options within the print context, it makes calls such as XpStartJob() to delineate jobs, documents, and pages within a sequence of normal X calls.

A job is a collection of documents, where each document is in turn a collection of pages. When XpEndJob() is called, the resulting PDL is either sent to a print spooler or can be retrieved by the application itself.

The developer basically has to make changes to the X application to make use of the X Print Service.

A simple X application supplemented with some of the libXp routines might look like this:

#include <X11/Xlib.h>
#include <X11/extensions/Print.h>

    Display *pdpy;
    Screen *pscreen;
    Window pwin;
    XPPrinterList plist;
    XPContext pcontext;
    int plistCnt;
    char *attrPool;
#define NPOOLTYPES 5
    XPAttributes poolType[NPOOLTYPES] = {XPJobAttr,XPDocAttr,XPPageAttr,
    int i;
    unsigned short width, height;
    XRectangle rect;
    char *printServerName = ":1";
    char *mylaser = "varos";

     * connect to the X print server
    pdpy = XOpenDisplay( printServerName );

     * see if the printer "mylaser" is available

    plist =  XpGetPrinterList (pdpy, mylaser, &plistCnt );

     * Initialize a print context representing "mylaser"

    pcontext = XpCreateContext( pdpy, plist[0].name );
    XpFreePrinterList( plist );

         * Possibly modify attributes in the print context
    for(i=0;i < NPOOLTYPES;i++) {
        if(attrPool = XpGetAttributes( pdpy, pcontext, poolType[i] )) {
            /* twiddle attributes */
              XpSetAttributes( pdpy, pcontext, poolType[i],
                               attrPool, XPAttrMerge );

     * Set a print server, then start a print job against it

    XpSetContext( pdpy, pcontext );
    XpStartJob( pdpy, XPSpool );

     * Generate the first page

    pscreen = XpGetScreenOfContext( pdpy, pcontext );
    XpGetPageDimensions( pdpy, pcontext, &width, &height,
    pwin = XCreateSimpleWindow( pdpy, RootWindowOfScreen( pscreen ),
                                rect.x, rect.y, rect.width, rect.height, 2,
                                BlackPixelOfScreen( pscreen),
                                WhitePixelOfScreen( pscreen));

    XpStartPage( pdpy, pwin );
    /* usual rendering stuff..... */
    XpEndPage( pdpy );

    XpStartPage( pdpy, pwin );
    /* some more rendering.....   */
    XpEndPage( pdpy );

     * End the print job - the final results are sent by the X print
     * server to the spooler sub system.

    XpEndJob( pdpy );
    XpDestroyContext( pdpy, pcontext );
    XCloseDisplay( pdpy );



Xprt(1), XpCreateContext(3Xp), XpDestroyContext(3Xp), XpEndJob(3Xp), XpEndPage(3Xp), XpFreePrinterList(3Xp), XpGetAttributes(3Xp), XpGetPageDimensions(3Xp), XpGetPrinterList(3Xp), XpSetAttributes(3Xp), XpSetContext(3Xp), XpStartJob(3Xp), XpStartPage(3Xp)

X Print Service Extension Library




Please read "Why adblockers are bad".

Other free services
Shorten long
URLs to short
links like
Reverse DNS lookup
Find out which hostname(s)
resolve to a
given IP or other hostnames for the server
rdf newsfeed | rss newsfeed | Atom newsfeed
- Powered by LeopardCMS - Running on Gentoo -
Copyright 2004-2013 Sascha Nitsch Unternehmensberatung UG(haftungsbeschränkt)
Valid XHTML1.1 : Valid CSS : buttonmaker
- Level Triple-A Conformance to Web Content Accessibility Guidelines 1.0 -
- Copyright and legal notices -
Time to create this page: 4.3 ms