diff options
| author | Andreas Fitzek <andreas.fitzek@iaik.tugraz.at> | 2014-10-16 12:45:01 +0200 | 
|---|---|---|
| committer | Andreas Fitzek <andreas.fitzek@iaik.tugraz.at> | 2014-10-16 12:45:01 +0200 | 
| commit | 63784f692a50606f34702706761edac052fdac60 (patch) | |
| tree | 50f78a92c35cdfced053209a334944acdee2b983 /pdf-as-lib/src/main/java/at/knowcenter/wag | |
| parent | 7b105bafe5a1f4c01224c8ae0b820a478b09447f (diff) | |
| download | pdf-as-4-63784f692a50606f34702706761edac052fdac60.tar.gz pdf-as-4-63784f692a50606f34702706761edac052fdac60.tar.bz2 pdf-as-4-63784f692a50606f34702706761edac052fdac60.zip | |
Introduced PDF-AS Backends, removed all pdfbox specific code to pdfbox backend
Diffstat (limited to 'pdf-as-lib/src/main/java/at/knowcenter/wag')
19 files changed, 0 insertions, 2270 deletions
| diff --git a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/PDFPage.java b/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/PDFPage.java deleted file mode 100644 index 84574b41..00000000 --- a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/PDFPage.java +++ /dev/null @@ -1,599 +0,0 @@ -/******************************************************************************* - * <copyright> Copyright 2014 by E-Government Innovation Center EGIZ, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - *  - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - *  - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - *  - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - ******************************************************************************/ -/** - * <copyright> Copyright 2006 by Know-Center, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - * - * $Id: PDFPage.java,v 1.5 2006/10/31 08:09:33 wprinz Exp $ - */ -package at.knowcenter.wag.egov.egiz.pdf; - -import java.awt.Rectangle; -import java.awt.geom.GeneralPath; -import java.io.IOException; -import java.util.List; -import java.util.Map; - -import org.apache.commons.lang3.math.NumberUtils; -import org.apache.pdfbox.cos.COSBase; -import org.apache.pdfbox.cos.COSName; -import org.apache.pdfbox.cos.COSStream; -import org.apache.pdfbox.pdmodel.PDPage; -import org.apache.pdfbox.pdmodel.PDResources; -import org.apache.pdfbox.pdmodel.common.PDRectangle; -import org.apache.pdfbox.pdmodel.common.PDStream; -import org.apache.pdfbox.pdmodel.font.PDFont; -import org.apache.pdfbox.pdmodel.graphics.xobject.PDXObject; -import org.apache.pdfbox.pdmodel.graphics.xobject.PDXObjectForm; -import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotation; -import org.apache.pdfbox.util.Matrix; -import org.apache.pdfbox.util.PDFOperator; -import org.apache.pdfbox.util.PDFTextStripper; -import org.apache.pdfbox.util.TextPosition; -import org.apache.pdfbox.util.operator.OperatorProcessor; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import at.knowcenter.wag.egov.egiz.pdf.operator.path.construction.ClosePath; -import at.knowcenter.wag.egov.egiz.pdf.operator.path.construction.CurveTo; -import at.knowcenter.wag.egov.egiz.pdf.operator.path.construction.CurveToReplicateFinalPoint; -import at.knowcenter.wag.egov.egiz.pdf.operator.path.construction.CurveToReplicateInitialPoint; -import at.knowcenter.wag.egov.egiz.pdf.operator.path.construction.LineTo; -import at.knowcenter.wag.egov.egiz.pdf.operator.path.construction.MoveTo; -import at.knowcenter.wag.egov.egiz.pdf.operator.path.painting.CloseAndStrokePath; -import at.knowcenter.wag.egov.egiz.pdf.operator.path.painting.CloseFillEvenOddAndStrokePath; -import at.knowcenter.wag.egov.egiz.pdf.operator.path.painting.CloseFillNonZeroAndStrokePath; -import at.knowcenter.wag.egov.egiz.pdf.operator.path.painting.EndPath; -import at.knowcenter.wag.egov.egiz.pdf.operator.path.painting.FillEvenOddAndStrokePath; -import at.knowcenter.wag.egov.egiz.pdf.operator.path.painting.FillNonZeroAndStrokePath; -import at.knowcenter.wag.egov.egiz.pdf.operator.path.painting.FillPathEvenOddRule; -import at.knowcenter.wag.egov.egiz.pdf.operator.path.painting.FillPathNonZeroWindingNumberRule; -import at.knowcenter.wag.egov.egiz.pdf.operator.path.painting.StrokePath; - -/** - * PDFPage is an inner class that is used to calculate the page length of a PDF - * Document page. It extends the PDFTextStripper class and implement one - * interested method: {@link at.knowcenter.wag.egov.egiz.pdf.PDFPage#showCharacter(TextPosition)}<br> - * This method is called when processing the FileStream. By calling the method - * {@link org.apache.pdfbox.util.PDFStreamEngine#processStream(org.apache.pdfbox.pdmodel.PDPage, org.apache.pdfbox.pdmodel.PDResources, org.pdfbox.cos.COSStream)} - * the implemented method showCharacter is called. - *  - * @author wlackner - * @see PDFTextStripper - */ -public class PDFPage extends PDFTextStripper { -	/** -	 * The logger definition. -	 */ -    private static final Logger logger = LoggerFactory.getLogger(PDFPage.class); - -	/** -	 * The maximum (lowest) y position of a character. -	 */ -	protected float max_character_ypos = Float.NEGATIVE_INFINITY; - -	/** -	 * The maximum (lowest y position of an image. -	 */ -	protected float max_image_ypos = Float.NEGATIVE_INFINITY; - -	/** -	 * The effective page height. -	 */ -	protected float effectivePageHeight; - -	/** -	 * The path currently being constructed. -	 */ -	private GeneralPath currentPath = new GeneralPath(); - -	/** -	 * The lowest position of a drawn path (originating from top). -	 */ -	private float maxPathRelatedYPositionFromTop = Float.NEGATIVE_INFINITY; - -	/** -	 * Constructor. -	 *  -	 * @param effectivePageHeight -	 *            The height of the page to be evaluated. PDF elements outside -	 *            this height will not be considered. -	 *  -	 * @throws java.io.IOException -	 */ -	public PDFPage(float effectivePageHeight, boolean legacy32) throws IOException { -		super(); - -		this.effectivePageHeight = effectivePageHeight; - -		OperatorProcessor newInvoke = new MyInvoke(this); -		newInvoke.setContext(this); -        this.registerOperatorProcessor("Do", newInvoke); -         -		if (!legacy32) { -			registerCustomPathOperators(); -		} -	} - -	/** -	 * Registers operators responsible for path construction and painting in -	 * order to fix auto positioning on pages with path elements. -	 *  -	 * @author Datentechnik Innovation GmbH -	 */ -	private void registerCustomPathOperators() { - -		// *** path construction - -        this.registerOperatorProcessor("m", new MoveTo(this)); -        this.registerOperatorProcessor("l", new LineTo(this)); -        this.registerOperatorProcessor("c", new CurveTo(this)); -        this.registerOperatorProcessor("y", new CurveToReplicateFinalPoint(this)); -        this.registerOperatorProcessor("v", new CurveToReplicateInitialPoint(this)); -        this.registerOperatorProcessor("h", new ClosePath(this)); - -		// *** path painting - -		// "S": stroke path -        this.registerOperatorProcessor("S", new StrokePath(this)); -        this.registerOperatorProcessor("s", new CloseAndStrokePath(this)); -        this.registerOperatorProcessor("f", new FillPathNonZeroWindingNumberRule(this)); -        this.registerOperatorProcessor("F", new FillPathNonZeroWindingNumberRule(this)); -        this.registerOperatorProcessor("f*", new FillPathEvenOddRule(this)); -        this.registerOperatorProcessor("b", new CloseFillNonZeroAndStrokePath(this)); -        this.registerOperatorProcessor("B", new FillNonZeroAndStrokePath(this)); -        this.registerOperatorProcessor("b*", new CloseFillEvenOddAndStrokePath(this)); -        this.registerOperatorProcessor("B*", new FillEvenOddAndStrokePath(this)); -        this.registerOperatorProcessor("n", new EndPath(this)); - -		// Note: The graphic context -		// (org.pdfbox.pdmodel.graphics.PDGraphicsState) of the underlying -		// pdfbox library does -		// not yet support clipping. This prevents feasible usage of clipping -		// operators (W, W*). -		// operators.put("W", new ...(this)); -		// operators.put("W*", new ...(this)); - -	} - -	/** -	 * Returns the path currently being constructed. -	 *  -	 * @return The path currently being constructed. -	 */ -	public GeneralPath getCurrentPath() { -		return currentPath; -	} - -	/** -	 * Sets the current path. -	 *  -	 * @param currentPath -	 *            The new current path. -	 */ -	public void setCurrentPath(GeneralPath currentPath) { -		this.currentPath = currentPath; -	} - -	/** -	 * Registers a rectangle that bounds the path currently being drawn. -	 *  -	 * @param bounds -	 *            A rectangle depicting the bounds (coordinates originating from -	 *            bottom left). -	 * @author Datentechnik Innovation GmbH -	 */ -	public void registerPathBounds(Rectangle bounds) { -		if (!bounds.isEmpty()) { -			logger.debug("Registering path bounds: " + bounds); - -			// vertical start of rectangle (counting from top of page) -			float upperBoundYPositionFromTop; - -			// vertical end of rectangle (counting from top of page) -			// this depicts the current end of path-related page content -			float lowerBoundYPositionFromTop; - -			PDRectangle boundaryBox = this.getCurrentPage().findMediaBox(); -			float pageHeight; - -			switch (this.getCurrentPage().findRotation()) { -			case 90: // CW -				pageHeight = boundaryBox.getWidth(); -				upperBoundYPositionFromTop = (float) bounds.getMinX(); -				lowerBoundYPositionFromTop = (float) bounds.getMaxX(); -				break; -			case 180: -				pageHeight = boundaryBox.getHeight(); -				upperBoundYPositionFromTop = (float) bounds.getMinY(); -				lowerBoundYPositionFromTop = (float) bounds.getMaxY(); -				break; -			case 270: // CCW -				pageHeight = boundaryBox.getWidth(); -				upperBoundYPositionFromTop = pageHeight -						- (float) bounds.getMaxX(); -				lowerBoundYPositionFromTop = pageHeight -						- (float) bounds.getMinX(); -				break; -			default: -				pageHeight = boundaryBox.getHeight(); -				upperBoundYPositionFromTop = pageHeight -						- (float) bounds.getMaxY(); -				lowerBoundYPositionFromTop = pageHeight -						- (float) bounds.getMinY(); -				break; -			} - -			// new maximum ? -			if (lowerBoundYPositionFromTop > maxPathRelatedYPositionFromTop) { -				// Is the rectangle (at least partly) located above the footer -				// line? -				// (effective page height := page height - footer line) -				if (upperBoundYPositionFromTop <= effectivePageHeight) { -					// yes: update current end of path-related page content -					maxPathRelatedYPositionFromTop = lowerBoundYPositionFromTop; -					logger.trace("New max path related y position (from top): " -							+ maxPathRelatedYPositionFromTop); -				} else { -					// no: rectangle is fully located below the footer line -> -					// ignore -					logger.trace("Ignoring path bound below the footer line."); -				} -			} -		} -	} - -	protected void processOperator(PDFOperator operator, List<COSBase> arguments) -			throws IOException { -		logger.trace("operator = " + operator); -		super.processOperator(operator, arguments); -	} - -	@Override -	protected void processTextPosition(TextPosition text) { -		showCharacter(text); -	} -	 -	// exthex -	/** -	 * A method provided as an event interface to allow a subclass to perform -	 * some specific functionality when a character needs to be displayed. This -	 * method is used to calculate the latest position of a text in the page. -	 * Sorry for this missinterpretation of the method, but it is the only way -	 * to do this (provided by PDFBox)!!! -	 *  -	 * @param text -	 *            the character to be displayed -> calculate there y position. -	 */ -	protected void showCharacter(TextPosition text) { -		float current_y = text.getY(); -		final String character = text.getCharacter(); - -		int pageRotation = this.getCurrentPage().findRotation(); -		// logger_.debug("PageRotation = " + pageRotation); -		if (pageRotation == 0) { -			current_y = text.getY(); -		} -		if (pageRotation == 90) { -			current_y = text.getX(); -		} -		if (pageRotation == 180) { -			float page_height = this.getCurrentPage().findMediaBox().getHeight(); -			current_y = page_height - text.getY(); -		} -		if (pageRotation == 270) { -			float page_height = this.getCurrentPage().findMediaBox().getHeight(); -			current_y = page_height - text.getX(); -		} - -		if (current_y > this.effectivePageHeight) { -			// logger_.debug("character is below footer_line. footer_line = " + -			// this.footer_line + ", text.character=" + character + ", y=" + -			// current_y); -			return; -		} - -		// store ypos of the char if it is not empty -		if (!at.gv.egiz.pdfas.common.utils.StringUtils.whiteSpaceTrim(character).isEmpty() &&  -				current_y > this.max_character_ypos) { -			this.max_character_ypos = current_y; -		} - -	} - -	// use this funtion getting an unsorted text output -	// public void showString(byte[] string) { -	// logger_.debug(new String(string)); -	// } - -	/** -	 * Returns the calculated page length. -	 *  -	 * @return the max page length value -	 */ -	public float getMaxPageLength() { -		if (logger.isDebugEnabled()) { -			logger.debug("Determining page content length: text=" -					+ max_character_ypos + ", image=" + max_image_ypos -					+ ", path=" + maxPathRelatedYPositionFromTop); -		} -		return NumberUtils.max(max_character_ypos, max_image_ypos, -                maxPathRelatedYPositionFromTop); -	} - -	@Override -	public Map<String, PDFont> getFonts() { -		 -		COSBase fontObj = null; -		 -		if(getCurrentPage().getResources() != null &&  -				getCurrentPage().getResources().getCOSDictionary() != null && -				getCurrentPage().getResources().getCOSDictionary().getDictionaryObject(COSName.FONT) != null) { -			fontObj = getCurrentPage().getResources().getCOSDictionary().getDictionaryObject(COSName.FONT); -		} -		Map<String, PDFont> fontMap = getCurrentPage().findResources().getFonts(); -		 -		if(fontObj != null) { -			getCurrentPage().getResources().getCOSDictionary().setItem(COSName.FONT, fontObj); -		} -		 -		return fontMap; -	} -	 -	public class MyInvoke extends OperatorProcessor { - -        private PDFPage mypage; - -        public MyInvoke(PDFPage page) { -            this.mypage = page; -        } - -		public void process(PDFOperator operator, List<COSBase> arguments) -				throws IOException { -			COSName name = (COSName) arguments.get(0); - -			// PDResources res = context.getResources(); - -			Map<String, PDXObject> xobjects = context.getXObjects(); -			PDXObject xobject = xobjects.get(name.getName()); - -			PDStream stream = xobject.getPDStream(); -			COSStream cos_stream = stream.getStream(); - -			COSName subtype = (COSName) cos_stream -					.getDictionaryObject(COSName.SUBTYPE); -			if (subtype.equals(COSName.IMAGE)) { -				logger.debug("XObject Image"); - -				Matrix ctm = context.getGraphicsState() -						.getCurrentTransformationMatrix(); -                logger.debug("ctm = " + ctm); - -				Pos[] coordinates = new Pos[] { new Pos(0, 0, 1), -						new Pos(1, 0, 1), new Pos(0, 1, 1), new Pos(1, 1, 1) }; - -				Pos[] transformed_coordinates = transtormCoordinates( -						coordinates, ctm); - -				/********************************************************** -				 * pdf-as fix: calculating min and max point of an image to look -				 * where the signature should be placed fix solves problems with -				 * footer and images and placement of the signature in an image -				 * only pdf document -				 **********************************************************/ - -				float actual_lowest_point = Float.NaN; -				float actual_starting_point = Float.NaN; - -				int pageRotation = this.mypage.getCurrentPage().findRotation(); -				logger.debug("PageRotation = " + pageRotation); -				if (pageRotation == 0) { -					float min_y = findMinY(transformed_coordinates); -                    logger.debug("min_y = " + min_y); -					float page_height = this.mypage.getCurrentPage().findMediaBox().getHeight(); -                    logger.debug("page_height = " + page_height); - -					actual_lowest_point = page_height - min_y; -					actual_starting_point = page_height -							- findMaxY(transformed_coordinates); -				} -				if (pageRotation == 90) { -					float max_x = findMaxX(transformed_coordinates); -                    logger.debug("max_x = " + max_x); -					float page_width = this.mypage.getCurrentPage().findMediaBox().getWidth(); -                    logger.debug("page_width = " + page_width); - -					actual_lowest_point = max_x; -					actual_starting_point = findMinX(transformed_coordinates); -				} -				if (pageRotation == 180) { -					float min_y = findMinY(transformed_coordinates); -                    logger.debug("min_y = " + min_y); -					float page_height = this.mypage.getCurrentPage().findMediaBox().getHeight(); -					actual_lowest_point = page_height -							- findMaxY(transformed_coordinates); -					actual_starting_point = page_height - min_y; -				} -				if (pageRotation == 270) { -					float min_x = findMinX(transformed_coordinates); -                    logger.debug("min_x = " + min_x); - -					float page_width = this.mypage.getCurrentPage().findMediaBox().getWidth(); -                    logger.debug("page_width = " + page_width); - -					actual_lowest_point = page_width - min_x; -					actual_starting_point = page_width -							- findMaxX(transformed_coordinates); -				} - -                logger.debug("actual_lowest_point = " + actual_lowest_point); - -				if (actual_lowest_point > PDFPage.this.effectivePageHeight -						&& actual_starting_point > PDFPage.this.effectivePageHeight) { -                    logger.debug("image is below footer_line"); -					return; -				} - -				if (actual_lowest_point > PDFPage.this.max_image_ypos) { -					PDFPage.this.max_image_ypos = actual_lowest_point; -				} - -				return; -			} - -			if (xobject instanceof PDXObjectForm) { -				PDXObjectForm form = (PDXObjectForm) xobject; -				COSStream invoke = (COSStream) form.getCOSObject(); -				PDResources pdResources = form.getResources(); -				PDPage page = context.getCurrentPage(); -				if (pdResources == null) { -					pdResources = page.findResources(); -				} - -				getContext().processSubStream(page, pdResources, invoke); -			} -		} -	} - -	public static Pos[] transtormCoordinates(Pos[] coordinates, Matrix m) { -		Pos[] transformed = new Pos[coordinates.length]; -		for (int i = 0; i < coordinates.length; i++) { -			transformed[i] = transtormCoordinate(coordinates[i], m); -		} -		return transformed; -	} - -	public static Pos transtormCoordinate(Pos pos, Matrix m) { -		Pos transformed = new Pos(); -		transformed.x = pos.x * m.getValue(0, 0) + pos.y * m.getValue(1, 0) -				+ pos.z * m.getValue(2, 0); -		transformed.y = pos.x * m.getValue(0, 1) + pos.y * m.getValue(1, 1) -				+ pos.z * m.getValue(2, 1); -		transformed.z = pos.x * m.getValue(0, 2) + pos.y * m.getValue(1, 2) -				+ pos.z * m.getValue(2, 2); - -        logger.debug(" transformed " + pos + " --> " + transformed); -		return transformed; -	} - -	public static float findMinY(Pos[] coordinates) { -		float min = Float.POSITIVE_INFINITY; -		for (int i = 0; i < coordinates.length; i++) { -			if (coordinates[i].y < min) { -				min = coordinates[i].y; -			} -		} -		return min; -	} - -	public static float findMaxY(Pos[] coordinates) { -		float max = 0; -		for (int i = 0; i < coordinates.length; i++) { -			if (coordinates[i].y > max) { -				max = coordinates[i].y; -			} -		} -		return max; -	} - -	public static float findMaxX(Pos[] coordinates) { -		float max = Float.NEGATIVE_INFINITY; -		for (int i = 0; i < coordinates.length; i++) { -			if (coordinates[i].x > max) { -				max = coordinates[i].x; -			} -		} -		return max; -	} - -	public static float findMinX(Pos[] coordinates) { -		float min = Float.POSITIVE_INFINITY; -		for (int i = 0; i < coordinates.length; i++) { -			if (coordinates[i].x < min) { -				min = coordinates[i].x; -			} -		} -		return min; -	} - -	public void processAnnotation(PDAnnotation anno) { -		float current_y = anno.getRectangle().getLowerLeftY(); -		PDPage page = anno.getPage(); -		 -		if(page == null) { -			page = getCurrentPage(); -		} -		 -		if(page == null) { -			logger.warn("Annotation without page! The position might not be correct!"); -			return; -		} -		 -		int pageRotation = page.findRotation(); -		// logger_.debug("PageRotation = " + pageRotation); -		if (pageRotation == 0) { -			float page_height = page.findMediaBox().getHeight(); -			current_y = page_height - anno.getRectangle().getLowerLeftY(); -		} -		if (pageRotation == 90) { -			current_y = anno.getRectangle().getLowerLeftX(); -		} -		if (pageRotation == 180) { -			current_y = anno.getRectangle().getUpperRightY(); -		} -		if (pageRotation == 270) { -			float page_height = page.findMediaBox().getHeight(); -			current_y = page_height - anno.getRectangle().getUpperRightX(); -		} - -		if (current_y > this.effectivePageHeight) { -			return; -		} - -		// store ypos of the char if it is not empty -		if (current_y > this.max_character_ypos) { -			this.max_character_ypos = current_y; -		} -	} -	 -} diff --git a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/PDFUtilities.java b/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/PDFUtilities.java deleted file mode 100644 index 808efbe4..00000000 --- a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/PDFUtilities.java +++ /dev/null @@ -1,110 +0,0 @@ -/******************************************************************************* - * <copyright> Copyright 2014 by E-Government Innovation Center EGIZ, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - *  - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - *  - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - *  - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - ******************************************************************************/ -/** - * <copyright> Copyright 2006 by Know-Center, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - * - * $Id: PDFUtilities.java,v 1.3 2006/10/31 08:09:33 wprinz Exp $ - */ -package at.knowcenter.wag.egov.egiz.pdf; - -import java.io.IOException; -import java.util.Iterator; -import java.util.List; - -import org.apache.pdfbox.cos.COSStream; -import org.apache.pdfbox.pdmodel.PDDocument; -import org.apache.pdfbox.pdmodel.PDPage; -import org.apache.pdfbox.pdmodel.PDResources; -import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotation; - -import at.gv.egiz.pdfas.common.exceptions.PDFIOException; - -/** - * Contains useful helpers for accessing PDF documents. - * - * @author wprinz - * @author mruhmer - */ -public abstract class PDFUtilities { -	public static float calculatePageLength(PDDocument document, int page, -			float effectivePageHeight, /* int pagerotation, */boolean legacy32) -			throws PDFIOException { -		// int last_page_id = document.getNumberOfPages(); -		List<?> allPages = document.getDocumentCatalog().getAllPages(); -		PDPage pdpage = (PDPage) allPages.get(page); -		// pdpage.setRotation(pagerotation); -		return calculatePageLength(pdpage, effectivePageHeight, legacy32); -	} - -	public static float calculatePageLength(PDPage page, -			float effectivePageHeight, boolean legacy32) throws PDFIOException { -		try { -			PDFPage my_page = new PDFPage(effectivePageHeight, legacy32); -			PDResources resources = page.findResources(); -			if (page.getContents() != null) { -				COSStream stream = page.getContents().getStream(); -				// List<PDThreadBead> articles = page.getThreadBeads(); -				// my_page.processMyPage(page); -				my_page.processStream(page, resources, stream); -			} -			if (!legacy32) { -				if (page.getAnnotations() != null) { -					Iterator<PDAnnotation> annotationsIt = page -							.getAnnotations().iterator(); - -					while (annotationsIt.hasNext()) { -						PDAnnotation annotation = annotationsIt.next(); -						if (!annotation.isInvisible()) { -							my_page.processAnnotation(annotation); -						} -					} -				} -			} -			return my_page.getMaxPageLength(); -		} catch (IOException e) { -			throw new PDFIOException("error.pdf.stamp.11", e); -		} -	} - -} diff --git a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/PathConstructionOperatorProcessor.java b/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/PathConstructionOperatorProcessor.java deleted file mode 100644 index 2e16c117..00000000 --- a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/PathConstructionOperatorProcessor.java +++ /dev/null @@ -1,84 +0,0 @@ -/******************************************************************************* - * <copyright> Copyright 2014 by E-Government Innovation Center EGIZ, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - *  - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - *  - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - *  - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - ******************************************************************************/ -/** - * <copyright> Copyright 2006 by Know-Center, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - */ -package at.knowcenter.wag.egov.egiz.pdf.operator.path; - -import at.knowcenter.wag.egov.egiz.pdf.PDFPage; -import org.apache.pdfbox.util.operator.OperatorProcessor; - -import java.awt.geom.Point2D; - -/** - * Provides functions for path construction operators. - * - * @see "PDF 1.7 specification, Section 8.5.2 'Path Construction Operators'" - * @author Datentechnik Innovation GmbH - * - */ -public abstract class PathConstructionOperatorProcessor extends OperatorProcessor { - -	public PathConstructionOperatorProcessor(PDFPage context) { -		setContext(context); -	} - -	/** -	 * Transforms the given point from user space coordinates to device space coordinates based on the current -	 * transition matrix. -	 * -	 * @param x -	 *            The x axis value of the user space coordinates. -	 * @param y -	 *            The y axis value of the user space coordinates. -	 * @return The transformed point. -	 */ -	public Point2D transform(double x, double y) { -		double[] position = { x, y }; -		context.getGraphicsState().getCurrentTransformationMatrix().createAffineTransform() -				.transform(position, 0, position, 0, 1); -		return new Point2D.Double(position[0], position[1]); -	} - -} diff --git a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/PathPaintingOperatorProcessor.java b/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/PathPaintingOperatorProcessor.java deleted file mode 100644 index bc34d562..00000000 --- a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/PathPaintingOperatorProcessor.java +++ /dev/null @@ -1,65 +0,0 @@ -/******************************************************************************* - * <copyright> Copyright 2014 by E-Government Innovation Center EGIZ, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - *  - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - *  - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - *  - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - ******************************************************************************/ -/** - * <copyright> Copyright 2006 by Know-Center, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - */ -package at.knowcenter.wag.egov.egiz.pdf.operator.path; - -import at.knowcenter.wag.egov.egiz.pdf.PDFPage; -import org.apache.pdfbox.util.operator.OperatorProcessor; - -/** - * Provides functions for path painting operators. - * - * @see "PDF 1.7 specification, Section 8.5.2 'Path Construction Operators'" - * @author Datentechnik Innovation GmbH - * - */ -public abstract class PathPaintingOperatorProcessor extends OperatorProcessor { - -	public PathPaintingOperatorProcessor(PDFPage context) { -		setContext(context); -	} - -} diff --git a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/construction/ClosePath.java b/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/construction/ClosePath.java deleted file mode 100644 index 8bb76fb5..00000000 --- a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/construction/ClosePath.java +++ /dev/null @@ -1,91 +0,0 @@ -/******************************************************************************* - * <copyright> Copyright 2014 by E-Government Innovation Center EGIZ, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - *  - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - *  - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - *  - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - ******************************************************************************/ -/** - * <copyright> Copyright 2006 by Know-Center, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - */ -package at.knowcenter.wag.egov.egiz.pdf.operator.path.construction; - -import at.knowcenter.wag.egov.egiz.pdf.PDFPage; -import at.knowcenter.wag.egov.egiz.pdf.operator.path.PathConstructionOperatorProcessor; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.pdfbox.cos.COSBase; -import org.apache.pdfbox.util.PDFOperator; - -import java.io.IOException; -import java.util.List; - -/** - * Close the current subpath by appending a straight line segment from the current point to the starting point of the - * subpath. If the current subpath is already closed, h shall donothing. This operator terminates the current subpath. - * Appending another segment to the current path shall begin a new subpath, even if the new segment begins at the - * endpoint reached by the h operation. - * - * @see "PDF 1.7 specification, Section 8.5.2 'Path Construction Operators'" - * @author PdfBox, modified by Datentechnik Innovation GmbH - */ -public class ClosePath extends PathConstructionOperatorProcessor { - -	private Log log = LogFactory.getLog(getClass()); - -	public ClosePath(PDFPage context) { -		super(context); -	} - -	@Override -	public void process(PDFOperator operator, List<COSBase> operands) throws IOException { -		try { -			PDFPage pdfPage = (PDFPage) context; - -			pdfPage.getCurrentPath().closePath(); - -			if (log.isTraceEnabled()) { -				log.trace("Closing current path."); -			} -		} catch (Exception e) { -			log.warn("Error processing operator 'h'.", e); -		} -	} - -} diff --git a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/construction/CurveTo.java b/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/construction/CurveTo.java deleted file mode 100644 index 0eb10a52..00000000 --- a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/construction/CurveTo.java +++ /dev/null @@ -1,108 +0,0 @@ -/******************************************************************************* - * <copyright> Copyright 2014 by E-Government Innovation Center EGIZ, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - *  - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - *  - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - *  - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - ******************************************************************************/ -/** - * <copyright> Copyright 2006 by Know-Center, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - */ -package at.knowcenter.wag.egov.egiz.pdf.operator.path.construction; - -import at.knowcenter.wag.egov.egiz.pdf.PDFPage; -import at.knowcenter.wag.egov.egiz.pdf.operator.path.PathConstructionOperatorProcessor; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.pdfbox.cos.COSBase; -import org.apache.pdfbox.cos.COSNumber; -import org.apache.pdfbox.util.PDFOperator; - -import java.awt.geom.Point2D; -import java.io.IOException; -import java.util.List; - -/** - * Append a cubic Bezier curve to the current path. The curve shall extend from the current point to the point (x3, y3), - * using (x1, y1) and (x2, y2) as the Bezier control points (see 8.5.2.2, "Cubic Bezier Curves"). The new current point - * shall be (x3, y3). - * - * @see "PDF 1.7 specification, Section 8.5.2 'Path Construction Operators'" - * @author PdfBox, modified by Datentechnik Innovation GmbH - */ -public class CurveTo extends PathConstructionOperatorProcessor { - -	private Log log = LogFactory.getLog(getClass()); - -	public CurveTo(PDFPage context) { -		super(context); -	} - -	@Override -	public void process(PDFOperator operator, List<COSBase> operands) throws IOException { -		try { -			PDFPage pdfPage = (PDFPage) context; - -			COSNumber x1 = (COSNumber) operands.get(0); -			COSNumber y1 = (COSNumber) operands.get(1); -			COSNumber x2 = (COSNumber) operands.get(2); -			COSNumber y2 = (COSNumber) operands.get(3); -			COSNumber x3 = (COSNumber) operands.get(4); -			COSNumber y3 = (COSNumber) operands.get(5); - -			Point2D p1 = transform(x1.doubleValue(), y1.doubleValue()); -			Point2D p2 = transform(x2.doubleValue(), y2.doubleValue()); -			Point2D p3 = transform(x3.doubleValue(), y3.doubleValue()); - -			pdfPage.getCurrentPath().curveTo( -					(float) p1.getX(), (float) p1.getY(), -					(float) p2.getX(), (float) p2.getY(), -					(float) p3.getX(), (float) p3.getY() -			); - -			if (log.isTraceEnabled()) { -				log.trace("Appending cubic Bezier curve with x1:" + p1.getX() + ",y1:" + p1.getY() + ", x2:" -						+ p2.getX() + ",y2:" + p2.getY() + ", x3:" + p3.getX() + ",y3:" + p3.getY()); -			} -		} catch (Exception e) { -			log.warn("Error processing operator 'c'.", e); -		} -	} - -} diff --git a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/construction/CurveToReplicateFinalPoint.java b/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/construction/CurveToReplicateFinalPoint.java deleted file mode 100644 index 1020842e..00000000 --- a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/construction/CurveToReplicateFinalPoint.java +++ /dev/null @@ -1,105 +0,0 @@ -/******************************************************************************* - * <copyright> Copyright 2014 by E-Government Innovation Center EGIZ, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - *  - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - *  - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - *  - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - ******************************************************************************/ -/** - * <copyright> Copyright 2006 by Know-Center, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - */ -package at.knowcenter.wag.egov.egiz.pdf.operator.path.construction; - -import at.knowcenter.wag.egov.egiz.pdf.PDFPage; -import at.knowcenter.wag.egov.egiz.pdf.operator.path.PathConstructionOperatorProcessor; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.pdfbox.cos.COSBase; -import org.apache.pdfbox.cos.COSNumber; -import org.apache.pdfbox.util.PDFOperator; - -import java.awt.geom.Point2D; -import java.io.IOException; -import java.util.List; - -/** - * Append a cubic Bezier curve to the current path. The curve shall extend from the current point to the point (x3, y3), - * using (x1, y1) and (x3, y3) as the Bezier control points (see 8.5.2.2, "Cubic Bezier Curves"). The new current point - * shall be (x3, y3). - * - * @see "PDF 1.7 specification, Section 8.5.2 'Path Construction Operators'" - * @author PdfBox, modified by Datentechnik Innovation GmbH - */ -public class CurveToReplicateFinalPoint extends PathConstructionOperatorProcessor { - -	private Log log = LogFactory.getLog(getClass()); - -	public CurveToReplicateFinalPoint(PDFPage context) { -		super(context); -	} - -	@Override -	public void process(PDFOperator operator, List<COSBase> operands) throws IOException { -		try { -			PDFPage pdfPage = (PDFPage) context; - -			COSNumber x1 = (COSNumber) operands.get(0); -			COSNumber y1 = (COSNumber) operands.get(1); -			COSNumber x3 = (COSNumber) operands.get(2); -			COSNumber y3 = (COSNumber) operands.get(3); - -			Point2D p1 = transform(x1.doubleValue(), y1.doubleValue()); -			Point2D p3 = transform(x3.doubleValue(), y3.doubleValue()); - -			pdfPage.getCurrentPath().curveTo( -					(float) p1.getX(), (float) p1.getY(), -					(float) p3.getX(), (float) p3.getY(), -					(float) p3.getX(), (float) p3.getY() -			); - -			if (log.isTraceEnabled()) { -				log.trace("Appending cubic Bezier curve with x1:" + p1.getX() + ",y1:" + p1.getY() + ", x3:" -						+ p3.getX() + ",y3:" + p3.getY()); -			} -		} catch (Exception e) { -			log.warn("Error processing operator 'y'.", e); -		} -	} - -} diff --git a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/construction/CurveToReplicateInitialPoint.java b/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/construction/CurveToReplicateInitialPoint.java deleted file mode 100644 index 42a52033..00000000 --- a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/construction/CurveToReplicateInitialPoint.java +++ /dev/null @@ -1,107 +0,0 @@ -/******************************************************************************* - * <copyright> Copyright 2014 by E-Government Innovation Center EGIZ, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - *  - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - *  - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - *  - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - ******************************************************************************/ -/** - * <copyright> Copyright 2006 by Know-Center, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - */ -package at.knowcenter.wag.egov.egiz.pdf.operator.path.construction; - -import at.knowcenter.wag.egov.egiz.pdf.PDFPage; -import at.knowcenter.wag.egov.egiz.pdf.operator.path.PathConstructionOperatorProcessor; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.pdfbox.cos.COSBase; -import org.apache.pdfbox.cos.COSNumber; -import org.apache.pdfbox.util.PDFOperator; - -import java.awt.geom.Point2D; -import java.io.IOException; -import java.util.List; - -/** - * Append a cubic Bezier curve to the current path. The curve shall extend from the current point to the point (x3, y3), - * using the current point and (x2, y2) as the Bezier control points (see 8.5.2.2, "Cubic Bezier Curves"). The new - * current point shall be (x3, y3). - * - * @see "PDF 1.7 specification, Section 8.5.2 'Path Construction Operators'" - * @author PdfBox, modified by Datentechnik Innovation GmbH - */ -public class CurveToReplicateInitialPoint extends PathConstructionOperatorProcessor { - -	private Log log = LogFactory.getLog(getClass()); - -	public CurveToReplicateInitialPoint(PDFPage context) { -		super(context); -	} - -	@Override -	public void process(PDFOperator operator, List<COSBase> operands) throws IOException { -		try { -			PDFPage pdfPage = (PDFPage) context; - -			COSNumber x2 = (COSNumber) operands.get(0); -			COSNumber y2 = (COSNumber) operands.get(1); -			COSNumber x3 = (COSNumber) operands.get(2); -			COSNumber y3 = (COSNumber) operands.get(3); - -	        Point2D currentPoint = pdfPage.getCurrentPath().getCurrentPoint(); -			Point2D p2 = transform(x2.doubleValue(), y2.doubleValue()); -			Point2D p3 = transform(x3.doubleValue(), y3.doubleValue()); - -			pdfPage.getCurrentPath().curveTo( -					(float)currentPoint.getX(), (float)currentPoint.getY(), -					(float) p2.getX(), (float) p2.getY(), -					(float) p3.getX(), (float) p3.getY() -			); - -			if (log.isTraceEnabled()) { -				log.trace("Appending cubic Bezier curve with x2:" + p2.getX() + ",y2:" + p2.getY() + ", x3:" -						+ p3.getX() + ",y3:" + p3.getY() + ", using current point x:" + currentPoint.getX() + ",y:" -						+ currentPoint.getY()); -			} -		} catch (Exception e) { -			log.warn("Error processing operator 'v'.", e); -		} -	} - -} diff --git a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/construction/LineTo.java b/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/construction/LineTo.java deleted file mode 100644 index a47d3fe6..00000000 --- a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/construction/LineTo.java +++ /dev/null @@ -1,94 +0,0 @@ -/******************************************************************************* - * <copyright> Copyright 2014 by E-Government Innovation Center EGIZ, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - *  - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - *  - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - *  - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - ******************************************************************************/ -/** - * <copyright> Copyright 2006 by Know-Center, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - */ -package at.knowcenter.wag.egov.egiz.pdf.operator.path.construction; - -import at.knowcenter.wag.egov.egiz.pdf.PDFPage; -import at.knowcenter.wag.egov.egiz.pdf.operator.path.PathConstructionOperatorProcessor; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.pdfbox.cos.COSBase; -import org.apache.pdfbox.cos.COSNumber; -import org.apache.pdfbox.util.PDFOperator; - -import java.awt.geom.Point2D; -import java.io.IOException; -import java.util.List; - -/** - * Append a straight line segment from the current point to the point (x, y). The new current point shall be (x, y). - * - * @see "PDF 1.7 specification, Section 8.5.2 'Path Construction Operators'" - * @author PdfBox, modified by Datentechnik Innovation GmbH - */ -public class LineTo extends PathConstructionOperatorProcessor { - -	private Log log = LogFactory.getLog(getClass()); - -	public LineTo(PDFPage context) { -		super(context); -	} - -	@Override -	public void process(PDFOperator operator, List<COSBase> operands) throws IOException { -		try { -			PDFPage pdfPage = (PDFPage) context; - -			COSNumber x = (COSNumber) operands.get(0); -			COSNumber y = (COSNumber) operands.get(1); -			Point2D p = transform(x.doubleValue(), y.doubleValue()); - -			pdfPage.getCurrentPath().lineTo((float) p.getX(), (float) p.getY()); - -			if (log.isTraceEnabled()) { -				log.trace("Adding line to x:" + p.getX() + ",y:" + p.getY()); -			} -		} catch (Exception e) { -			log.warn("Error processing operator 'l'.", e); -		} -	} - -} diff --git a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/construction/MoveTo.java b/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/construction/MoveTo.java deleted file mode 100644 index 49d92761..00000000 --- a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/construction/MoveTo.java +++ /dev/null @@ -1,96 +0,0 @@ -/******************************************************************************* - * <copyright> Copyright 2014 by E-Government Innovation Center EGIZ, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - *  - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - *  - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - *  - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - ******************************************************************************/ -/** - * <copyright> Copyright 2006 by Know-Center, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - */ -package at.knowcenter.wag.egov.egiz.pdf.operator.path.construction; - -import at.knowcenter.wag.egov.egiz.pdf.PDFPage; -import at.knowcenter.wag.egov.egiz.pdf.operator.path.PathConstructionOperatorProcessor; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.pdfbox.cos.COSBase; -import org.apache.pdfbox.cos.COSNumber; -import org.apache.pdfbox.util.PDFOperator; - -import java.awt.geom.Point2D; -import java.io.IOException; -import java.util.List; - -/** - * Begin a new subpath by moving the current point to coordinates (x, y), omitting any connecting line segment. If the - * previous path construction operator in the current path was also m, the new m overrides it; no vestige of the - * previous m operation remains in the path. - * - * @see "PDF 1.7 specification, Section 8.5.2 'Path Construction Operators'" - * @author PdfBox, modified by Datentechnik Innovation GmbH - */ -public class MoveTo extends PathConstructionOperatorProcessor { - -	private Log log = LogFactory.getLog(getClass()); - -	public MoveTo(PDFPage context) { -		super(context); -	} - -	@Override -	public void process(PDFOperator operator, List<COSBase> operands) throws IOException { -		try { -			PDFPage pdfPage = (PDFPage) context; - -			COSNumber x = (COSNumber) operands.get(0); -			COSNumber y = (COSNumber) operands.get(1); -			Point2D p = transform(x.doubleValue(), y.doubleValue()); - -			pdfPage.getCurrentPath().moveTo((float) p.getX(), (float) p.getY()); - -			if (log.isTraceEnabled()) { -				log.trace("Moving current path to x:" + p.getX() + ",y:" + p.getY()); -			} -		} catch (Exception e) { -			log.warn("Error processing operator 'm'.", e); -		} -	} - -} diff --git a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/painting/CloseAndStrokePath.java b/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/painting/CloseAndStrokePath.java deleted file mode 100644 index 552a033c..00000000 --- a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/painting/CloseAndStrokePath.java +++ /dev/null @@ -1,82 +0,0 @@ -/******************************************************************************* - * <copyright> Copyright 2014 by E-Government Innovation Center EGIZ, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - *  - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - *  - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - *  - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - ******************************************************************************/ -/** - * <copyright> Copyright 2006 by Know-Center, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - */ -package at.knowcenter.wag.egov.egiz.pdf.operator.path.painting; - -import at.knowcenter.wag.egov.egiz.pdf.PDFPage; -import at.knowcenter.wag.egov.egiz.pdf.operator.path.PathPaintingOperatorProcessor; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.pdfbox.cos.COSBase; -import org.apache.pdfbox.util.PDFOperator; - -import java.io.IOException; -import java.util.List; - -/** - * Close and stroke the path. This operator shall have the same effect as the sequence <code>h S</code>. - * - * @see "PDF 1.7 specification, Section 8.5.3 'Path-Painting Operators'" - * @author PdfBox, modified by Datentechnik Innovation GmbH - */ -public class CloseAndStrokePath extends PathPaintingOperatorProcessor { - -	private Log log = LogFactory.getLog(getClass()); - -	public CloseAndStrokePath(PDFPage context) { -		super(context); -	} - -	@Override -	public void process(PDFOperator operator, List<COSBase> operands) throws IOException { -		if (log.isTraceEnabled()) { -			log.trace("Closing and stroking path."); -		} -		context.processOperator("h", operands); -		context.processOperator("S", operands); -	} - -} diff --git a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/painting/CloseFillEvenOddAndStrokePath.java b/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/painting/CloseFillEvenOddAndStrokePath.java deleted file mode 100644 index 718fe362..00000000 --- a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/painting/CloseFillEvenOddAndStrokePath.java +++ /dev/null @@ -1,83 +0,0 @@ -/******************************************************************************* - * <copyright> Copyright 2014 by E-Government Innovation Center EGIZ, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - *  - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - *  - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - *  - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - ******************************************************************************/ -/** - * <copyright> Copyright 2006 by Know-Center, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - */ -package at.knowcenter.wag.egov.egiz.pdf.operator.path.painting; - -import at.knowcenter.wag.egov.egiz.pdf.PDFPage; -import at.knowcenter.wag.egov.egiz.pdf.operator.path.PathPaintingOperatorProcessor; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.pdfbox.cos.COSBase; -import org.apache.pdfbox.util.PDFOperator; - -import java.io.IOException; -import java.util.List; - -/** - * Close, fill, and then stroke the path, using the even-odd rule to determine the region to fill. This operator shall - * have the same effect as the sequence <code>h B*</code>. - * - * @see "PDF 1.7 specification, Section 8.5.3 'Path-Painting Operators'" - * @author PdfBox, modified by Datentechnik Innovation GmbH - */ -public class CloseFillEvenOddAndStrokePath extends PathPaintingOperatorProcessor { - -	private Log log = LogFactory.getLog(getClass()); - -	public CloseFillEvenOddAndStrokePath(PDFPage context) { -		super(context); -	} - -	@Override -	public void process(PDFOperator operator, List<COSBase> operands) throws IOException { -		if (log.isTraceEnabled()) { -			log.trace("Closing, filling (even odd rule) and stroking path."); -		} -		context.processOperator("h", operands); -		context.processOperator("B*", operands); -	} - -} diff --git a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/painting/CloseFillNonZeroAndStrokePath.java b/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/painting/CloseFillNonZeroAndStrokePath.java deleted file mode 100644 index 523f6681..00000000 --- a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/painting/CloseFillNonZeroAndStrokePath.java +++ /dev/null @@ -1,83 +0,0 @@ -/******************************************************************************* - * <copyright> Copyright 2014 by E-Government Innovation Center EGIZ, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - *  - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - *  - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - *  - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - ******************************************************************************/ -/** - * <copyright> Copyright 2006 by Know-Center, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - */ -package at.knowcenter.wag.egov.egiz.pdf.operator.path.painting; - -import at.knowcenter.wag.egov.egiz.pdf.PDFPage; -import at.knowcenter.wag.egov.egiz.pdf.operator.path.PathPaintingOperatorProcessor; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.pdfbox.cos.COSBase; -import org.apache.pdfbox.util.PDFOperator; - -import java.io.IOException; -import java.util.List; - -/** - * Close, fill, and then stroke the path, using the nonzero winding number rule to determine the region to fill. This - * operator shall have the same effect as the sequence <code>h B</code>. - * - * @see "PDF 1.7 specification, Section 8.5.3 'Path-Painting Operators'" - * @author PdfBox, modified by Datentechnik Innovation GmbH - */ -public class CloseFillNonZeroAndStrokePath extends PathPaintingOperatorProcessor { - -	private Log log = LogFactory.getLog(getClass()); - -	public CloseFillNonZeroAndStrokePath(PDFPage context) { -		super(context); -	} - -	@Override -	public void process(PDFOperator operator, List<COSBase> operands) throws IOException { -		if (log.isTraceEnabled()) { -			log.trace("Closing, filling (non zero rule) and stroking path."); -		} -		context.processOperator("h", operands); -		context.processOperator("B", operands); -	} - -} diff --git a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/painting/EndPath.java b/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/painting/EndPath.java deleted file mode 100644 index 5134ed2f..00000000 --- a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/painting/EndPath.java +++ /dev/null @@ -1,91 +0,0 @@ -/******************************************************************************* - * <copyright> Copyright 2014 by E-Government Innovation Center EGIZ, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - *  - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - *  - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - *  - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - ******************************************************************************/ -/** - * <copyright> Copyright 2006 by Know-Center, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - */ -package at.knowcenter.wag.egov.egiz.pdf.operator.path.painting; - -import at.knowcenter.wag.egov.egiz.pdf.PDFPage; -import at.knowcenter.wag.egov.egiz.pdf.operator.path.PathPaintingOperatorProcessor; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.pdfbox.cos.COSBase; -import org.apache.pdfbox.util.PDFOperator; - -import java.io.IOException; -import java.util.List; - -/** - * End the path object without filling or stroking it. This operator shall be a path-painting no-op, used primarily for - * the side effect of changing the current clipping path. - * - * @see "PDF 1.7 specification, Section 8.5.3 'Path-Painting Operators'" - * @author PdfBox, modified by Datentechnik Innovation GmbH - */ -public class EndPath extends PathPaintingOperatorProcessor { - -	private Log log = LogFactory.getLog(getClass()); - -	public EndPath(PDFPage context) { -		super(context); -	} - -	@Override -	public void process(PDFOperator operator, List<COSBase> operands) throws IOException { -		try { -			PDFPage pdfPage = (PDFPage) context; - -			log.debug("Ending path " + pdfPage.getCurrentPath()); -			pdfPage.getCurrentPath().reset(); - -			if (log.isTraceEnabled()) { -				log.trace("End path without filling or stroking."); -			} - -		} catch (Exception e) { -			log.warn("Error processing operator 'n'.", e); -		} -	} - -} diff --git a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/painting/FillEvenOddAndStrokePath.java b/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/painting/FillEvenOddAndStrokePath.java deleted file mode 100644 index 13623648..00000000 --- a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/painting/FillEvenOddAndStrokePath.java +++ /dev/null @@ -1,95 +0,0 @@ -/******************************************************************************* - * <copyright> Copyright 2014 by E-Government Innovation Center EGIZ, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - *  - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - *  - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - *  - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - ******************************************************************************/ -/** - * <copyright> Copyright 2006 by Know-Center, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - */ -package at.knowcenter.wag.egov.egiz.pdf.operator.path.painting; - -import at.knowcenter.wag.egov.egiz.pdf.PDFPage; -import at.knowcenter.wag.egov.egiz.pdf.operator.path.PathPaintingOperatorProcessor; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.pdfbox.cos.COSBase; -import org.apache.pdfbox.util.PDFOperator; - -import java.awt.geom.GeneralPath; -import java.io.IOException; -import java.util.List; - -/** - * Fill and then stroke the path, using the even-odd rule to determine the region to fill. This operator shall produce - * the same result as <code>B</code>, except that the path is filled as if with <code>f*</code> instead of - * <code>f</code>. - * - * @see "PDF 1.7 specification, Section 8.5.3 'Path-Painting Operators'" - * @author PdfBox, modified by Datentechnik Innovation GmbH - */ -public class FillEvenOddAndStrokePath extends PathPaintingOperatorProcessor { - -	private Log log = LogFactory.getLog(getClass()); - -	public FillEvenOddAndStrokePath(PDFPage context) { -		super(context); -	} - -	@Override -	public void process(PDFOperator operator, List<COSBase> operands) throws IOException { -		try { -			PDFPage pdfPage = (PDFPage) context; - -			if (log.isTraceEnabled()) { -				log.trace("Filling (even odd rule) and stroking path."); -			} - -			GeneralPath currentPath = (GeneralPath) pdfPage.getCurrentPath().clone(); -			context.processOperator("f*", operands); -			pdfPage.setCurrentPath(currentPath); -			context.processOperator("S", operands); - -		} catch (Exception e) { -			log.warn("Error processing operator 'B*'.", e); -		} -	} - -} diff --git a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/painting/FillNonZeroAndStrokePath.java b/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/painting/FillNonZeroAndStrokePath.java deleted file mode 100644 index 485411a8..00000000 --- a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/painting/FillNonZeroAndStrokePath.java +++ /dev/null @@ -1,95 +0,0 @@ -/******************************************************************************* - * <copyright> Copyright 2014 by E-Government Innovation Center EGIZ, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - *  - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - *  - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - *  - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - ******************************************************************************/ -/** - * <copyright> Copyright 2006 by Know-Center, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - */ -package at.knowcenter.wag.egov.egiz.pdf.operator.path.painting; - -import at.knowcenter.wag.egov.egiz.pdf.PDFPage; -import at.knowcenter.wag.egov.egiz.pdf.operator.path.PathPaintingOperatorProcessor; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.pdfbox.cos.COSBase; -import org.apache.pdfbox.util.PDFOperator; - -import java.awt.geom.GeneralPath; -import java.io.IOException; -import java.util.List; - -/** - * Fill and then stroke the path, using the nonzero winding number rule to determine the region to fill. This operator - * shall produce the same result as constructing two identical path objects, painting the first with <code>f</code> and - * the second with <code>S</code>. - * - * @see "PDF 1.7 specification, Section 8.5.3 'Path-Painting Operators'" - * @author PdfBox, modified by Datentechnik Innovation GmbH - */ -public class FillNonZeroAndStrokePath extends PathPaintingOperatorProcessor { - -	private Log log = LogFactory.getLog(getClass()); - -	public FillNonZeroAndStrokePath(PDFPage context) { -		super(context); -	} - -	@Override -	public void process(PDFOperator operator, List<COSBase> operands) throws IOException { -		try { -			PDFPage pdfPage = (PDFPage) context; - -			if (log.isTraceEnabled()) { -				log.trace("Filling (non zero rule) and stroking path."); -			} - -			GeneralPath currentPath = (GeneralPath) pdfPage.getCurrentPath().clone(); -			context.processOperator("f", operands); -			pdfPage.setCurrentPath(currentPath); -			context.processOperator("S", operands); - -		} catch (Exception e) { -			log.warn("Error processing operator 'B'.", e); -		} -	} - -} diff --git a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/painting/FillPathEvenOddRule.java b/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/painting/FillPathEvenOddRule.java deleted file mode 100644 index bb3d3411..00000000 --- a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/painting/FillPathEvenOddRule.java +++ /dev/null @@ -1,94 +0,0 @@ -/******************************************************************************* - * <copyright> Copyright 2014 by E-Government Innovation Center EGIZ, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - *  - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - *  - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - *  - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - ******************************************************************************/ -/** - * <copyright> Copyright 2006 by Know-Center, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - */ -package at.knowcenter.wag.egov.egiz.pdf.operator.path.painting; - -import at.knowcenter.wag.egov.egiz.pdf.PDFPage; -import at.knowcenter.wag.egov.egiz.pdf.operator.path.PathPaintingOperatorProcessor; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.pdfbox.cos.COSBase; -import org.apache.pdfbox.util.PDFOperator; - -import java.awt.*; -import java.io.IOException; -import java.util.List; - -/** - * Fill the path, using the even-odd rule to determine the region to fill. - * - * @see "PDF 1.7 specification, Section 8.5.3 'Path-Painting Operators'" - * @author PdfBox, modified by Datentechnik Innovation GmbH - */ -public class FillPathEvenOddRule extends PathPaintingOperatorProcessor { - -	private Log log = LogFactory.getLog(getClass()); - -	public FillPathEvenOddRule(PDFPage context) { -		super(context); -	} - -	@Override -	public void process(PDFOperator operator, List<COSBase> operands) throws IOException { -		try { -			PDFPage pdfPage = (PDFPage) context; - -			pdfPage.getCurrentPath().setWindingRule(java.awt.geom.GeneralPath.WIND_EVEN_ODD); -			Rectangle bounds = pdfPage.getCurrentPath().getBounds(); -			pdfPage.getCurrentPath().reset(); - -			if (log.isTraceEnabled()) { -				log.trace("Filling path, using even-odd rule."); -			} - -			pdfPage.registerPathBounds(bounds); - -		} catch (Exception e) { -			log.warn("Error processing operator 'f*'.", e); -		} -	} - -} diff --git a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/painting/FillPathNonZeroWindingNumberRule.java b/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/painting/FillPathNonZeroWindingNumberRule.java deleted file mode 100644 index 6196c466..00000000 --- a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/painting/FillPathNonZeroWindingNumberRule.java +++ /dev/null @@ -1,95 +0,0 @@ -/******************************************************************************* - * <copyright> Copyright 2014 by E-Government Innovation Center EGIZ, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - *  - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - *  - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - *  - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - ******************************************************************************/ -/** - * <copyright> Copyright 2006 by Know-Center, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - */ -package at.knowcenter.wag.egov.egiz.pdf.operator.path.painting; - -import at.knowcenter.wag.egov.egiz.pdf.PDFPage; -import at.knowcenter.wag.egov.egiz.pdf.operator.path.PathPaintingOperatorProcessor; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.pdfbox.cos.COSBase; -import org.apache.pdfbox.util.PDFOperator; - -import java.awt.*; -import java.io.IOException; -import java.util.List; - -/** - * Fill the path, using the nonzero winding number rule to determine the region to fill. Any subpaths that are open - * shall be implicitly closed before being filled. - * - * @see "PDF 1.7 specification, Section 8.5.3 'Path-Painting Operators'" - * @author PdfBox, modified by Datentechnik Innovation GmbH - */ -public class FillPathNonZeroWindingNumberRule extends PathPaintingOperatorProcessor { - -	private Log log = LogFactory.getLog(getClass()); - -	public FillPathNonZeroWindingNumberRule(PDFPage context) { -		super(context); -	} - -	@Override -	public void process(PDFOperator operator, List<COSBase> operands) throws IOException { -		try { -			PDFPage pdfPage = (PDFPage) context; - -			pdfPage.getCurrentPath().setWindingRule(java.awt.geom.GeneralPath.WIND_NON_ZERO); -			Rectangle bounds = pdfPage.getCurrentPath().getBounds(); -			pdfPage.getCurrentPath().reset(); - -			if (log.isTraceEnabled()) { -				log.trace("Filling path, using nonzero winding number rule."); -			} - -			pdfPage.registerPathBounds(bounds); - -		} catch (Exception e) { -			log.warn("Error processing operator 'f/F'.", e); -		} -	} - -} diff --git a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/painting/StrokePath.java b/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/painting/StrokePath.java deleted file mode 100644 index b114b60b..00000000 --- a/pdf-as-lib/src/main/java/at/knowcenter/wag/egov/egiz/pdf/operator/path/painting/StrokePath.java +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************************* - * <copyright> Copyright 2014 by E-Government Innovation Center EGIZ, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - *  - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - *  - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - *  - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - ******************************************************************************/ -/** - * <copyright> Copyright 2006 by Know-Center, Graz, Austria </copyright> - * PDF-AS has been contracted by the E-Government Innovation Center EGIZ, a - * joint initiative of the Federal Chancellery Austria and Graz University of - * Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - */ -package at.knowcenter.wag.egov.egiz.pdf.operator.path.painting; - -import at.knowcenter.wag.egov.egiz.pdf.PDFPage; -import at.knowcenter.wag.egov.egiz.pdf.operator.path.PathPaintingOperatorProcessor; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.pdfbox.cos.COSBase; -import org.apache.pdfbox.util.PDFOperator; - -import java.awt.*; -import java.io.IOException; -import java.util.List; - -/** - * Strokes the path. - * - * @see "PDF 1.7 specification, Section 8.5.3 'Path-Painting Operators'" - * @author PdfBox, modified by Datentechnik Innovation GmbH - */ -public class StrokePath extends PathPaintingOperatorProcessor { - -	private Log log = LogFactory.getLog(getClass()); - -	public StrokePath(PDFPage context) { -		super(context); -	} - -	@Override -	public void process(PDFOperator operator, List<COSBase> operands) throws IOException { -		try { -			PDFPage pdfPage = (PDFPage) context; - -			Rectangle bounds = pdfPage.getCurrentPath().getBounds(); -			pdfPage.getCurrentPath().reset(); - -			if (log.isTraceEnabled()) { -				log.trace("Stroking path."); -			} - -			pdfPage.registerPathBounds(bounds); - -		} catch (Exception e) { -			log.warn("Error processing operator 'S'.", e); -		} -	} - -} | 
