Last active
June 10, 2016 18:51
-
-
Save JoelGeraci-Datalogics/2527cf26ba67eab55b768baadd61a097 to your computer and use it in GitHub Desktop.
Saves a file using various settings
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Copyright Datalogics, Inc. 2015 | |
*/ | |
package pdfjt.cookbook.document; | |
import com.adobe.internal.io.ByteReader; | |
import com.adobe.internal.io.ByteWriter; | |
import com.adobe.internal.io.InputStreamByteReader; | |
import com.adobe.pdfjt.pdf.document.PDFDocument; | |
import com.adobe.pdfjt.pdf.document.PDFOpenOptions; | |
import com.adobe.pdfjt.pdf.document.PDFSaveFullOptions; | |
import com.adobe.pdfjt.pdf.document.PDFSaveIncrementalOptions; | |
import com.adobe.pdfjt.pdf.document.PDFSaveOptions; | |
import com.adobe.pdfjt.pdf.page.PDFPageTree; | |
import com.adobe.pdfjt.services.manipulations.PMMService; | |
import java.io.InputStream; | |
import java.net.URL; | |
import java.net.URLConnection; | |
import java.text.DecimalFormat; | |
import pdfjt.util.SampleFileServices; | |
/** | |
* Saves a file using various settings | |
*/ | |
public class SaveIncremental { | |
private static final String inputPDFURL = "http://dev.datalogics.com/cookbook/document/AcrobatDC_js_api_reference.pdf"; | |
private static final String outputDir = "cookbook/Document/output/"; | |
private static final String outputFile1 = "AcrobatDC_js_api_reference_Incremental.pdf"; | |
private static final String outputFile2 = "AcrobatDC_js_api_reference_Full.pdf"; | |
private static final String outputFile3 = "AcrobatDC_js_api_reference_FullCompress.pdf"; | |
private static final DecimalFormat formatter = new DecimalFormat("#,###"); | |
public static void main(String[] args) throws Exception { | |
/* | |
* Read in PDF input file | |
*/ | |
URLConnection connection = new URL(inputPDFURL).openConnection(); | |
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11"); | |
connection.connect(); | |
InputStream fis = connection.getInputStream(); | |
ByteReader byteReader = new InputStreamByteReader(fis); | |
PDFDocument pdfDocument = PDFDocument.newInstance(byteReader, PDFOpenOptions.newInstance()); | |
System.out.println("Original File Size: " + padLeft(formatter.format(pdfDocument.getFileSize()),7)); | |
PMMService pmmService = new PMMService(pdfDocument); | |
PDFPageTree pages = pdfDocument.requirePages(); | |
System.out.println("Deleting " + String.valueOf(pages.getNumPages()-1) + " pages..."); | |
// Delete from page 10 to the end of the document | |
pmmService.deletePages(pages.getPage(10), pages.getNumPages()-10); | |
String outputFileName1 = outputFile1; | |
ByteWriter outputFile1 = SampleFileServices.getRAFByteWriter(outputDir + outputFileName1); | |
// Save just the incremental changes to the document | |
pdfDocument.save(outputFile1, PDFSaveIncrementalOptions.newInstance()); | |
System.out.println("After Incremental Save: " + padLeft(formatter.format(pdfDocument.getFileSize()),7)); | |
String outputFileName2 = outputFile2; | |
ByteWriter outputFile2 = SampleFileServices.getRAFByteWriter(outputDir + outputFileName2); | |
// Save Full with a default set of options | |
pdfDocument.save(outputFile2, PDFSaveFullOptions.newInstance()); | |
System.out.println("After Full Save Default: " + padLeft(formatter.format(pdfDocument.getFileSize()),7)); | |
String outputFileName3 = outputFile3; | |
ByteWriter outputFile3 = SampleFileServices.getRAFByteWriter(outputDir + outputFileName3); | |
PDFSaveFullOptions pdfSaveFullOptions = PDFSaveFullOptions.newInstance(); | |
// Save Full and set the compression to compress everything. | |
pdfSaveFullOptions.setObjectCompressionMode(PDFSaveOptions.OBJECT_COMPRESSION_ALL); | |
pdfSaveFullOptions.setForceCompress(true); | |
pdfDocument.save(outputFile3, pdfSaveFullOptions); | |
System.out.println("After Full Save Compress: " + padLeft(formatter.format(pdfDocument.getFileSize()),7)); | |
} | |
public static String padLeft(String s, int n) { | |
return String.format("%1$" + n + "s", s); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment