org.jpedal.parser.PdfStreamDecoderForSampling Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of OpenViewerFX Show documentation
Show all versions of OpenViewerFX Show documentation
Open Source (LGPL) JavaFX PDF Viewer for NetBeans plugin
/*
* ===========================================
* Java Pdf Extraction Decoding Access Library
* ===========================================
*
* Project Info: http://www.idrsolutions.com
* Help section for developers at http://www.idrsolutions.com/support/
*
* (C) Copyright 1997-2017 IDRsolutions and Contributors.
*
* This file is part of JPedal/JPDF2HTML5
*
@LICENSE@
*
* ---------------
* PdfStreamDecoderForSampling.java
* ---------------
*/
package org.jpedal.parser;
import org.jpedal.external.ExternalHandlers;
import org.jpedal.io.PdfObjectReader;
import org.jpedal.objects.GraphicsState;
import org.jpedal.objects.raw.PdfDictionary;
import org.jpedal.objects.raw.PdfObject;
public class PdfStreamDecoderForSampling extends PdfStreamDecoder {
PdfStreamDecoderForSampling(final PdfObjectReader currentPdfFile) {
super(currentPdfFile);
}
/**
* just scan for DO and CM to get image sizes so we can work out sampling used
*/
public final float decodePageContentForImageSampling(final PdfObject pdfObject) { /* take out min's%%*/
try {
parserOptions.setRenderDirectly(true);
//check switched off
parserOptions.imagesProcessedFully = true;
//reset count
imageCount = 0;
gs = new GraphicsState(0, 0); /* take out min's%%*/
//get the binary data from the file
final byte[] b_data;
byte[][] pageContents = null;
if (pdfObject != null) {
pageContents = pdfObject.getKeyArray(PdfDictionary.Contents);
isDataValid = pdfObject.streamMayBeCorrupt();
}
if (pdfObject != null && pageContents == null) {
b_data = currentPdfFile.readStream(pdfObject, true, true, false, false, false, pdfObject.getCacheName(currentPdfFile.getObjectReader()));
} else if (pageStream != null) {
b_data = pageStream;
} else {
b_data = currentPdfFile.getObjectReader().readPageIntoStream(pdfObject);
}
//if page data found, turn it into a set of commands
//and decode the stream of commands
if (b_data != null && b_data.length > 0) {
getSamplingOnly = true;
decodeStreamIntoObjects(b_data, false);
}
//flush fonts
cache.resetFonts();
return parserOptions.getSamplingUsed();
} catch (final Error err) {
errorTracker.addPageFailureMessage("Problem decoding page " + err);
if (ExternalHandlers.throwMissingCIDError && err.getMessage() != null && err.getMessage().contains("kochi")) {
throw err;
}
}
return -1;
}
}