PDFreeTextAppearanceHandler.java (pdfbox-2.0.23-src) | : | PDFreeTextAppearanceHandler.java (pdfbox-2.0.24-src) | ||
---|---|---|---|---|
skipping to change at line 30 | skipping to change at line 30 | |||
import java.util.regex.Pattern; | import java.util.regex.Pattern; | |||
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.fontbox.util.Charsets; | import org.apache.fontbox.util.Charsets; | |||
import org.apache.pdfbox.contentstream.operator.Operator; | import org.apache.pdfbox.contentstream.operator.Operator; | |||
import org.apache.pdfbox.contentstream.operator.OperatorName; | import org.apache.pdfbox.contentstream.operator.OperatorName; | |||
import org.apache.pdfbox.cos.COSArray; | import org.apache.pdfbox.cos.COSArray; | |||
import org.apache.pdfbox.cos.COSBase; | import org.apache.pdfbox.cos.COSBase; | |||
import org.apache.pdfbox.cos.COSName; | import org.apache.pdfbox.cos.COSName; | |||
import org.apache.pdfbox.cos.COSNumber; | import org.apache.pdfbox.cos.COSNumber; | |||
import org.apache.pdfbox.cos.COSObject; | ||||
import org.apache.pdfbox.io.IOUtils; | import org.apache.pdfbox.io.IOUtils; | |||
import org.apache.pdfbox.pdfparser.PDFStreamParser; | import org.apache.pdfbox.pdfparser.PDFStreamParser; | |||
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.PDResources; | import org.apache.pdfbox.pdmodel.PDResources; | |||
import org.apache.pdfbox.pdmodel.common.PDRectangle; | import org.apache.pdfbox.pdmodel.common.PDRectangle; | |||
import org.apache.pdfbox.pdmodel.font.PDFont; | import org.apache.pdfbox.pdmodel.font.PDFont; | |||
import org.apache.pdfbox.pdmodel.font.PDType1Font; | import org.apache.pdfbox.pdmodel.font.PDType1Font; | |||
import org.apache.pdfbox.pdmodel.graphics.color.PDColor; | import org.apache.pdfbox.pdmodel.graphics.color.PDColor; | |||
import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceCMYK; | import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceCMYK; | |||
skipping to change at line 85 | skipping to change at line 84 | |||
{ | { | |||
generateNormalAppearance(); | generateNormalAppearance(); | |||
generateRolloverAppearance(); | generateRolloverAppearance(); | |||
generateDownAppearance(); | generateDownAppearance(); | |||
} | } | |||
@Override | @Override | |||
public void generateNormalAppearance() | public void generateNormalAppearance() | |||
{ | { | |||
PDAnnotationMarkup annotation = (PDAnnotationMarkup) getAnnotation(); | PDAnnotationMarkup annotation = (PDAnnotationMarkup) getAnnotation(); | |||
float[] pathsArray = new float[0]; | float[] pathsArray; | |||
if (PDAnnotationMarkup.IT_FREE_TEXT_CALLOUT.equals(annotation.getIntent( ))) | if (PDAnnotationMarkup.IT_FREE_TEXT_CALLOUT.equals(annotation.getIntent( ))) | |||
{ | { | |||
pathsArray = annotation.getCallout(); | pathsArray = annotation.getCallout(); | |||
if (pathsArray == null || pathsArray.length != 4 && pathsArray.lengt h != 6) | if (pathsArray == null || pathsArray.length != 4 && pathsArray.lengt h != 6) | |||
{ | { | |||
pathsArray = new float[0]; | pathsArray = new float[0]; | |||
} | } | |||
} | } | |||
else | ||||
{ | ||||
pathsArray = new float[0]; | ||||
} | ||||
AnnotationBorder ab = AnnotationBorder.getAnnotationBorder(annotation, a nnotation.getBorderStyle()); | AnnotationBorder ab = AnnotationBorder.getAnnotationBorder(annotation, a nnotation.getBorderStyle()); | |||
PDAppearanceContentStream cs = null; | PDAppearanceContentStream cs = null; | |||
try | try | |||
{ | { | |||
cs = getNormalAppearanceAsContentStream(true); | cs = getNormalAppearanceAsContentStream(true); | |||
// The fill color is the /C entry, there is no /IC entry defined | // The fill color is the /C entry, there is no /IC entry defined | |||
boolean hasBackground = cs.setNonStrokingColorOnDemand(annotation.ge tColor()); | boolean hasBackground = cs.setNonStrokingColorOnDemand(annotation.ge tColor()); | |||
skipping to change at line 394 | skipping to change at line 397 | |||
try | try | |||
{ | { | |||
// not sure if charset is correct, but we only need numbers and simp le characters | // not sure if charset is correct, but we only need numbers and simp le characters | |||
PDFStreamParser parser = new PDFStreamParser(defaultAppearance.getBy tes(Charsets.US_ASCII)); | PDFStreamParser parser = new PDFStreamParser(defaultAppearance.getBy tes(Charsets.US_ASCII)); | |||
COSArray arguments = new COSArray(); | COSArray arguments = new COSArray(); | |||
COSArray colors = null; | COSArray colors = null; | |||
Operator graphicOp = null; | Operator graphicOp = null; | |||
for (Object token = parser.parseNextToken(); token != null; token = parser.parseNextToken()) | for (Object token = parser.parseNextToken(); token != null; token = parser.parseNextToken()) | |||
{ | { | |||
if (token instanceof COSObject) | if (token instanceof Operator) | |||
{ | ||||
arguments.add(((COSObject) token).getObject()); | ||||
} | ||||
else if (token instanceof Operator) | ||||
{ | { | |||
Operator op = (Operator) token; | Operator op = (Operator) token; | |||
String name = op.getName(); | String name = op.getName(); | |||
if (OperatorName.NON_STROKING_GRAY.equals(name) || | if (OperatorName.NON_STROKING_GRAY.equals(name) || | |||
OperatorName.NON_STROKING_RGB.equals(name) || | OperatorName.NON_STROKING_RGB.equals(name) || | |||
OperatorName.NON_STROKING_CMYK.equals(name)) | OperatorName.NON_STROKING_CMYK.equals(name)) | |||
{ | { | |||
graphicOp = op; | graphicOp = op; | |||
colors = arguments; | colors = arguments; | |||
} | } | |||
skipping to change at line 463 | skipping to change at line 462 | |||
} | } | |||
try | try | |||
{ | { | |||
// not sure if charset is correct, but we only need numbers and simp le characters | // not sure if charset is correct, but we only need numbers and simp le characters | |||
PDFStreamParser parser = new PDFStreamParser(defaultAppearance.getBy tes(Charsets.US_ASCII)); | PDFStreamParser parser = new PDFStreamParser(defaultAppearance.getBy tes(Charsets.US_ASCII)); | |||
COSArray arguments = new COSArray(); | COSArray arguments = new COSArray(); | |||
COSArray fontArguments = new COSArray(); | COSArray fontArguments = new COSArray(); | |||
for (Object token = parser.parseNextToken(); token != null; token = parser.parseNextToken()) | for (Object token = parser.parseNextToken(); token != null; token = parser.parseNextToken()) | |||
{ | { | |||
if (token instanceof COSObject) | if (token instanceof Operator) | |||
{ | ||||
arguments.add(((COSObject) token).getObject()); | ||||
} | ||||
else if (token instanceof Operator) | ||||
{ | { | |||
Operator op = (Operator) token; | Operator op = (Operator) token; | |||
String name = op.getName(); | String name = op.getName(); | |||
if (OperatorName.SET_FONT_AND_SIZE.equals(name)) | if (OperatorName.SET_FONT_AND_SIZE.equals(name)) | |||
{ | { | |||
fontArguments = arguments; | fontArguments = arguments; | |||
} | } | |||
arguments = new COSArray(); | arguments = new COSArray(); | |||
} | } | |||
else | else | |||
End of changes. 5 change blocks. | ||||
12 lines changed or deleted | 7 lines changed or added |