pdf-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [pdf-devel] gnupdf ping


From: Dave Johnson
Subject: Re: [pdf-devel] gnupdf ping
Date: Wed, 30 Mar 2016 22:25:29 -0500

Looks great..

On Mar 30, 2016 19:11, "David Warring" <address@hidden> wrote:
Hi Again,
To get the ball rolling, attached is proposed patch to src/base/pdf-stm-f-pred.c.

The crux of this patch is that encoded PNG predictor tags should be in the range 0..4, as specified in
section 6 of RFC 2083 Portable Network Graphics Specification, not 10..14.

There's also a couple of minor secondary fixes to (a) keep PNG, TIFF and NONE modes distinct and (b) ensure also PNG prediction arithmetic is unsigned (pdf_uchar_t, rather than pdf_char_t)..

I haven't worked out how to drive the test sub-system yet, but the following program demonstrates some of the expected differences:

include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "pdf.h"

void main() {
  pdf_error_t *error = NULL;
  pdf_char_t* buf = "\100\101\102"
                    "\120\120\120";
  pdf_size_t buflen = strlen(buf);
  pdf_stm_t*  stm = pdf_stm_mem_new(buf, buflen, 0, PDF_STM_READ, &error);
  pdf_hash_t* hash = pdf_hash_new(&error);

  pdf_hash_add_size(hash, "Predictor", 11, &error);
  pdf_hash_add_size(hash, "BitsPerComponent", 8, &error);
  pdf_hash_add_size(hash, "Colors", 3, &error);
  pdf_hash_add_size(hash, "Columns", 1, &error);

  pdf_stm_install_filter(stm, PDF_STM_FILTER_PRED_ENC, hash, &error);

  pdf_char_t outbuf[100];
  pdf_size_t read_bytes;
  pdf_stm_read(stm, outbuf, sizeof(outbuf), &read_bytes, &error);
  fprintf(stdout, "read bytes: %ld", read_bytes);
  /* dump the output buffer */
  for (int i = 0; i < read_bytes; i++) {
  char* fmt = i%4 ? " %d" : "\n[%d]";
      fprintf(stdout, fmt, (int) outbuf[i]);
  }
  fprintf(stdout, "\n");
  if (error) {
    fprintf(stderr, "error: %s", pdf_error_get_message(error));
    exit(1);
  }
  exit(0);
}
This program is encoding with the PNG 'sub' filter (/Predictor 11).
Before applying the patch it produces
[11] 64 1 1
[11] 80 0 0
After applying this patch:
[1] 64 1 1
[1] 80 0 0
I'm hoping that someone on the mailing list has time to dust-off gnupdf and look at the attached patch.
Feedback welcome.
Regards,
David

On Tue, Mar 29, 2016 at 3:46 PM, David Warring <address@hidden> wrote:
Hi All,
As a newcomer to gnupdf,  I've  gone to the trouble of downloading the project from the bazaar repo at http://bzr.savannah.gnu.org/r/pdf and building and installing (still works).

At this stage, I'm most interested in filters and streams. I'm looking for a suitable stream/filter/encryption backend for Perl 6 module which is under development (https://github.com/p6-pdf/perl6-PDF-Tools).

I realize that this project has been inactive for some-time,  but it seems to me that the low level stuff that I'm interested in, such as filters is working or close working, but may need some bug fixes and general support to get it across the line.

Is anyone interested in picking up bug fixing and general support for gnupdf?

Regards,
David Warring


reply via email to

[Prev in Thread] Current Thread [Next in Thread]