Archive for the 'GNU PDF' Category

Make GNU PDF manuals: converting texi files to html or pdf

3 Comments

All documentation in GNU PDF, as in many other free software projects, is written using texinfo. Texinfo is a documentation format by Richard Stallman and Bob Chassell, which aims to integrate all the project documentation in a unique source, and then produce any desired output document format in an automatic and transparent way. As described in the official page:

Texinfo uses a single source file to produce output in a number of formats, both online and printed (dvi, html, info, pdf, xml, etc.). This means that instead of writing different documents for online information and another for a printed manual, you need write only one document. And when the work is revised, you need revise only that one document.

Several tools and scripts are available from the usual repositories to transform texi files to html or pdf files. In Debian-like systems, they can be installed issuing:

  1. sudo apt-get install texi2html texinfo

This should make available in your system the texi2html and texi2pdf binaries, which you can use to convert texi files into html or pdf files:

  1. cd ~/trunk/doc/
  2. texi2html *.texi
  3. texi2pdf *.texi

Now you can read all GNU PDF manuals in your favourite format. Hope this helps!

First hacking session with GNU PDF library

4 Comments

In this short session we’ll get running a minimal piece of C code which uses types and functions of the types module, in the base layer of the GNU PDF library. For more information about the GNU PDF library architecture, please go here.

First of all, create a directory to store these little hacking things:

  1. mkdir gnupdfhack
  2. cd gnupdfhack/

Then, create a C test file, and open it with your favorite editor:

  1. touch test.c
  2. emacs test.c

This is a very first approximation to a trivial test unit, which simply:

  • checks the types declared in the library specification, and
  • tries to call some functionalities of the library implementation

The test.c file goes like this:

  1. #include <stdio.h>
  2. #include “../trunk/src/pdf.h”
  3.  
  4. int main ()
  5. {
  6.   printf (“GNU PDF hack test\n”);
  7.  
  8.   pdf_size_t size = 128;
  9.   pdf_error_t *error = NULL;
  10.   pdf_buffer_t *buf = pdf_buffer_new(size, &error);
  11.  
  12.   if (buf == NULL)
  13.     {
  14.       printf(“PDF buffer creation failed\n”);
  15.       /* do some more **error analysis here … */
  16.  
  17.       return 1;
  18.     }
  19.   else
  20.     {
  21.       pdf_buffer_destroy(buf);
  22.       printf(“PDF buffer created and destroyed successfully\n”);
  23.     }
  24.  
  25.   return 0;
  26. }

The type check tries to use the declaration of GNU PDF boolean types, while the library calls essentially allocate space for a buffer, and then they destroy it.

To get it working:

  1. gcc -Wall /usr/local/lib/libgnupdf.so test.c -o test
  2. ./text

This works under the assumption that the GNU PDF library is installed under /usr/local/lib. Please go to this previous post here for a guide on how to install the GNU PDF library in your system. If everything goes well, you’ll get this output:

  1. GNU PDF hack test
  2. —————–
  3. I have the types!
  4. PDF buffer created and destroyed successfully

On further sessions we’ll get more from the actual implementation to make some improvements required on the actual types module. Please feel free to read the base layer interfaces, and happy hacking! Hope this helps!

Install GNU PDF library from source

1 Comment

First of all, this post is a clarification of the official GNU PDF library newcomers guide, found here, and a more explicit explanation steps than those found in the INSTALL and README files of the source trunk. There is no intention here to replace, but to better explain the contents of these sources, and I encourage all readers installing the GNU PDF library to refer them.

All GNU PDF library source is managed with the bazaar version control system, so the first step is to install the bzr package. You can install it from source, from a pre-compiled package, or from your preferred repository. For the latter, and assuming a Debian-style system, you can install it by just typing on your terminal (make sure you have enough permissions to run installation of packages):

  1. apt-get install bzr

Answering yes to APT will install the packages and all dependencies needed. Now it is time for retrieving the source:

  1. bzr branch bzr://bzr.sv.gnu.org/pdf/libgnupdf/trunk

Wait a while, and source will be downloaded to ./trunk. Step inside this directory:

  1. cd trunk

The autogen.sh script will do the work, but it depends on the autoconf and libtool packages, so we install them and then we bootstrap the library:

  1. apt-get install autoconf libtool
  2. sh autogen.sh

After some messages from the libtool library the source is ready to configure, but usually some dependencies are not fulfilled at this point: zlib, libgpg-error, libgcrypt, uuid-dev and libcheck. Except libcheck, the rest of the required libraries are available in the Debian/Ubuntu repos:

  1. apt-get install zlib1g-dev libgpg-error-dev libgcrypt11-dev uuid-dev

The GNU PDF library requires the SVN source of libcheck to assure the latest version of this library. Obviously we need the subversion package in our system, and then retrieve sources, configure, compile and install (as root):

  1. apt-get install subversion
  2. cd ~
  3. svn co https://check.svn.sourceforge.net/svnroot/check check
  4. cd check/trunk/
  5. autoreconf -i
  6. ./configure
  7. make
  8. make install

At this point, all GNU PDF library requirements are met, so we go for it:

  1. cd ~/trunk/
  2. ./configure
  3. make
  4. make install

This will install the GNU PDF library in the default location. In most cases, you can see the compiled library objects by issuing:

  1. ls /usr/local/lib

In further posts we’ll explain how to use the generated dynamic library for a first hacking session with some of the actual library features. Hope this helps!