Мой код: < /p>
PDColorSpace colorSpace = getGraphicsState().getNonStrokingColorSpace();
if (colorSpace instanceof PDPattern) {
PDPattern patternSpace = (PDPattern) colorSpace;
try {
PDAbstractPattern basePattern = patternSpace.getPattern(getGraphicsState().getNonStrokingColor());
if (basePattern instanceof PDShadingPattern) {
PDShadingPattern shadingPattern = (PDShadingPattern) basePattern;
PDShading shading = shadingPattern.getShading();
int shadingType = shading.getShadingType();
if (shadingType == PDShading.SHADING_TYPE2) { // Axial shading
if (shading instanceof PDShadingType2) {
COSArray extendArray = (COSArray) shading.getCOSObject().getDictionaryObject(COSName.EXTEND);
path.setExtend(String.valueOf(extendArray.size()));
PDShadingType2 axial = (PDShadingType2) shading;
COSArray coords = axial.getCoords();
if (coords != null && coords.size() >= 4) {
float x0 = ((COSNumber) coords.get(0)).floatValue();
float y0 = ((COSNumber) coords.get(1)).floatValue();
float x1 = ((COSNumber) coords.get(2)).floatValue();
float y1 = ((COSNumber) coords.get(3)).floatValue();
< /code>
Полученные x0, x1, y0, y1 не являются реальными первыми и последними координатами градиента в PDF. Как я могу рассчитать, чтобы получить реальные координаты?
Я попытался вычислить его с помощью следующего кода, но это не работает.Matrix ctm = getGraphicsState().getCurrentTransformationMatrix();
Point2D.Float p0 = ctm.transformPoint(x0, y0);
Point2D.Float p1 = ctm.transformPoint(x1, y1);
< /code>
Моя форма градиента является вертикальным градиентом, но два значения x, которые я получаю, одинаковы. Разве значение x не должно оставаться неизменным при изменении значения y?>
Подробнее здесь: https://stackoverflow.com/questions/797 ... ics-in-pdf