"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/handlers/PDInkAppearanceHandler.java" between
pdfbox-2.0.23-src.zip and pdfbox-2.0.24-src.zip

About: Apache PDFBox is a Java PDF library tool that allows creation of new PDF documents, manipulation of existing documents and the ability to extract content from documents.

PDInkAppearanceHandler.java  (pdfbox-2.0.23-src):PDInkAppearanceHandler.java  (pdfbox-2.0.24-src)
skipping to change at line 28 skipping to change at line 28
import java.io.IOException; import java.io.IOException;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.apache.pdfbox.pdmodel.graphics.color.PDColor; import org.apache.pdfbox.pdmodel.graphics.color.PDColor;
import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotation; import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotation;
import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationMarkup; import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationMarkup;
import org.apache.pdfbox.io.IOUtils; import org.apache.pdfbox.io.IOUtils;
import org.apache.pdfbox.pdmodel.PDAppearanceContentStream; import org.apache.pdfbox.pdmodel.PDAppearanceContentStream;
import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
/** /**
* Handler to generate the ink annotations appearance. * Handler to generate the ink annotations appearance.
* *
*/ */
public class PDInkAppearanceHandler extends PDAbstractAppearanceHandler public class PDInkAppearanceHandler extends PDAbstractAppearanceHandler
{ {
private static final Log LOG = LogFactory.getLog(PDInkAppearanceHandler.clas s); private static final Log LOG = LogFactory.getLog(PDInkAppearanceHandler.clas s);
public PDInkAppearanceHandler(PDAnnotation annotation) public PDInkAppearanceHandler(PDAnnotation annotation)
skipping to change at line 67 skipping to change at line 68
{ {
PDAnnotationMarkup ink = (PDAnnotationMarkup) getAnnotation(); PDAnnotationMarkup ink = (PDAnnotationMarkup) getAnnotation();
// PDF spec does not mention /Border for ink annotations, but it is used if /BS is not available // PDF spec does not mention /Border for ink annotations, but it is used if /BS is not available
AnnotationBorder ab = AnnotationBorder.getAnnotationBorder(ink, ink.getB orderStyle()); AnnotationBorder ab = AnnotationBorder.getAnnotationBorder(ink, ink.getB orderStyle());
PDColor color = ink.getColor(); PDColor color = ink.getColor();
if (color == null || color.getComponents().length == 0 || Float.compare( ab.width, 0) == 0) if (color == null || color.getComponents().length == 0 || Float.compare( ab.width, 0) == 0)
{ {
return; return;
} }
// Adjust rectangle even if not empty
// file from PDF.js issue 13447
//TODO in a class structure this should be overridable
float minX = Float.MAX_VALUE;
float minY = Float.MAX_VALUE;
float maxX = Float.MIN_VALUE;
float maxY = Float.MIN_VALUE;
for (float[] pathArray : ink.getInkList())
{
int nPoints = pathArray.length / 2;
for (int i = 0; i < nPoints; ++i)
{
float x = pathArray[i * 2];
float y = pathArray[i * 2 + 1];
minX = Math.min(minX, x);
minY = Math.min(minY, y);
maxX = Math.max(maxX, x);
maxY = Math.max(maxY, y);
}
}
PDRectangle rect = ink.getRectangle();
rect.setLowerLeftX(Math.min(minX - ab.width * 2, rect.getLowerLeftX()));
rect.setLowerLeftY(Math.min(minY - ab.width * 2, rect.getLowerLeftY()));
rect.setUpperRightX(Math.max(maxX + ab.width * 2, rect.getUpperRightX())
);
rect.setUpperRightY(Math.max(maxY + ab.width * 2, rect.getUpperRightY())
);
ink.setRectangle(rect);
PDAppearanceContentStream cs = null; PDAppearanceContentStream cs = null;
try try
{ {
cs = getNormalAppearanceAsContentStream(); cs = getNormalAppearanceAsContentStream();
setOpacity(cs, ink.getConstantOpacity()); setOpacity(cs, ink.getConstantOpacity());
cs.setStrokingColor(color); cs.setStrokingColor(color);
if (ab.dashArray != null) if (ab.dashArray != null)
 End of changes. 2 change blocks. 
0 lines changed or deleted 30 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)