private String getPartialStreamCommand(final int indexOfStopFilter) { List<COSName> avaiablrFilters = new PDStream(stream).getFilters(); StringBuilder nameListBuilder = new StringBuilder(); for (int i = indexOfStopFilter; i < avaiablrFilters.size(); i++) { nameListBuilder.append(avaiablrFilters.get(i).getName()).append(" & "); } nameListBuilder.delete(nameListBuilder.lastIndexOf("&"), nameListBuilder.length()); return "Keep " + nameListBuilder.toString() + "..."; }
private List<String> getStopFilterList(final int stopFilterIndex) { List<COSName> avaiablrFilters = new PDStream(stream).getFilters(); final List<String> stopFilters = new ArrayList<>(1); stopFilters.add(avaiablrFilters.get(stopFilterIndex).getName()); return stopFilters; }
private Map<String, List<String>> createFilterList(COSStream stream) { Map<String, List<String>> filterList = new LinkedHashMap<>(); if (isImage) { filterList.put(IMAGE, null); } filterList.put(DECODED, null); PDStream pdStream = new PDStream(stream); if (pdStream.getFilters() != null) { int filtersSize = pdStream.getFilters().size(); for (int i = filtersSize - 1; i >= 1; i--) { filterList.put(getPartialStreamCommand(i), getStopFilterList(i)); } filterList.put(getFilteredLabel(), null); } return filterList; }
/** * produce possible partially decoded stream saving menu items * @param cosStream stream to save * @return JMenuItems for saving partially decoded streams */ private List<JMenuItem> getPartiallyDecodedStreamSaveMenu(final COSStream cosStream) { List<JMenuItem> menuItems = new ArrayList<>(); PDStream stream = new PDStream(cosStream); List<COSName> filters = stream.getFilters(); for (int i = filters.size() - 1; i >= 1; i--) { menuItems.add(getPartialStreamSavingMenuItem(i, stream)); } return menuItems; }
private JMenuItem getPartialStreamSavingMenuItem(final int indexOfStopFilter, final PDStream stream) { List<COSName> filters = stream.getFilters(); final List<String> stopFilters = new ArrayList<>(1); stopFilters.add(filters.get(indexOfStopFilter).getName()); StringBuilder nameListBuilder = new StringBuilder(); for (int i = indexOfStopFilter; i < filters.size(); i++) { nameListBuilder.append(filters.get(i).getName()).append(" & "); } nameListBuilder.delete(nameListBuilder.lastIndexOf("&"), nameListBuilder.length()); JMenuItem menuItem = new JMenuItem("Keep " + nameListBuilder.toString() + "..."); menuItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { try { InputStream data = stream.createInputStream(stopFilters); saveStream(IOUtils.toByteArray(data), null, null); } catch (IOException e) { e.printStackTrace(); } } }); return menuItem; }
public String getSuffix() List<COSName> filters = getStream().getFilters();
List<COSName> filters = getFilters(); if (filters != null)
public void addCompression() List<COSName> filters = getFilters(); if (filters == null)
/** * Creates an Image XObject with the given stream as its contents and current color spaces. This * constructor is for internal PDFBox use and is not for PDF generation. Users who want to * create images should look at {@link #createFromFileByExtension(File, PDDocument) }. * * @param stream the XObject stream to read * @param resources the current resources * @throws java.io.IOException if there is an error creating the XObject. */ public PDImageXObject(PDStream stream, PDResources resources) throws IOException { super(stream, COSName.IMAGE); this.resources = resources; List<COSName> filters = stream.getFilters(); if (filters != null && !filters.isEmpty() && COSName.JPX_DECODE.equals(filters.get(filters.size()-1))) { try (COSInputStream is = stream.createInputStream()) { DecodeResult decodeResult = is.getDecodeResult(); stream.getCOSObject().addAll(decodeResult.getParameters()); this.colorSpace = decodeResult.getJPXColorSpace(); } } }
private String getJBIG2Suffix(PDImageXObject image) { List<COSName> filters = image.getStream().getFilters(); if (filters != null && filters.contains(COSName.JBIG2_DECODE)) { return "jb2"; } return null; } }
private String getJBIG2Suffix(PDImageXObject image) { List<COSName> filters = image.getStream().getFilters(); if (filters != null && filters.contains(COSName.JBIG2_DECODE)) { return "jb2"; } return null; } }
private void init() { try { List<COSName> filters = imageXObject.getStream().getFilters(); if(filters != null) { for (COSName filter : filters) { this.filterNames.add(filter.getName()); } } } catch (IOException e) { this.errors.add("Can't get image stream filters"); LOGGER.info(e); } }
public String getSuffix() List<COSName> filters = getStream().getFilters();
public String getSuffix() List<COSName> filters = getStream().getFilters();
private List<JPEG2000> parseJPXStream() { try { PDStream stream = ((PDImageXObjectProxy) (this.simplePDObject)).getPDStream(); List<COSName> filters = stream.getFilters(); if (filters != null && filters.contains(COSName.JPX_DECODE)) { // TODO: handle the case when jpx stream is additionally hex // encoded try (InputStream image = stream.getStream().getFilteredStream()) { ArrayList<JPEG2000> list = new ArrayList<>(MAX_NUMBER_OF_ELEMENTS); PBoxJPEG2000 jpeg2000 = PBoxJPEG2000.fromStream(image, this.document, this.flavour); this.colorSpaceFromImage = jpeg2000.getImageColorSpace(); list.add(jpeg2000); return Collections.unmodifiableList(list); } } } catch (IOException e) { LOGGER.debug("Problems with stream obtain.", e); } return Collections.emptyList(); }
List<COSName> filters = getFilters(); if (filters != null)
List<COSName> filters = getFilters(); if (filters != null)
public void addCompression() List<COSName> filters = getFilters(); if (filters == null)
public void addCompression() List<COSName> filters = getFilters(); if (filters == null)
/** * Creates an Image XObject with the given stream as its contents and current color spaces. This * constructor is for internal PDFBox use and is not for PDF generation. Users who want to * create images should look at {@link #createFromFileByExtension(File, PDDocument) }. * * @param stream the XObject stream to read * @param resources the current resources * @throws java.io.IOException if there is an error creating the XObject. */ public PDImageXObject(PDStream stream, PDResources resources) throws IOException { super(stream, COSName.IMAGE); this.resources = resources; List<COSName> filters = stream.getFilters(); if (filters != null && !filters.isEmpty() && COSName.JPX_DECODE.equals(filters.get(filters.size()-1))) { COSInputStream is = null; try { is = stream.createInputStream(); DecodeResult decodeResult = is.getDecodeResult(); stream.getCOSObject().addAll(decodeResult.getParameters()); this.colorSpace = decodeResult.getJPXColorSpace(); } finally { IOUtils.closeQuietly(is); } } }