You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2015/02/13 17:58:47 UTC
svn commit: r1659602 - in
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox:
pdfwriter/COSWriter.java pdmodel/fdf/FDFDocument.java
Author: lehmi
Date: Fri Feb 13 16:58:47 2015
New Revision: 1659602
URL: http://svn.apache.org/r1659602
Log:
PDFBOX-2099: added support for FDFDocuments to COSWriter
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFDocument.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=1659602&r1=1659601&r2=1659602&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 Fri Feb 13 16:58:47 2015
@@ -37,9 +37,9 @@ import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-
import org.apache.pdfbox.cos.COSArray;
import org.apache.pdfbox.cos.COSBase;
import org.apache.pdfbox.cos.COSBoolean;
@@ -58,6 +58,7 @@ import org.apache.pdfbox.io.IOUtils;
import org.apache.pdfbox.pdfparser.PDFXRefStream;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.encryption.SecurityHandler;
+import org.apache.pdfbox.pdmodel.fdf.FDFDocument;
import org.apache.pdfbox.pdmodel.interactive.digitalsignature.SignatureInterface;
import org.apache.pdfbox.cos.COSObjectKey;
import org.apache.pdfbox.util.Charsets;
@@ -198,7 +199,8 @@ public class COSWriter implements ICOSVi
private final Set<COSBase> actualsAdded = new HashSet<COSBase>();
private COSObjectKey currentObjectKey = null;
- private PDDocument document = null;
+ private PDDocument pdDocument = null;
+ private FDFDocument fdfDocument = null;
private boolean willEncrypt = false;
// signing
@@ -543,7 +545,17 @@ public class COSWriter implements ICOSVi
*/
protected void doWriteHeader(COSDocument doc) throws IOException
{
- getStandardOutput().write( doc.getHeaderString().getBytes("ISO-8859-1") );
+ String headerString;
+ if (fdfDocument != null)
+ {
+ headerString = "%FDF-"+ Float.toString(fdfDocument.getDocument().getVersion());
+ }
+ else
+ {
+ headerString = "%PDF-"+ Float.toString(pdDocument.getDocument().getVersion());
+ }
+ getStandardOutput().write( headerString.getBytes("ISO-8859-1") );
+
getStandardOutput().writeEOL();
getStandardOutput().write(COMMENT);
getStandardOutput().write(GARBAGE);
@@ -1099,7 +1111,7 @@ public class COSWriter implements ICOSVi
{
if (willEncrypt)
{
- document.getEncryption().getSecurityHandler()
+ pdDocument.getEncryption().getSecurityHandler()
.encryptStream(obj, currentObjectKey.getNumber(),
currentObjectKey.getGeneration());
}
@@ -1166,7 +1178,7 @@ public class COSWriter implements ICOSVi
{
if (willEncrypt)
{
- document.getEncryption().getSecurityHandler().encryptString(
+ pdDocument.getEncryption().getSecurityHandler().encryptString(
obj,
currentObjectKey.getNumber(),
currentObjectKey.getGeneration());
@@ -1200,7 +1212,7 @@ public class COSWriter implements ICOSVi
Long idTime = doc.getDocumentId() == null ? System.currentTimeMillis() :
doc.getDocumentId();
- document = doc;
+ pdDocument = doc;
if(incrementalUpdate)
{
prepareIncrement(doc);
@@ -1218,10 +1230,10 @@ public class COSWriter implements ICOSVi
}
else
{
- if (document.getEncryption() != null)
+ if (pdDocument.getEncryption() != null)
{
- SecurityHandler securityHandler = document.getEncryption().getSecurityHandler();
- securityHandler.prepareDocumentForEncryption(document);
+ SecurityHandler securityHandler = pdDocument.getEncryption().getSecurityHandler();
+ securityHandler.prepareDocumentForEncryption(pdDocument);
willEncrypt = true;
}
else
@@ -1230,7 +1242,7 @@ public class COSWriter implements ICOSVi
}
}
- COSDocument cosDoc = document.getDocument();
+ COSDocument cosDoc = pdDocument.getDocument();
COSDictionary trailer = cosDoc.getTrailer();
COSArray idArray = (COSArray)trailer.getDictionaryObject( COSName.ID );
boolean missingID = true;
@@ -1278,6 +1290,20 @@ public class COSWriter implements ICOSVi
}
/**
+ * This will write the pdf document.
+ *
+ * @param doc The document to write.
+ *
+ * @throws IOException If an error occurs while generating the data.
+ */
+ public void write(FDFDocument doc) throws IOException
+ {
+ fdfDocument = doc;
+ willEncrypt = false;
+ COSDocument cosDoc = fdfDocument.getDocument();
+ cosDoc.accept(this);
+ }
+ /**
* This will output the given byte getString as a PDF object.
*
* @param string COSString to be written
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFDocument.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFDocument.java?rev=1659602&r1=1659601&r2=1659602&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFDocument.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fdf/FDFDocument.java Fri Feb 13 16:58:47 2015
@@ -284,7 +284,7 @@ public class FDFDocument implements Clos
try
{
writer = new COSWriter( output );
- writer.write( document );
+ writer.write( this );
writer.close();
}
finally