Skip to content

Commit

Permalink
iText 5.5.8
Browse files Browse the repository at this point in the history
  • Loading branch information
amedee committed Nov 27, 2015
2 parents 1c94782 + 93d6516 commit b1cd3e5
Show file tree
Hide file tree
Showing 153 changed files with 3,602 additions and 2,628 deletions.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion itext/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<artifactId>itextpdf</artifactId>
<packaging>jar</packaging>
<name>iText, a Free Java-PDF library</name>
<version>5.5.7</version>
<version>5.5.8</version>
<description>iText, a free Java-PDF library</description>
<!-- General Info -->
<url>http://itextpdf.com</url>
Expand Down
216 changes: 187 additions & 29 deletions itext/src/main/java/com/itextpdf/testutils/CompareTool.java

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions itext/src/main/java/com/itextpdf/testutils/ITextTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@
import com.itextpdf.text.log.Logger;
import com.itextpdf.text.log.LoggerFactory;

import javax.management.OperationsException;
import java.io.File;
import java.io.IOException;

public abstract class ITextTest {

Expand All @@ -58,7 +58,7 @@ public void runTest() throws Exception {
LOGGER.info("Starting test.");
String outPdf = getOutPdf();
if (outPdf == null || outPdf.length() == 0)
throw new OperationsException("outPdf cannot be empty!");
throw new IOException("outPdf cannot be empty!");
makePdf(outPdf);
assertPdf(outPdf);
comparePdf(outPdf, getCmpPdf());
Expand Down
17 changes: 14 additions & 3 deletions itext/src/main/java/com/itextpdf/text/Version.java
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,10 @@
public final class Version {

// membervariables


/** String that will indicate if the AGPL version is used. */
public static String AGPL = " (AGPL-version)";

/** The iText version instance. */
private static Version version = null;
/**
Expand All @@ -68,7 +71,7 @@ public final class Version {
* This String contains the version number of this iText release.
* For debugging purposes, we request you NOT to change this constant.
*/
private String release = "5.5.7";
private String release = "5.5.8";
/**
* This String contains the iText version as shown in the producer line.
* iText is a product developed by iText Group NV.
Expand Down Expand Up @@ -128,7 +131,7 @@ public static Version getInstance() {
throw new Exception();
}
} catch (Exception e) {
version.iTextVersion += " (AGPL-version)";
version.iTextVersion += AGPL;
}
}
}
Expand Down Expand Up @@ -173,4 +176,12 @@ public String getVersion() {
public String getKey() {
return key;
}

/**
* Checks if the AGPL version is used.
* @return returns true if the AGPL version is used.
*/
public static boolean isAGPLVersion() {
return getInstance().getVersion().indexOf(AGPL) > 0;
}
}
42 changes: 42 additions & 0 deletions itext/src/main/java/com/itextpdf/text/io/TempFileCache.java
Original file line number Diff line number Diff line change
@@ -1,3 +1,45 @@
/*
* $Id$
*
* This file is part of the iText (R) project.
* Copyright (c) 1998-2015 iText Group NV
* Authors: Yulian Gaponenko, Bruno Lowagie, et al.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License version 3
* as published by the Free Software Foundation with the addition of the
* following permission added to Section 15 as permitted in Section 7(a):
* FOR ANY PART OF THE COVERED WORK IN WHICH THE COPYRIGHT IS OWNED BY
* ITEXT GROUP. ITEXT GROUP DISCLAIMS THE WARRANTY OF NON INFRINGEMENT
* OF THIRD PARTY RIGHTS.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Affero General License for more
* details. You should have received a copy of the GNU Affero General License
* along with this program; if not, see http://www.gnu.org/licenses or write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA, 02110-1301 USA, or download the license from the following URL:
* http://itextpdf.com/terms-of-use/
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General License.
*
* In accordance with Section 7(b) of the GNU Affero General License, a covered
* work must retain the producer line in every PDF that is created or
* manipulated using iText.
*
* You can be released from the requirements of the license by purchasing a
* commercial license. Buying such a license is mandatory as soon as you develop
* commercial activities involving the iText software without disclosing the
* source code of your own applications. These activities include: offering paid
* services to customers as an ASP, serving PDFs on the fly in a web
* application, shipping iText with a closed source product.
*
* For more information, please contact iText Software Corp. at this address:
* sales@itextpdf.com
*/
package com.itextpdf.text.io;

import com.itextpdf.text.pdf.PdfObject;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public class CounterFactory {
}

/** The current counter implementation. */
private Counter counter = new NoOpCounter();
private Counter counter = new DefaultCounter();

/** The empty constructor. */
private CounterFactory() {}
Expand Down
109 changes: 109 additions & 0 deletions itext/src/main/java/com/itextpdf/text/log/DefaultCounter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
/*
* $Id$
*
* This file is part of the iText (R) project.
* Copyright (c) 1998-2015 iText Group NV
* Authors: Bruno Lowagie, Paulo Soares, et al.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License version 3
* as published by the Free Software Foundation with the addition of the
* following permission added to Section 15 as permitted in Section 7(a):
* FOR ANY PART OF THE COVERED WORK IN WHICH THE COPYRIGHT IS OWNED BY
* ITEXT GROUP. ITEXT GROUP DISCLAIMS THE WARRANTY OF NON INFRINGEMENT
* OF THIRD PARTY RIGHTS.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
* details. You should have received a copy of the GNU Affero General Public
* License along with this program; if not, see http://www.gnu.org/licenses or
* write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA, 02110-1301 USA, or download the license from the following URL:
* http://itextpdf.com/terms-of-use/
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License.
*
* In accordance with Section 7(b) of the GNU Affero General Public License, a
* covered work must retain the producer line in every PDF that is created or
* manipulated using iText.
*
* You can be released from the requirements of the license by purchasing a
* commercial license. Buying such a license is mandatory as soon as you develop
* commercial activities involving the iText software without disclosing the
* source code of your own applications. These activities include: offering paid
* services to customers as an ASP, serving PDFs on the fly in a web
* application, shipping iText with a closed source product.
*
* For more information, please contact iText Software Corp. at this address:
* sales@itextpdf.com
*/
package com.itextpdf.text.log;

import com.itextpdf.text.Version;
import com.itextpdf.text.pdf.codec.Base64;

/**
* Implementation of the Counter interface that doesn't do anything.
*/
public class DefaultCounter implements Counter {

private int count = 0;
private int level = 0;
private final int[] repeat = {10000, 5000, 5000, 5000, 5000, 1000};

/**
* @param klass
* @return this Counter implementation
* @see com.itextpdf.text.log.Counter#getCounter(java.lang.Class)
*/
public Counter getCounter(Class<?> klass) {
return this;
}

/**
* @see com.itextpdf.text.log.Counter#read(long)
*/
public void read(long l) {
plusOne();
}

/**
* @see com.itextpdf.text.log.Counter#written(long)
*/
public void written(long l) {
plusOne();
}

private void plusOne() {
if (count++ > repeat[level]) {
if (Version.isAGPLVersion()) {
if (level < repeat.length - 1) {
level++;
}
System.out.println(new String(message));
}
count = 0;
}
}

private static byte[] message = Base64.decode(
"DQoNCllvdSBhcmUgdXNpbmcgaVRleHQgdW5kZXIgdGhlIEFHUEwuDQoNCklmIHR"
+ "oaXMgaXMgeW91ciBpbnRlbnRpb24sIHlvdSBoYXZlIHB1Ymxpc2hlZCB5b3VyIG"
+ "93biBzb3VyY2UgY29kZSBhcyBBR1BMIHNvZnR3YXJlIHRvby4NClBsZWFzZSBsZ"
+ "XQgdXMga25vdyB3aGVyZSB0byBmaW5kIHlvdXIgc291cmNlIGNvZGUgYnkgc2Vu"
+ "ZGluZyBhIG1haWwgdG8gYWdwbEBpdGV4dHBkZi5jb20NCldlJ2QgYmUgaG9ub3J"
+ "lZCB0byBhZGQgaXQgdG8gb3VyIGxpc3Qgb2YgQUdQTCBwcm9qZWN0cyBidWlsdC"
+ "BvbiB0b3Agb2YgaVRleHQgb3IgaVRleHRTaGFycA0KYW5kIHdlJ2xsIGV4cGxha"
+ "W4gaG93IHRvIHJlbW92ZSB0aGlzIG1lc3NhZ2UgZnJvbSB5b3VyIGVycm9yIGxv"
+ "Z3MuDQoNCklmIHRoaXMgd2Fzbid0IHlvdXIgaW50ZW50aW9uLCB5b3UgYXJlIHB"
+ "yb2JhYmx5IHVzaW5nIGlUZXh0IGluIGEgbm9uLWZyZWUgZW52aXJvbm1lbnQuDQ"
+ "pJbiB0aGlzIGNhc2UsIHBsZWFzZSBjb250YWN0IHVzIGJ5IGZpbGxpbmcgb3V0I"
+ "HRoaXMgZm9ybTogaHR0cDovL2l0ZXh0cGRmLmNvbS9zYWxlcw0KSWYgeW91IGFy"
+ "ZSBhIGN1c3RvbWVyLCB3ZSdsbCBleHBsYWluIGhvdyB0byBpbnN0YWxsIHlvdXI"
+ "gbGljZW5zZSBrZXkgdG8gYXZvaWQgdGhpcyBtZXNzYWdlLg0KSWYgeW91J3JlIG"
+ "5vdCBhIGN1c3RvbWVyLCB3ZSdsbCBleHBsYWluIHRoZSBiZW5lZml0cyBvZiBiZ"
+ "WNvbWluZyBhIGN1c3RvbWVyLg0KDQo=");
}
34 changes: 18 additions & 16 deletions itext/src/main/java/com/itextpdf/text/log/NoOpCounter.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,23 +47,25 @@
*/
public class NoOpCounter implements Counter {

/**
* @see com.itextpdf.text.log.Counter#getCounter(java.lang.Class)
*/
public Counter getCounter(Class<?> klass) {
return this;
}
/**
* @param klass The Class asking for the Counter
* @return the Counter instance
* @see com.itextpdf.text.log.Counter#getCounter(java.lang.Class)
*/
public Counter getCounter(Class<?> klass) {
return this;
}

/**
* @see com.itextpdf.text.log.Counter#read(long)
*/
public void read(long l) {
}
/**
* @see com.itextpdf.text.log.Counter#read(long)
*/
public void read(long l) {
}

/**
* @see com.itextpdf.text.log.Counter#written(long)
*/
public void written(long l) {
}
/**
* @see com.itextpdf.text.log.Counter#written(long)
*/
public void written(long l) {
}

}
2 changes: 1 addition & 1 deletion itext/src/main/java/com/itextpdf/text/pdf/AcroFields.java
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ void fill() {
if (value == null && t != null) {
value = annot;
if (annot.get(PdfName.V) == null && lastV != null)
value.put(PdfName.V, lastV);
value.put(PdfName.V, lastV); // TODO: seems to be bug (we are going up the hierarchy and setting parent's V entry to child's V value)
}
annot = annot.getAsDict(PdfName.PARENT);
}
Expand Down
28 changes: 24 additions & 4 deletions itext/src/main/java/com/itextpdf/text/pdf/BarcodeDatamatrix.java
Original file line number Diff line number Diff line change
Expand Up @@ -44,14 +44,15 @@
*/
package com.itextpdf.text.pdf;

import java.io.UnsupportedEncodingException;
import java.util.Arrays;
import java.util.Hashtable;

import com.itextpdf.text.BadElementException;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.codec.CCITTG4Encoder;

import java.io.UnsupportedEncodingException;
import java.util.Arrays;
import java.util.Hashtable;

/**
* A DataMatrix 2D barcode generator.
*/
Expand Down Expand Up @@ -1270,6 +1271,25 @@ static void generateECC(byte[] wd, int nd, int datablock, int nc) {

}

public void placeBarcode(PdfContentByte cb, BaseColor foreground, float moduleHeight, float moduleWidth) {
int w = width + 2 * ws;
int h = height + 2 * ws;
int stride = (w + 7) / 8;
int ptr = 0;
cb.setColorFill(foreground);
for (int k = 0; k < h; ++k) {
int p = k * stride;
for (int j = 0; j < w; ++j) {
int b = image[p + j / 8] & 0xff;
b <<= j % 8;
if ((b & 0x80) != 0) {
cb.rectangle(j * moduleWidth, (h - k - 1) * moduleHeight, moduleWidth, moduleHeight);
}
}
}
cb.fill();
}

// AWT related methods (remove this if you port to Android / GAE)

/**
Expand Down
10 changes: 7 additions & 3 deletions itext/src/main/java/com/itextpdf/text/pdf/CFFFontSubset.java
Original file line number Diff line number Diff line change
Expand Up @@ -688,12 +688,16 @@ else if (key=="callgsubr")
}
}
// A call to "stem"
else if (key == "hstem" || key == "vstem" || key == "hstemhm" || key == "vstemhm")
// Increment the NumOfHints by the number couples of of arguments
NumOfHints += NumOfArgs/2;
else if (key == "hstem" || key == "vstem" || key == "hstemhm" || key == "vstemhm") {
// Increment the NumOfHints by the number couples of of arguments
NumOfHints += NumOfArgs / 2;
}
// A call to "mask"
else if (key == "hintmask" || key == "cntrmask")
{
// if stack is not empty the reason is vstem implicit definition
// See Adobe Technical Note #5177, page 25, hintmask usage example.
NumOfHints += NumOfArgs/2;
// Compute the size of the mask
int SizeOfMask = NumOfHints/8;
if (NumOfHints%8 != 0 || SizeOfMask == 0)
Expand Down
4 changes: 3 additions & 1 deletion itext/src/main/java/com/itextpdf/text/pdf/PRTokeniser.java
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@
*/
public class PRTokeniser {

private final StringBuilder outBuf = new StringBuilder();

/**
* Enum representing the possible token types
* @since 5.0.1
Expand Down Expand Up @@ -339,7 +341,7 @@ public boolean nextToken() throws IOException {
// Note: We have to initialize stringValue here, after we've looked for the end of the stream,
// to ensure that we don't lose the value of a token that might end exactly at the end
// of the stream
final StringBuilder outBuf = new StringBuilder();
outBuf.setLength(0);
stringValue = EMPTY;

switch (ch) {
Expand Down
5 changes: 5 additions & 0 deletions itext/src/main/java/com/itextpdf/text/pdf/PdfArray.java
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,11 @@ public PdfArray() {
arrayList = new ArrayList<PdfObject>();
}

public PdfArray(int capacity) {
super(ARRAY);
arrayList = new ArrayList<PdfObject>(capacity);
}

/**
* Constructs an <CODE>PdfArray</CODE>-object, containing 1
* <CODE>PdfObject</CODE>.
Expand Down
Loading

0 comments on commit b1cd3e5

Please sign in to comment.