ConvertPdfToImage.java 10.4 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.adobe.aemfd.docmanager.Document
 *  com.adobe.fd.cpdf.api.ConvertPdfService
 *  com.adobe.fd.cpdf.api.ToImageOptionsSpec
 *  com.adobe.fd.cpdf.api.enumeration.CMYKPolicy
 *  com.adobe.fd.cpdf.api.enumeration.ColorCompression
 *  com.adobe.fd.cpdf.api.enumeration.ColorSpace
 *  com.adobe.fd.cpdf.api.enumeration.GrayScaleCompression
 *  com.adobe.fd.cpdf.api.enumeration.GrayScalePolicy
 *  com.adobe.fd.cpdf.api.enumeration.ImageConvertFormat
 *  com.adobe.fd.cpdf.api.enumeration.Interlace
 *  com.adobe.fd.cpdf.api.enumeration.JPEGFormat
 *  com.adobe.fd.cpdf.api.enumeration.MonochromeCompression
 *  com.adobe.fd.cpdf.api.enumeration.PNGFilter
 *  com.adobe.fd.cpdf.api.enumeration.RGBPolicy
 *  com.adobe.granite.workflow.WorkflowException
 *  com.adobe.granite.workflow.WorkflowSession
 *  com.adobe.granite.workflow.exec.WorkItem
 *  com.adobe.granite.workflow.exec.WorkflowData
 *  com.adobe.granite.workflow.metadata.MetaDataMap
 *  javax.jcr.Session
 *  org.apache.felix.scr.annotations.Component
 *  org.apache.felix.scr.annotations.Properties
 *  org.apache.felix.scr.annotations.Property
 *  org.apache.felix.scr.annotations.Reference
 *  org.apache.felix.scr.annotations.Service
 *  org.slf4j.Logger
 *  org.slf4j.LoggerFactory
 */
package com.adobe.fd.workflow.cpdf.impl;

import com.adobe.aemfd.docmanager.Document;
import com.adobe.fd.cpdf.api.ConvertPdfService;
import com.adobe.fd.cpdf.api.ToImageOptionsSpec;
import com.adobe.fd.cpdf.api.enumeration.CMYKPolicy;
import com.adobe.fd.cpdf.api.enumeration.ColorCompression;
import com.adobe.fd.cpdf.api.enumeration.ColorSpace;
import com.adobe.fd.cpdf.api.enumeration.GrayScaleCompression;
import com.adobe.fd.cpdf.api.enumeration.GrayScalePolicy;
import com.adobe.fd.cpdf.api.enumeration.ImageConvertFormat;
import com.adobe.fd.cpdf.api.enumeration.Interlace;
import com.adobe.fd.cpdf.api.enumeration.JPEGFormat;
import com.adobe.fd.cpdf.api.enumeration.MonochromeCompression;
import com.adobe.fd.cpdf.api.enumeration.PNGFilter;
import com.adobe.fd.cpdf.api.enumeration.RGBPolicy;
import com.adobe.fd.workflow.internal.common.AEMFDWorkflowProcess;
import com.adobe.fd.workflow.utils.DocumentUtils;
import com.adobe.granite.workflow.WorkflowException;
import com.adobe.granite.workflow.WorkflowSession;
import com.adobe.granite.workflow.exec.WorkItem;
import com.adobe.granite.workflow.exec.WorkflowData;
import com.adobe.granite.workflow.metadata.MetaDataMap;
import java.util.List;
import javax.jcr.Session;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Properties;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Component
@Service
@Properties(value={@Property(name="service.description", value={"ConvertPdfToImage"}), @Property(name="service.vendor", value={"Adobe"}), @Property(name="process.label", value={"ConvertPdfToImage"})})
public class ConvertPdfToImage
extends AEMFDWorkflowProcess {
    private static Logger logger = LoggerFactory.getLogger(ConvertPdfToImage.class);
    private static final String IMAGE_CONVERT_FORMAT = "imageConvertFormat";
    private static final String GRAY_SCALE_COMPRESSION = "grayScaleCompression";
    private static final String COLOR_COMPRESSION = "colorCompression";
    private static final String JPEG_FORMAT = "format";
    private static final String RGB_POLICY = "rgbPolicy";
    private static final String CMKY_POLICY = "cmykPolicy";
    private static final String GRAY_SCALE_POLICY = "grayScalePolicy";
    private static final String COLOR_SPACE = "colorSpace";
    private static final String RESOLUTION = "resolution";
    private static final String TILE_SIZE = "tileSize";
    private static final String ROWS_PER_STRIP = "rowsPerStrip";
    private static final String INTERLACE = "interlace";
    private static final String PNG_FILTER = "filter";
    private static final String MONOCHROME_COMPRESSION = "monochrome";
    private static final String MULTI_PAGE_TIFF = "multiPageTiff";
    private static final String INCLUDE_COMMENTS = "includeComments";
    private static final String IMAGE_SIZE_WIDTH = "imageSizeWidth";
    private static final String IMAGE_SIZE_HEIGHT = "imageSizeHeight";
    private static final String PAGE_RANGE = "pageRange";
    private static final String USE_LEGACY_IMAGE_SIZE_BEHAVIOR = "useLegacyImageSizeBehavior";
    private static final String DATA_PARAM = "inputpath";
    private static final String OUTPUT_PARAM = "output";
    static String fileName = "Image_";
    @Reference
    private ConvertPdfService convertPdfService;

    @Override
    protected void internal_execute(WorkItem workItem, WorkflowSession workflowSession, MetaDataMap metaDataMap) throws WorkflowException {
        try {
            String payload = workItem.getWorkflowData().getPayload().toString();
            if (payload.charAt(payload.length() - 1) == '/') {
                payload = payload.substring(0, payload.length() - 1);
            }
            Document dataDoc = new Document(payload + "/" + (String)metaDataMap.get("inputpath", String.class));
            ToImageOptionsSpec specs = this.getImageOptionsSpec(workItem, workflowSession, metaDataMap);
            List document = this.convertPdfService.toImage(dataDoc, specs);
            int num = 1;
            DocumentUtils.createFolderPathForFile((Session)workflowSession.adaptTo(Session.class), payload, (String)metaDataMap.get("output", String.class) + "/");
            for (Document d : document) {
                DocumentUtils.createOrUpdateDocument(workflowSession, d, payload + "/" + (String)metaDataMap.get("output", String.class), "RELATIVE_PLOAD:" + fileName + String.valueOf(num));
            }
        }
        catch (Exception e) {
            throw new WorkflowException((Throwable)e);
        }
    }

    private ToImageOptionsSpec getImageOptionsSpec(WorkItem workItem, WorkflowSession workflowSession, MetaDataMap metaDataMap) {
        ToImageOptionsSpec specs = new ToImageOptionsSpec();
        if (metaDataMap.get("imageConvertFormat", String.class) != null) {
            specs.setImageConvertFormat(ImageConvertFormat.valueOf((String)((String)metaDataMap.get("imageConvertFormat", String.class))));
        }
        if (metaDataMap.get("grayScaleCompression", String.class) != null) {
            specs.setGrayScaleCompression(GrayScaleCompression.valueOf((String)((String)metaDataMap.get("grayScaleCompression", String.class))));
        }
        if (metaDataMap.get("colorCompression", String.class) != null) {
            specs.setColorCompression(ColorCompression.valueOf((String)((String)metaDataMap.get("colorCompression", String.class))));
        }
        if (metaDataMap.get("format", String.class) != null) {
            specs.setFormat(JPEGFormat.valueOf((String)((String)metaDataMap.get("format", String.class))));
        }
        if (metaDataMap.get("rgbPolicy", String.class) != null) {
            specs.setRgbPolicy(RGBPolicy.valueOf((String)((String)metaDataMap.get("rgbPolicy", String.class))));
        }
        if (metaDataMap.get("cmykPolicy", String.class) != null) {
            specs.setCmykPolicy(CMYKPolicy.valueOf((String)((String)metaDataMap.get("cmykPolicy", String.class))));
        }
        if (metaDataMap.get("grayScalePolicy", String.class) != null) {
            specs.setGrayScalePolicy(GrayScalePolicy.valueOf((String)((String)metaDataMap.get("grayScalePolicy", String.class))));
        }
        if (metaDataMap.get("colorSpace", String.class) != null) {
            specs.setColorSpace(ColorSpace.valueOf((String)((String)metaDataMap.get("colorSpace", String.class))));
        }
        if (metaDataMap.get("resolution", String.class) != null) {
            specs.setResolution((String)metaDataMap.get("resolution", String.class));
        }
        if (metaDataMap.get("tileSize", Integer.class) != null) {
            specs.setTileSize(((Integer)metaDataMap.get("tileSize", Integer.class)).intValue());
        }
        if (metaDataMap.get("rowsPerStrip", Integer.class) != null) {
            specs.setRowsPerStrip(((Integer)metaDataMap.get("rowsPerStrip", Integer.class)).intValue());
        }
        if (metaDataMap.get("interlace", String.class) != null) {
            specs.setInterlace(Interlace.valueOf((String)((String)metaDataMap.get("interlace", String.class))));
        }
        if (metaDataMap.get("filter", String.class) != null) {
            specs.setFilter(PNGFilter.valueOf((String)((String)metaDataMap.get("filter", String.class))));
        }
        if (metaDataMap.get("monochrome", String.class) != null) {
            specs.setMonochrome(MonochromeCompression.valueOf((String)((String)metaDataMap.get("monochrome", String.class))));
        }
        if (metaDataMap.get("multiPageTiff", Boolean.class) != null) {
            specs.setMultiPageTiff((Boolean)metaDataMap.get("multiPageTiff", Boolean.class));
        } else {
            specs.setMultiPageTiff(Boolean.valueOf(false));
        }
        if (metaDataMap.get("includeComments", Boolean.class) != null) {
            specs.setIncludeComments(((Boolean)metaDataMap.get("includeComments", Boolean.class)).booleanValue());
        } else {
            specs.setIncludeComments(false);
        }
        if (metaDataMap.get("imageSizeHeight", String.class) != null) {
            specs.setImageSizeHeight((String)metaDataMap.get("imageSizeHeight", String.class));
        }
        if (metaDataMap.get("imageSizeWidth", String.class) != null) {
            specs.setImageSizeWidth((String)metaDataMap.get("imageSizeWidth", String.class));
        }
        if (metaDataMap.get("pageRange", String.class) != null) {
            specs.setPageRange((String)metaDataMap.get("pageRange", String.class));
        }
        if (metaDataMap.get("useLegacyImageSizeBehavior", Boolean.class) != null) {
            specs.setUseLegacyImageSizeBehavior(((Boolean)metaDataMap.get("useLegacyImageSizeBehavior", Boolean.class)).booleanValue());
        } else {
            specs.setUseLegacyImageSizeBehavior(false);
        }
        return specs;
    }

    protected void bindConvertPdfService(ConvertPdfService convertPdfService) {
        this.convertPdfService = convertPdfService;
    }

    protected void unbindConvertPdfService(ConvertPdfService convertPdfService) {
        if (this.convertPdfService == convertPdfService) {
            this.convertPdfService = null;
        }
    }
}