You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2014/12/20 20:24:22 UTC
svn commit: r1647039 -
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
Author: tilman
Date: Sat Dec 20 19:24:22 2014
New Revision: 1647039
URL: http://svn.apache.org/r1647039
Log:
PDFBOX-2576, PDFBOX-1242: simplify write ASCII string; code cleanup
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java?rev=1647039&r1=1647038&r2=1647039&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Sat Dec 20 19:24:22 2014
@@ -153,12 +153,12 @@ public class COSWriter implements ICOSVi
*/
public static final byte[] ENDSTREAM = "endstream".getBytes(Charsets.US_ASCII);
- private NumberFormat formatXrefOffset = new DecimalFormat("0000000000");
+ private final NumberFormat formatXrefOffset = new DecimalFormat("0000000000");
// the decimal format for the xref object generation number data
- private NumberFormat formatXrefGeneration = new DecimalFormat("00000");
+ private final NumberFormat formatXrefGeneration = new DecimalFormat("00000");
- private NumberFormat formatDecimal = NumberFormat.getNumberInstance( Locale.US );
+ private final NumberFormat formatDecimal = NumberFormat.getNumberInstance( Locale.US );
// the stream where we create the pdf output
private OutputStream output;
@@ -176,18 +176,18 @@ public class COSWriter implements ICOSVi
// these are used for indirect references in other objects
//A hashtable is used on purpose over a hashmap
//so that null entries will not get added.
- private Map<COSBase,COSObjectKey> objectKeys = new Hashtable<COSBase,COSObjectKey>();
- private Map<COSObjectKey,COSBase> keyObject = new Hashtable<COSObjectKey,COSBase>();
+ private final Map<COSBase,COSObjectKey> objectKeys = new Hashtable<COSBase,COSObjectKey>();
+ private final Map<COSObjectKey,COSBase> keyObject = new Hashtable<COSObjectKey,COSBase>();
// the list of x ref entries to be made so far
- private List<COSWriterXRefEntry> xRefEntries = new ArrayList<COSWriterXRefEntry>();
- private Set<COSBase> objectsToWriteSet = new HashSet<COSBase>();
+ private final List<COSWriterXRefEntry> xRefEntries = new ArrayList<COSWriterXRefEntry>();
+ private final Set<COSBase> objectsToWriteSet = new HashSet<COSBase>();
//A list of objects to write.
- private LinkedList<COSBase> objectsToWrite = new LinkedList<COSBase>();
+ private final LinkedList<COSBase> objectsToWrite = new LinkedList<COSBase>();
//a list of objects already written
- private Set<COSBase> writtenObjects = new HashSet<COSBase>();
+ private final Set<COSBase> writtenObjects = new HashSet<COSBase>();
//An 'actual' is any COSBase that is not a COSObject.
//need to keep a list of the actuals that are added
@@ -195,7 +195,7 @@ public class COSWriter implements ICOSVi
//when adding a COSObject and then later adding
//the actual for that object, so we will track
//actuals separately.
- private Set<COSBase> actualsAdded = new HashSet<COSBase>();
+ private final Set<COSBase> actualsAdded = new HashSet<COSBase>();
private COSObjectKey currentObjectKey = null;
private PDDocument document = null;
@@ -261,8 +261,8 @@ public class COSWriter implements ICOSVi
COSBase object = cosDoc.getObjectFromPool(cosObjectKey).getObject();
if (object != null && cosObjectKey!= null && !(object instanceof COSNumber))
{
- objectKeys.put(object, cosObjectKey);
- keyObject.put(cosObjectKey,object);
+ objectKeys.put(object, cosObjectKey);
+ keyObject.put(cosObjectKey,object);
}
long num = cosObjectKey.getNumber();
@@ -297,6 +297,7 @@ public class COSWriter implements ICOSVi
*
* @throws IOException If the underlying stream throws an exception.
*/
+ @Override
public void close() throws IOException
{
if (getStandardOutput() != null)
@@ -843,14 +844,13 @@ public class COSWriter implements ICOSVi
*/
protected Integer[] getXRefRanges(List<COSWriterXRefEntry> xRefEntriesList)
{
- int nr = 0;
int last = -2;
int count = 1;
ArrayList<Integer> list = new ArrayList<Integer>();
for( Object object : xRefEntriesList )
{
- nr = (int)((COSWriterXRefEntry)object).getKey().getNumber();
+ int nr = (int) ((COSWriterXRefEntry) object).getKey().getNumber();
if (nr == last + 1)
{
++count;
@@ -1214,7 +1214,7 @@ public class COSWriter implements ICOSVi
getStandardOutput().write(STREAM);
getStandardOutput().writeCRLF();
byte[] buffer = new byte[1024];
- int amountRead = 0;
+ int amountRead;
int totalAmountWritten = 0;
while ((amountRead = input.read(buffer, 0, 1024)) != -1)
{
@@ -1409,28 +1409,13 @@ public class COSWriter implements ICOSVi
case '(':
case ')':
case '\\':
- output.write('\\');
- output.write(b);
- break;
case '\r':
- output.write('\\');
- output.write('\r');
- break;
case '\n':
- output.write('\\');
- output.write('\n');
- break;
case '\t':
- output.write('\\');
- output.write('\t');
- break;
case '\b':
- output.write('\\');
- output.write('\b');
- break;
case '\f':
output.write('\\');
- output.write('\f');
+ output.write(b);
break;
default:
output.write(b);