GithubHelp home page GithubHelp logo

oncaphillis / poppler-agg Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 0.0 6.92 MB

A poppler clone with an agg backend

License: GNU General Public License v2.0

Shell 0.05% C 13.60% C++ 85.05% Objective-C 0.13% Python 1.17%

poppler-agg's Introduction

poppler-agg README

INTRO

poppler-agg is meant to provide an AGG (http://antigrain.com) rendering back-end to the poppler (http://poppler.freedesktop.org/) library.

The git repository contains two branches. (a) "master" which is a clone of the official poppler repo and (b) "agg_support" which I use to add everything for (you guessed it) AGG support.

MOTIVATION

AGG the Anti-Grain Geometry Library represents a somewhat obscure software project. Although one might say that it is currently unmaintained it still provides a hi-quality graphics engine well comparable with projects like cairo. AGG makes heavy use of C++ templates which constitutes a major advantage as well as a potential drawback.

On the one hand, all aspects of the underling color space and color storage model can be manipulated via template arguments, making it possibly to provide a large set of output formats for specialized hardware like printers with very specific needs for custom color spaces and bit-depth per channel. Furthermore there are no hardware dependent parts in the AGG library. It simply operates on abstracted two dimensional arrays of pixels.

On the other hand the heavy use of templated classes might make it complicated to create speed optimized hardware specific code. One may not expect performance wonders when using an AGG back-end.

The poppler-agg relies on my variant of the agg code to be found under

https://github.com/oncaphillis/agg

STATUS

  • The AGG backend currently supports three color spaces "rgba" and "cmyka" "device_na". The is still ecperimenta and meant to mirror the DeviceN colorspace of PDF.

  • All Vector graphics shound work. All amjor line drawings and fill operations should workd. Although more exotic fill types are still missing.

NEXT TO COME

The next thing on my mind is Text drawing.

INSTALL

First you will have to install a modified version of AGG which can be found under (https://github.com/oncaphillis/agg.git). This variant supports the agg::cmyka color space and the agg::pixfmt_cmyk storage model.

After this you will have to switch into the "agg_support" branch of the poppler-agg checkout and configure the package with the --with-agg argument. The headers and libs of the modified agg installation should be made available via the CXXFLAGS and LDFLAGS environment variables like:

LDFLAGS="-L/path/to/agg/libs/" CXXFLAGS="-I/path/to/agg/headers" ./configure --with-agg

Install the poppler library as usual. In addition to the the standard poppler utils you will find the "pdftoagg" program.

Invoking

pdftoagg [-cmyk|-rgb] [file.pdf]

Will create "file.tif" from "file.pdf" representing the first page of the pdf document (at least the vector graphics part). The internal color model will be cmyk or rgb depending on the give flag. Under standard configuration the resulting "file.tif" will always be RGB. CMYK colors will be transformed befor saving. If compilation is done with the SPLASH_CMYK=1 macro defined the program will output a CMYK tif file.

Sebastian Kloska ([email protected])

Original poppler README

This is poppler, a PDF rendering library.

Poppler is a fork of the xpdf PDF viewer developed by Derek Noonburg of Glyph and Cog, LLC. The purpose of forking xpdf is twofold. First, we want to provide PDF rendering functionality as a shared library, to centralize the maintenance effort. Today a number of applications incorporate the xpdf code base, and whenever a security issue is discovered, all these applications exchange patches and put out new releases. In turn, all distributions must package and release new version of these xpdf based viewers. It's safe to say that there's a lot of duplicated effort with the current situation. Even if poppler in the short term introduces yet another xpdf derived code base to the world, we hope that over time these applications will adopt poppler. After all, we only need one application to use poppler to break even.

Second, we would like to move libpoppler forward in a number of areas that don't fit within the goals of xpdf. By design, xpdf depends on very few libraries and runs a wide range of X based platforms. This is a strong feature and reasonable design goal. However, with poppler we would like to replace parts of xpdf that are now available as standard components of modern Unix desktop environments. One such example is fontconfig, which solves the problem of matching and locating fonts on the system, in a standardized and well understood way. Another example is cairo, which provides high quality 2D rendering. See the file TODO for a list of planned changes.

Please note that xpdf, and thus poppler, is licensed under the GPL, not the LGPL. Consequently, any application using poppler must also be licensed under the GPL. If you want to incorporate Xpdf based PDF rendering in a closed source product, please contact Glyph & Cog (www.glyphandcog.com) for commercial licensing options.

Kristian Høgsberg, Feb. 27, 2005

See the README-XPDF for the original xpdf-3.03 README.

poppler-agg's People

Contributors

tsdgeos avatar oncaphillis avatar adrianjohnson avatar hiberis avatar fabio-d avatar bradh avatar inigomartinez avatar william8000 avatar aperezdc avatar mpsuzuki avatar gpoo avatar kjk avatar sengels avatar julienr avatar ickle avatar davidben avatar peterbrei avatar carlosgcampos avatar reavertm avatar martinkretzschmar avatar urkud avatar coolwanglu avatar bazzargh avatar marekkasik avatar kervius avatar igors avatar tanty avatar ecatmur avatar rouault avatar rosslagerwall avatar

Stargazers

Richard Spindler avatar Dane Springmeyer avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.