diff -r -u /tmp/pdftk-1.41/pdftk/attachments.cc ./pdftk/attachments.cc
--- /tmp/pdftk-1.41/pdftk/attachments.cc 2004-10-27 02:57:44.000000000 +0100
+++ ./pdftk/attachments.cc 2009-02-12 15:38:08.000000000 +0000
@@ -51,7 +51,11 @@
#include "com/lowagie/text/Document.h"
#include "com/lowagie/text/Rectangle.h"
+// Ewww, PdfName has a field called NULL.
+#undef NULL
#include "com/lowagie/text/pdf/PdfName.h"
+#define NULL __null
+
#include "com/lowagie/text/pdf/PdfString.h"
#include "com/lowagie/text/pdf/PdfNumber.h"
#include "com/lowagie/text/pdf/PdfArray.h"
@@ -148,8 +152,8 @@
itext::Rectangle* crop_box_p=
input_reader_p->getCropBox( m_input_attach_file_pagenum );
- float corner_top= crop_box_p->top()- margin;
- float corner_left= crop_box_p->left()+ margin;
+ float corner_top= crop_box_p->getTop()- margin;
+ float corner_left= crop_box_p->getLeft()+ margin;
itext::PdfArray* annots_p= (itext::PdfArray*)
input_reader_p->getPdfObject( page_p->get( itext::PdfName::ANNOTS ) );
@@ -187,11 +191,11 @@
string filename= drop_path(*vit);
// wrap our location over page bounds, if needed
- if( crop_box_p->right() < corner_left+ trans ) {
- corner_left= crop_box_p->left()+ margin;
+ if( crop_box_p->getRight() < corner_left+ trans ) {
+ corner_left= crop_box_p->getLeft()+ margin;
}
- if( corner_top- trans< crop_box_p->bottom() ) {
- corner_top= crop_box_p->top()- margin;
+ if( corner_top- trans< crop_box_p->getBottom() ) {
+ corner_top= crop_box_p->getTop()- margin;
}
itext::Rectangle* annot_bbox_p=
diff -r -u /tmp/pdftk-1.41/pdftk/Makefile.Base ./pdftk/Makefile.Base
--- /tmp/pdftk-1.41/pdftk/Makefile.Base 2006-10-25 00:44:06.000000000 +0100
+++ ./pdftk/Makefile.Base 2009-02-12 13:40:04.000000000 +0000
@@ -15,34 +15,12 @@
# them into fonts.a resulted in none of these resources appearing in pdftk
# (on MinGW gcj 3.4.1)
#
-itext_libs= \
-$(java_libs_root)/com/lowagie/text/pdf/pdf.a \
-$(java_libs_root)/com/lowagie/text/text.a \
-$(java_libs_root)/com/lowagie/text/pdf/pdf.a \
-$(java_libs_root)/com/lowagie/text/pdf/codec/codec.a \
-$(java_libs_root)/com/lowagie/text/pdf/codec/wmf/wmf.a \
-$(java_libs_root)/com/lowagie/text/pdf/fonts/fonts.a \
-$(java_libs_root)/com/lowagie/text/markup/markup.a \
-$(java_libs_root)/com/lowagie/text/xml/xmp/xmp.a \
-$(java_libs_root)/com/lowagie/bc/asn1/asn1.a \
-$(java_libs_root)/com/lowagie/text/pdf/codec/postscript/postscript.a \
+itext_libs=$(LIBDIR)/gcj/itext/itext-2.1.4.jar.so
# font metric files, included as resources
afms= $(wildcard $(java_libs_root)/com/lowagie/text/pdf/fonts/*.afm)
afm_objects= $(patsubst %.afm, %.o, $(afms))
-# older versions of libgcj might not have the MD5 algorithm,
-# so I added it here; these *_local java files were grabbed from
-# libgcj CVS on March 7, 2004; diffed September 5, 2006 w/ gcc 4.1.1
-#
-# gnu/gcj/convert/Input_UnicodeBig.java was grabbed March 26, 2004; diffed September 5, 2006 w/ gcc 4.1.1
-#
-libgcj_local_libs = \
-$(java_libs_root)/java_local/security/security.a \
-$(java_libs_root)/gnu_local/java/security/provider/provider.a \
-$(java_libs_root)/gnu_local/java/security/security.a \
-$(java_libs_root)/gnu/gcj/convert/convert.a
-
# this must already be set according to your platform Makefile;
# we're just appending to it, here
#
@@ -51,19 +29,18 @@
all : java_libs pdftk
java_libs :
- $(MAKE) -C $(java_libs_root)
-attachments.o : attachments.cc attachments.h pdftk.h $(itext_libs) $(libgcj_local_libs)
+attachments.o : attachments.cc attachments.h pdftk.h $(itext_libs)
$(CXX) attachments.cc -I$(java_libs_root) $(CPPFLAGS) -c
-report.o : report.cc report.h pdftk.h $(itext_libs) $(libgcj_local_libs)
+report.o : report.cc report.h pdftk.h $(itext_libs)
$(CXX) report.cc -I$(java_libs_root) $(CPPFLAGS) -c
-pdftk.o : pdftk.cc pdftk.h attachments.h report.h $(itext_libs) $(libgcj_local_libs)
+pdftk.o : pdftk.cc pdftk.h attachments.h report.h $(itext_libs)
$(CXX) pdftk.cc -I$(java_libs_root) $(CPPFLAGS) -c
-pdftk : pdftk.o attachments.o report.o $(itext_libs) $(libgcj_local_libs) $(afm_objects)
- $(CXX) pdftk.o attachments.o report.o $(itext_libs) $(libgcj_local_libs) $(afm_objects) -I$(java_libs_root) $(CPPFLAGS) $(CXXFLAGS) -o pdftk
+pdftk : pdftk.o attachments.o report.o $(itext_libs) $(afm_objects)
+ $(CXX) pdftk.o attachments.o report.o $(itext_libs) $(afm_objects) -I$(java_libs_root) $(CPPFLAGS) $(CXXFLAGS) -o pdftk
install:
/usr/bin/install pdftk /usr/local/bin
diff -r -u /tmp/pdftk-1.41/pdftk/Makefile.RedHat ./pdftk/Makefile.RedHat
--- /tmp/pdftk-1.41/pdftk/Makefile.RedHat 2006-09-21 18:37:38.000000000 +0100
+++ ./pdftk/Makefile.RedHat 2009-02-12 12:18:43.000000000 +0000
@@ -26,12 +26,12 @@
# if you want pdftk to ask before overwriting a file, set
# ASK_ABOUT_WARNINGS to true; otherwise: false; override this default
# with the dont_ask or do_ask command-line options
-CPPFLAGS= -O2 -DPATH_DELIM=0x2f -DASK_ABOUT_WARNINGS=false -fdollars-in-identifiers
+CPPFLAGS= ${RPM_OPT_FLAGS} -DPATH_DELIM=0x2f -DASK_ABOUT_WARNINGS=false -fdollars-in-identifiers -g -fpic
CXXFLAGS= -lgcj
# itext compiler flags
# -O3 might cause pdftk to segfault on cat operation (gcc 3.4.4)
-export GCJFLAGS= -O2
+export GCJFLAGS= ${RPM_OPT_FLAGS}
#
export ARFLAGS= rs
diff -r -u /tmp/pdftk-1.41/pdftk/pdftk.cc ./pdftk/pdftk.cc
--- /tmp/pdftk-1.41/pdftk/pdftk.cc 2006-11-28 22:51:36.000000000 +0000
+++ ./pdftk/pdftk.cc 2009-02-12 16:28:33.000000000 +0000
@@ -50,7 +50,12 @@
#include "com/lowagie/text/Document.h"
#include "com/lowagie/text/Rectangle.h"
+
+// Ewww, PdfName has a field called NULL.
+#undef NULL
#include "com/lowagie/text/pdf/PdfName.h"
+#define NULL __null
+
#include "com/lowagie/text/pdf/PdfString.h"
#include "com/lowagie/text/pdf/PdfNumber.h"
#include "com/lowagie/text/pdf/PdfArray.h"
@@ -191,7 +196,8 @@
// store in this java object so the gc can trace it
g_dont_collect_p->addElement( reader );
- input_pdf_p->m_authorized_b= ( !reader->encrypted || reader->passwordIsOwner );
+ input_pdf_p->m_authorized_b= ( !reader->encrypted // || reader->passwordIsOwner
+ );
if( !input_pdf_p->m_authorized_b ) {
open_success_b= false;
}
@@ -203,6 +209,7 @@
open_success_b= false;
}
catch( java::lang::Throwable* t_p ) { // unexpected error
+ t_p->printStackTrace();
cerr << "Error: Unexpected Exception in open_reader()" << endl;
open_success_b= false;
@@ -2017,14 +2024,14 @@
output_doc_p->addCreator( jv_creator_p );
// un/compress output streams?
- if( m_output_uncompress_b ) {
- writer_p->filterStreams= true;
- writer_p->compressStreams= false;
- }
- else if( m_output_compress_b ) {
- writer_p->filterStreams= false;
- writer_p->compressStreams= true;
- }
+// if( m_output_uncompress_b ) {
+// writer_p->filterStreams= true;
+// writer_p->compressStreams= false;
+// }
+// else if( m_output_compress_b ) {
+// writer_p->filterStreams= false;
+// writer_p->compressStreams= true;
+// }
// encrypt output?
if( m_output_encryption_strength!= none_enc ||
@@ -2033,7 +2040,7 @@
{
// if no stregth is given, default to 128 bit,
// (which is incompatible w/ Acrobat 4)
- bool bit128_b=
+ jboolean bit128_b=
( m_output_encryption_strength!= bits40_enc );
writer_p->setEncryption( output_user_pw_p,
@@ -2057,7 +2064,8 @@
input_reader_p->getPdfObject( trailer_p->get( itext::PdfName::ID ) );
if( file_id_p && file_id_p->isArray() ) {
- writer_p->setFileID( file_id_p );
+ // Absent from itext-2.1.4
+// writer_p->setFileID( file_id_p );
}
}
@@ -2168,12 +2176,14 @@
// un/compress output streams?
if( m_output_uncompress_b ) {
- writer_p->filterStreams= true;
- writer_p->compressStreams= false;
+ // Absent from itext-2.1.4
+// writer_p->filterStreams= true;
+// writer_p->compressStreams= false;
}
else if( m_output_compress_b ) {
- writer_p->filterStreams= false;
- writer_p->compressStreams= true;
+ // Absent from itext-2.1.4
+// writer_p->filterStreams= false;
+// writer_p->compressStreams= true;
}
// encrypt output?
@@ -2183,7 +2193,7 @@
{
// if no stregth is given, default to 128 bit,
// (which is incompatible w/ Acrobat 4)
- bool bit128_b=
+ jboolean bit128_b=
( m_output_encryption_strength!= bits40_enc );
writer_p->setEncryption( output_user_pw_p,
@@ -2403,13 +2413,15 @@
// un/compress output streams?
if( m_output_uncompress_b ) {
add_marks_to_pages( input_reader_p );
- writer_p->filterStreams= true;
- writer_p->compressStreams= false;
+ // Absent from itext-2.1.4
+// writer_p->filterStreams= true;
+// writer_p->compressStreams= false;
}
else if( m_output_compress_b ) {
remove_marks_from_pages( input_reader_p );
- writer_p->filterStreams= false;
- writer_p->compressStreams= true;
+ // Absent from itext-2.1.4
+// writer_p->filterStreams= false;
+// writer_p->compressStreams= true;
}
// encrypt output?
@@ -2420,13 +2432,13 @@
// if no stregth is given, default to 128 bit,
// (which is incompatible w/ Acrobat 4)
- bool bit128_b=
+ jboolean bit128_b=
( m_output_encryption_strength!= bits40_enc );
writer_p->setEncryption( output_user_pw_p,
output_owner_pw_p,
m_output_user_perms,
- bit128_b );
+ bit128_b );
}
// fill form fields?
@@ -2435,8 +2447,11 @@
{
itext::AcroFields* fields_p= writer_p->getAcroFields();
fields_p->setGenerateAppearances( true ); // have iText create field appearances
- if( fdf_reader_p && fields_p->setFields( fdf_reader_p ) ||
- xfdf_reader_p && fields_p->setFields( xfdf_reader_p ) )
+ if( fdf_reader_p )
+ fields_p->setFields( fdf_reader_p );
+ if( xfdf_reader_p )
+ fields_p->setFields( xfdf_reader_p );
+
{ // Rich Text input found
// set the PDF so that Acrobat will create appearances;
@@ -2486,16 +2501,16 @@
doc_page_size_p= doc_page_size_p->rotate();
}
- jfloat h_scale= doc_page_size_p->width() / mark_page_size_p->width();
- jfloat v_scale= doc_page_size_p->height() / mark_page_size_p->height();
+ jfloat h_scale= doc_page_size_p->getWidth() / mark_page_size_p->getWidth();
+ jfloat v_scale= doc_page_size_p->getHeight() / mark_page_size_p->getHeight();
jfloat mark_scale= (h_scale< v_scale) ? h_scale : v_scale;
- jfloat h_trans= (jfloat)(doc_page_size_p->left()- mark_page_size_p->left()* mark_scale +
- (doc_page_size_p->width()-
- mark_page_size_p->width()* mark_scale) / 2.0);
- jfloat v_trans= (jfloat)(doc_page_size_p->bottom()- mark_page_size_p->bottom()* mark_scale +
- (doc_page_size_p->height()-
- mark_page_size_p->height()* mark_scale) / 2.0);
+ jfloat h_trans= (jfloat)(doc_page_size_p->getLeft()- mark_page_size_p->getLeft()* mark_scale +
+ (doc_page_size_p->getWidth()-
+ mark_page_size_p->getWidth()* mark_scale) / 2.0);
+ jfloat v_trans= (jfloat)(doc_page_size_p->getBottom()- mark_page_size_p->getBottom()* mark_scale +
+ (doc_page_size_p->getHeight()-
+ mark_page_size_p->getHeight()* mark_scale) / 2.0);
com::lowagie::text::pdf::PdfContentByte* content_byte_p=
( background_b ) ? writer_p->getUnderContent( ii ) : writer_p->getOverContent( ii );
@@ -2512,20 +2527,20 @@
0, -1* mark_scale,
mark_scale, 0,
h_trans,
- v_trans+ mark_page_size_p->height()* mark_scale );
+ v_trans+ mark_page_size_p->getHeight()* mark_scale );
}
else if( mark_page_rotation== 180 ) {
content_byte_p->addTemplate( mark_page_p,
-1* mark_scale, 0,
0, -1* mark_scale,
- h_trans+ mark_page_size_p->width()* mark_scale,
- v_trans+ mark_page_size_p->height()* mark_scale );
+ h_trans+ mark_page_size_p->getWidth()* mark_scale,
+ v_trans+ mark_page_size_p->getHeight()* mark_scale );
}
else if( mark_page_rotation== 270 ) {
content_byte_p->addTemplate( mark_page_p,
0, mark_scale,
-1* mark_scale, 0,
- h_trans+ mark_page_size_p->width()* mark_scale, v_trans );
+ h_trans+ mark_page_size_p->getWidth()* mark_scale, v_trans );
}
}
}
@@ -2537,7 +2552,7 @@
}
// done; write output
- writer_p->close();
+ writer_p->close(NULL);
}
break;
@@ -2663,15 +2678,15 @@
JvCreateJavaVM(NULL);
JvAttachCurrentThread(NULL, NULL);
- JvInitClass(&java::System::class$);
- JvInitClass(&java::util::ArrayList::class$);
- JvInitClass(&java::util::Iterator::class$);
-
- JvInitClass(&itext::PdfObject::class$);
- JvInitClass(&itext::PdfName::class$);
- JvInitClass(&itext::PdfDictionary::class$);
- JvInitClass(&itext::PdfOutline::class$);
- JvInitClass(&itext::PdfBoolean::class$);
+// JvInitClass(&java::System::class$);
+// JvInitClass(&java::util::ArrayList::class$);
+// JvInitClass(&java::util::Iterator::class$);
+
+// JvInitClass(&itext::PdfObject::class$);
+// JvInitClass(&itext::PdfName::class$);
+// JvInitClass(&itext::PdfDictionary::class$);
+// JvInitClass(&itext::PdfOutline::class$);
+// JvInitClass(&itext::PdfBoolean::class$);
TK_Session tk_session( argc, argv );
diff -r -u /tmp/pdftk-1.41/pdftk/report.cc ./pdftk/report.cc
--- /tmp/pdftk-1.41/pdftk/report.cc 2006-09-06 00:49:32.000000000 +0100
+++ ./pdftk/report.cc 2009-02-12 15:42:56.000000000 +0000
@@ -50,8 +50,13 @@
#include "com/lowagie/text/Document.h"
#include "com/lowagie/text/Rectangle.h"
+#undef NULL
+
+// Ewww, PdfName has a field called NULL.
#include "com/lowagie/text/pdf/PdfObject.h"
#include "com/lowagie/text/pdf/PdfName.h"
+#define NULL __null
+
#include "com/lowagie/text/pdf/PdfString.h"
#include "com/lowagie/text/pdf/PdfNumber.h"
#include "com/lowagie/text/pdf/PdfArray.h"
@@ -1315,11 +1320,12 @@
if( xmp_str_p ) {
xmp_str_p->put( itext::PdfName::TYPE, itext::PdfName::METADATA );
xmp_str_p->put( itext::PdfName::SUBTYPE, itext::PdfName::XML );
-
- itext::PdfIndirectReference* xmp_str_ref_p=
- (itext::PdfIndirectReference*)reader_p->getPRIndirectReference( xmp_str_p );
- catalog_p->put( itext::PdfName::METADATA, xmp_str_ref_p );
+// FIXME: PdfReader.getPRIndirectReference is absent from itext-2.1.4
+// itext::PdfIndirectReference* xmp_str_ref_p=
+// (itext::PdfIndirectReference*)reader_p->getPRIndirectReference( xmp_str_p );
+
+// catalog_p->put( itext::PdfName::METADATA, xmp_str_ref_p );
}
else {
ret_val_b= false;