diff options
| author | Andreas Fitzek <andreas.fitzek@iaik.tugraz.at> | 2015-02-25 12:50:41 +0100 | 
|---|---|---|
| committer | Andreas Fitzek <andreas.fitzek@iaik.tugraz.at> | 2015-02-25 12:50:41 +0100 | 
| commit | 23a283834becf8323489231ed5c48725f9716bb6 (patch) | |
| tree | 9c5b4b099656dbdc77118c1b2fd5ab201f091f63 /pdf-as-common/src/main/java | |
| parent | de87f168478445ffb2b018804ea46a834dffcfbf (diff) | |
| download | pdf-as-4-23a283834becf8323489231ed5c48725f9716bb6.tar.gz pdf-as-4-23a283834becf8323489231ed5c48725f9716bb6.tar.bz2 pdf-as-4-23a283834becf8323489231ed5c48725f9716bb6.zip | |
fixed base64 image value
Diffstat (limited to 'pdf-as-common/src/main/java')
| -rw-r--r-- | pdf-as-common/src/main/java/at/gv/egiz/pdfas/api/ws/PDFASSignParameters.java | 9 | ||||
| -rw-r--r-- | pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/utils/ImageUtils.java | 139 | 
2 files changed, 104 insertions, 44 deletions
| diff --git a/pdf-as-common/src/main/java/at/gv/egiz/pdfas/api/ws/PDFASSignParameters.java b/pdf-as-common/src/main/java/at/gv/egiz/pdfas/api/ws/PDFASSignParameters.java index 5fa5c3ee..32f10aa9 100644 --- a/pdf-as-common/src/main/java/at/gv/egiz/pdfas/api/ws/PDFASSignParameters.java +++ b/pdf-as-common/src/main/java/at/gv/egiz/pdfas/api/ws/PDFASSignParameters.java @@ -78,6 +78,7 @@ public class PDFASSignParameters implements Serializable {  	String invokeErrorUrl;  	String transactionId;  	String keyIdentifier; +	String qrCodeContent;  	String profile;  	PDFASPropertyMap preprocessor; @@ -145,6 +146,14 @@ public class PDFASSignParameters implements Serializable {  	public void setKeyIdentifier(String keyIdentifier) {  		this.keyIdentifier = keyIdentifier;  	} +	 +	@XmlElement(required = false, nillable = true, name="qrCodeContent") +	public String getQRCodeContent() { +		return qrCodeContent; +	} +	public void setQRCodeContent(String qrCodeContent) { +		this.qrCodeContent = qrCodeContent; +	}  	@XmlElement(required = false, nillable = true, name="preprocessorArguments")  	public PDFASPropertyMap getPreprocessor() { diff --git a/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/utils/ImageUtils.java b/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/utils/ImageUtils.java index dcf1f17b..ab087f2c 100644 --- a/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/utils/ImageUtils.java +++ b/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/utils/ImageUtils.java @@ -32,7 +32,9 @@ import java.awt.image.BufferedImage;  import java.awt.image.ColorModel;  import java.awt.image.IndexColorModel;  import java.awt.image.WritableRaster; +import java.io.ByteArrayInputStream;  import java.io.File; +import java.io.FileInputStream;  import java.io.IOException;  import java.io.InputStream;  import java.util.Iterator; @@ -41,6 +43,8 @@ import javax.imageio.ImageIO;  import javax.imageio.ImageReader;  import javax.imageio.stream.ImageInputStream; +import org.apache.commons.codec.binary.Base64; +import org.apache.commons.io.IOUtils;  import org.slf4j.Logger;  import org.slf4j.LoggerFactory; @@ -48,33 +52,30 @@ import at.gv.egiz.pdfas.common.exceptions.PdfAsException;  import at.gv.egiz.pdfas.common.settings.ISettings;  public class ImageUtils { -	 +  	private static final Logger logger = LoggerFactory  			.getLogger(ImageUtils.class); -	 +  	public static BufferedImage removeAlphaChannel(BufferedImage src) { -		if (src.getColorModel().hasAlpha()) -        { -            BufferedImage image = new BufferedImage(src.getWidth(), src.getHeight(), BufferedImage.TYPE_INT_RGB); -            Graphics2D g = image.createGraphics(); -            g.setComposite(AlphaComposite.Src); -            g.drawImage(src, 0, 0, null); -            g.dispose(); -            return image; -        } +		if (src.getColorModel().hasAlpha()) { +			BufferedImage image = new BufferedImage(src.getWidth(), +					src.getHeight(), BufferedImage.TYPE_INT_RGB); +			Graphics2D g = image.createGraphics(); +			g.setComposite(AlphaComposite.Src); +			g.drawImage(src, 0, 0, null); +			g.dispose(); +			return image; +		}  		return src;  		/* -		BufferedImage rgbImage = new BufferedImage(src.getWidth(), src.getHeight(), BufferedImage.TYPE_3BYTE_BGR); -        for (int x = 0; x < src.getWidth(); ++x) -        { -            for (int y = 0; y < src.getHeight(); ++y) -            { -                rgbImage.setRGB(x, y, src.getRGB(x, y) & 0xFFFFFF); -            } -        } -        return rgbImage;*/ +		 * BufferedImage rgbImage = new BufferedImage(src.getWidth(), +		 * src.getHeight(), BufferedImage.TYPE_3BYTE_BGR); for (int x = 0; x < +		 * src.getWidth(); ++x) { for (int y = 0; y < src.getHeight(); ++y) { +		 * rgbImage.setRGB(x, y, src.getRGB(x, y) & 0xFFFFFF); } } return +		 * rgbImage; +		 */  	} -	 +  	public static BufferedImage convertRGBAToIndexed(BufferedImage src) {  		BufferedImage dest = new BufferedImage(src.getWidth(), src.getHeight(),  				BufferedImage.TYPE_BYTE_INDEXED); @@ -110,46 +111,96 @@ public class ImageUtils {  		return new BufferedImage(icm2, raster, image.isAlphaPremultiplied(),  				null);  	} -	 -	public static Dimension getImageDimensions(InputStream is) throws IOException { + +	public static Dimension getImageDimensions(InputStream is) +			throws IOException {  		ImageInputStream in = ImageIO.createImageInputStream(is);  		try { -		    final Iterator<ImageReader> readers = ImageIO.getImageReaders(in); -		    if (readers.hasNext()) { -		        ImageReader reader = readers.next(); -		        try { -		            reader.setInput(in); -		            return new Dimension(reader.getWidth(0), reader.getHeight(0)); -		        } finally { -		            reader.dispose(); -		        } -		    } -		    throw new IOException("Failed to read Image file"); +			final Iterator<ImageReader> readers = ImageIO.getImageReaders(in); +			if (readers.hasNext()) { +				ImageReader reader = readers.next(); +				try { +					reader.setInput(in); +					return new Dimension(reader.getWidth(0), +							reader.getHeight(0)); +				} finally { +					reader.dispose(); +				} +			} +			throw new IOException("Failed to read Image file");  		} finally { -		    if (in != null) in.close(); +			if (in != null) +				in.close();  		}  	} -	 -	public static File getImageFile(String imageFile, ISettings settings) throws PdfAsException, IOException { + +	public static File getImageFile(String imageFile, ISettings settings) +			throws PdfAsException, IOException {  		File img_file = new File(imageFile);  		if (!img_file.isAbsolute()) {  			logger.debug("Image file declaration is relative. Prepending path of resources directory."); -			logger.debug("Image Location: " -					+ settings.getWorkingDirectory() -					+ File.separator + imageFile); -			img_file = new File(settings.getWorkingDirectory() +			logger.debug("Image Location: " + settings.getWorkingDirectory()  					+ File.separator + imageFile); +			img_file = new File(settings.getWorkingDirectory() + File.separator +					+ imageFile);  		} else {  			logger.debug("Image file declaration is absolute. Skipping file relocation.");  		}  		if (!img_file.exists()) { -			logger.debug("Image file \"" -					+ img_file.getCanonicalPath() +			logger.debug("Image file \"" + img_file.getCanonicalPath()  					+ "\" doesn't exist.");  			throw new PdfAsException("error.pdf.stamp.04");  		} -		 +  		return img_file;  	} + +	public static Dimension getImageDimensions(String imageValue, +			ISettings settings) throws PdfAsException, IOException { +		InputStream is = getImageInputStream(imageValue, settings); +		try { +			return getImageDimensions(is); +		} catch (Throwable e) { +			throw new PdfAsException("error.pdf.stamp.04", e); +		} finally { +			IOUtils.closeQuietly(is); +		} +	} + +	public static InputStream getImageInputStream(String imageValue, +			ISettings settings) throws PdfAsException, IOException { +		InputStream is = null; +		try { +			File img_file = ImageUtils.getImageFile(imageValue, settings); + +			if (!img_file.exists()) { +				throw new PdfAsException("error.pdf.stamp.04"); +			} + +			is = new FileInputStream(img_file); +		} catch (PdfAsException | IOException e) { +			try { +				is = new ByteArrayInputStream(Base64.decodeBase64(imageValue)); +			} catch (Throwable e1) { +				// Ignore value is not base 64! +				logger.debug("Value is not base64: ", e1); +				// rethrow e +				throw e; +			} +		} +		return is; +	} + +	public static BufferedImage getImage(String imageValue, ISettings settings) +			throws PdfAsException, IOException { +		InputStream is = getImageInputStream(imageValue, settings); +		try { +			return ImageIO.read(is); +		} catch (Throwable e) { +			throw new PdfAsException("error.pdf.stamp.04", e); +		} finally { +			IOUtils.closeQuietly(is); +		} +	}  } | 
