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 2016/10/12 18:40:31 UTC
svn commit: r1764496 -
/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/WriteDecodedDoc.java
Author: tilman
Date: Wed Oct 12 18:40:31 2016
New Revision: 1764496
URL: http://svn.apache.org/viewvc?rev=1764496&view=rev
Log:
PDFBOX-3530: add option to skip images
Modified:
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/WriteDecodedDoc.java
Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/WriteDecodedDoc.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/WriteDecodedDoc.java?rev=1764496&r1=1764495&r2=1764496&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/WriteDecodedDoc.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/WriteDecodedDoc.java Wed Oct 12 18:40:31 2016
@@ -35,6 +35,7 @@ public class WriteDecodedDoc
{
private static final String PASSWORD = "-password";
+ private static final String SKIPIMAGES = "-skipImages";
/**
* Constructor.
@@ -50,10 +51,11 @@ public class WriteDecodedDoc
* @param in The filename used for input.
* @param out The filename used for output.
* @param password The password to open the document.
+ * @param skipImages Whether to skip decoding images.
*
* @throws IOException if the output could not be written
*/
- public void doIt(String in, String out, String password)
+ public void doIt(String in, String out, String password, boolean skipImages)
throws IOException
{
PDDocument doc = null;
@@ -66,7 +68,13 @@ public class WriteDecodedDoc
COSBase base = cosObject.getObject();
if (base instanceof COSStream)
{
- COSStream stream = (COSStream)base;
+ COSStream stream = (COSStream) base;
+ if (skipImages &&
+ COSName.XOBJECT.equals(stream.getItem(COSName.TYPE)) &&
+ COSName.IMAGE.equals(stream.getItem(COSName.SUBTYPE)))
+ {
+ continue;
+ }
byte[] bytes = new PDStream(stream).toByteArray();
stream.removeItem(COSName.FILTER);
OutputStream streamOut = stream.createOutputStream();
@@ -103,6 +111,7 @@ public class WriteDecodedDoc
String password = "";
String pdfFile = null;
String outputFile = null;
+ boolean skipImages = false;
for( int i=0; i<args.length; i++ )
{
if( args[i].equals( PASSWORD ) )
@@ -114,6 +123,10 @@ public class WriteDecodedDoc
}
password = args[i];
}
+ else if (args[i].equals( SKIPIMAGES ))
+ {
+ skipImages = true;
+ }
else
{
if( pdfFile == null )
@@ -136,7 +149,7 @@ public class WriteDecodedDoc
{
outputFile = calculateOutputFilename(pdfFile);
}
- app.doIt(pdfFile, outputFile, password);
+ app.doIt(pdfFile, outputFile, password, skipImages);
}
}
@@ -163,6 +176,7 @@ public class WriteDecodedDoc
String message = "Usage: java -jar pdfbox-app-x.y.z.jar WriteDecodedDoc [options] <inputfile> [outputfile]\n"
+ "\nOptions:\n"
+ " -password <password> : Password to decrypt the document\n"
+ + " skipImages : Don't uncompress images\n"
+ " <inputfile> : The PDF document to be decompressed\n"
+ " [outputfile] : The filename for the decompressed pdf\n";