/usr/share/doc/swi-prolog-doc/UserGuide/printing.html is in swi-prolog-doc 5.6.59-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
<HEAD>
<TITLE>Programming in XPCE/Prolog: Section 10.13</TITLE><LINK REL=home HREF="index.html">
<LINK REL=contents HREF="Contents.html">
<LINK REL=index HREF="DocIndex.html">
<LINK REL=summary HREF="summary.html">
<LINK REL=previous HREF="ugraphics.html">
<LINK REL=next HREF="libraries.html">
<STYLE type="text/css">
/* Style sheet for SWI-Prolog latex2html
*/
dd.defbody
{ margin-bottom: 1em;
}
dt.pubdef
{ background-color: #c5e1ff;
}
pre.code
{ margin-left: 1.5em;
margin-right: 1.5em;
border: 1px dotted;
padding-top: 5px;
padding-left: 5px;
padding-bottom: 5px;
background-color: #f8f8f8;
}
div.navigate
{ text-align: center;
background-color: #f0f0f0;
border: 1px dotted;
padding: 5px;
}
div.title
{ text-align: center;
padding-bottom: 1em;
font-size: 200%;
font-weight: bold;
}
div.author
{ text-align: center;
font-style: italic;
}
div.abstract
{ margin-top: 2em;
background-color: #f0f0f0;
border: 1px dotted;
padding: 5px;
margin-left: 10%; margin-right:10%;
}
div.abstract-title
{ text-align: center;
padding: 5px;
font-size: 120%;
font-weight: bold;
}
div.toc-h1
{ font-size: 200%;
font-weight: bold;
}
div.toc-h2
{ font-size: 120%;
font-weight: bold;
margin-left: 2em;
}
div.toc-h3
{ font-size: 100%;
font-weight: bold;
margin-left: 4em;
}
div.toc-h4
{ font-size: 100%;
margin-left: 6em;
}
span.sec-nr
{
}
span.sec-title
{
}
span.pred-ext
{ font-weight: bold;
}
/* Footnotes */
sup.fn { color: blue; text-decoration: underline; }
span.fn-text: { display: none; }
sup.fn span {display: none;}
sup:hover span
{ display: block !important;
position: absolute; top: auto; left: auto; width: 80%;
color: #000; background: white;
border: 2px solid;
padding: 5px; margin: 10px; z-index: 100;
font-size: smaller;
}
</STYLE>
</HEAD>
<BODY BGCOLOR="white">
<DIV class="navigate"><A class="nav" href="index.html"><IMG SRC="home.gif" BORDER=0 ALT="Home"></A>
<A class="nav" href="Contents.html"><IMG SRC="index.gif" BORDER=0 ALT="Contents"></A>
<A class="nav" href="DocIndex.html"><IMG SRC="yellow_pages.gif" BORDER=0 ALT="Index"></A>
<A class="nav" href="summary.html"><IMG SRC="info.gif" BORDER=0 ALT="Summary"></A>
<A class="nav" href="ugraphics.html"><IMG SRC="prev.gif" BORDER=0 ALT="Previous"></A>
<A class="nav" href="libraries.html"><IMG SRC="next.gif" BORDER=0 ALT="Next"></A>
</DIV>
<H2><A NAME="sec:10.13"><SPAN class="sec-nr">10.13</SPAN> <SPAN class="sec-title">Printing
from <font size=-1>XPCE</font> applications</SPAN></A></H2>
<A NAME="sec:printing"></A>
<P><A NAME="idx:printing:469"></A>You're wonderful application is
finished ... but the users want
<B>printing???</B>. What to do? A computer screen is not a set of
paper-sheets and therefore there is no trivial answer to this question.
It depends on the nature of the data that needs to be printed, and also
on the operating system used.
<P><A NAME="idx:PostScript:470"></A><B>In Unix</B> , printing is
achieved by producing a document in a format that can be understood by
the print-spooler program, normally either plain text or PostScript. If
formatted text and/or included graphics are required it is often
desirable to produce input for a formatting program, call the formatter
and send the result to the printer.
<P><B>In Windows</B> the printer is not driven by a document, but using
a series of calls on a GDI (Graphical Device Interface) representing the
printer. The good news of this is that whatever you can get on the
screen you easily get on the printer. The bad news has been explained
above: paper is not the same as your screen. It has pages, is generally
worse in colour-handling but provides a much higher resolution. The
users do not expect a series of screendumps from your applications. Most
Windows applications however are WYSIWYG and there are no established
standards for formatting applications.
<H3><A NAME="sec:10.13.1"><SPAN class="sec-nr">10.13.1</SPAN> <SPAN class="sec-title">Options
for document generation</SPAN></A></H3>
<P>Below is a brief overview of the options available.
<P>
<UL>
<LI><I>Generating PostScript</I><BR>
All <font size=-1>XPCE</font> <A class="" href="summary.html#class:graphical">graphical</A>
objects support the method <B><CODE><-</CODE>postscript</B> that
creates an Adobe PostScript representation of the object. For most
objects used in diagrams (lines, curves, text), the produced PostScript
is clean PostScript ready for perfect scaling. The remaining objects
(for example a menu or button) are translated into an <A class="" href="summary.html#class:image">image</A>
which is then translated to PostScript. Such objects scale poorly.
<P>This facility is useful for creating high-quality diagrams that can
be imported in a text created on an external application. This is fairly
portable, but using Microsoft applications you must have a PostScript
printer attached and there is no previewing. On Windows platform there
is no well-supported automated way to print a PostScript file unless you
can asks your users to install a PostScript viewer such as
<A NAME="idx:AlladinGsView:471">Alladin GsView</A><A NAME="idx:gsview:472"></A>.
<P>
<LI><I>Generating plain text</I><BR>
If you need to produce a listing, you can generate a plain ISO-Latin-1
(or other 8-bit character set) string and print this. On Unix this is
achieved by sending the text to the printer-spooler. On Windows you can
save the data to a temporary file and start the command <CODE>notepad /p
"file"</CODE>. This route provides no support for graphics or any kind
of advanced formatting.
<P>
<LI><I>Generating markup</I><BR>
Translating project data to output on a page is a craft that is
understood by text-manipulation programs that accept a high-level input
specification such as Troff, LaTeX or an SGML variant. If you can expect
your users to have or install a particular package and this package can
deal with PostScript graphics this is the ideal way to generate
good-looking documents from your application. On Unix these tools are
widely available and installed on most machines. Most of them are
available on Windows, but not installed on most systms.
<P>The <CODE>library(http/html_write)</CODE> library described in <B>section
??</B> provides a good infra-structure for emitting documents in HTML or
another SGML or XML dialect. There is no such library for LaTeX , but
this can be designed using the same principles.
<P>Using HTML, the application can be transformed into a web-server
using the infrastructure described in <A class="sec" href="httpd.html">section
11.9</A>. The user can use standard web-technologies to process the
page. Unfortunately well-established web technology does not support
vector-drawings, though the emerging <A NAME="idx:SVG:473">SVG</A>
technology may change that.
<P>
<LI><I>Generating a Windows meta-file</I><BR>
<A NAME="idx:WMF:474"></A><A NAME="idx:EMF:475"></A>Windows metafiles
are implemented in the class <B>win_metafile</B>, providing both input
and output of metafiles. Such files preserve the vector properties of <font size=-1>XPCE</font>
graphicals and can be imported in most native Windows applications.
Unfortunately the scaling properties, especially of text, are much worse
than PostScript.
<P>An example of exporting Windows Metafiles is in PceDraw in the file
<CODE>library(draw/canvas)</CODE>.
<P>
<LI><I>Printing to a Windows printer</I><BR>
Using class <B>win_printer</B>, the user can open a device on which
graphicals can be painted and that can be advanced to the next page.
This technique only works on Windows and requires you to program all
details of the page. For WYSIWYG objects such as most drawings, this
techinique is appropriate, but rendering textual documents require the
implementation of a formatter, where you are responsible for page
headers and footers, alignment, etc.
<P>Formatting text in sections, paragraphs lists, etc. is provided by
the
<font size=-1>XPCE</font> document-rendering classes described in <A class="sec" href="docrender.html">section
11.10</A>. These classes cannot handle pagination though. Another
alternative is the use of <A class="" href="summary.html#class:editor">editor</A>
and friends, drawing the <A class="" href="summary.html#class:text_image">text_image</A>
on a page while traversing through the document.
<P>An example of printing using <B>win_printer</B> is in PceDraw in the
file <CODE>library(draw/canvas)</CODE>.
</UL>
<P></BODY></HTML>
|