风景中的iText渐变问题

理查德

过去在iText中使用渐变没有问题,突然我遇到了问题,即它无法正常工作,并将范围缩小到这次我在横向环境中工作(实际上是PageSize.A4.rotate())。rotation()会发生某些事情,导致渐变无法按预期工作(对我来说)。

为了说明,我改编了粉红色蓝色三角形的示例http://developers.itextpdf.com/question/how-add-shading-pattern-custom-shape

public class GradientProblem {
    public static void main(String[] args) throws FileNotFoundException, DocumentException {
        Document doc = new Document(PageSize.A4);
        PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream(new File("gradientProblem.pdf")));
        doc.open();
        drawSexyTriangle(writer);
        doc.setPageSize(PageSize.A4.rotate());
        doc.newPage();
        drawSexyTriangle(writer);
        doc.close();
    }

    private static void drawSexyTriangle(PdfWriter writer) {
        PdfContentByte canvas = writer.getDirectContent();
        float x = 36;
        float y = 400;
        float side = 70;
        PdfShading axial = PdfShading.simpleAxial(writer, x, y, x + side, y, BaseColor.PINK, BaseColor.BLUE);
        PdfShadingPattern shading = new PdfShadingPattern(axial);
        canvas.setShadingFill(shading);
        canvas.moveTo(x,y);
        canvas.lineTo(x + side, y);
        canvas.lineTo(x + (side / 2), (float)(y + (side * Math.sin(Math.PI / 3))));
        canvas.closePathFillStroke();
    }
}

请注意,第一页上三角形的阴影为粉红色-蓝色,而第二张旋转页上的阴影为蓝色。

  • 这是错误还是预期的行为?
  • 如果期望的话,坐标系统是如何工作的,即simpleAxial的x0,y0,x1,y1参数到底意味着什么?

显而易见的解决方法是构造适当的页面大小而无需旋转。

但是,使用rotate()似乎是建议的方法,当我在可重复使用的表或单元格事件中深入使用渐变代码时,我真的不知道页面的构造方式(或者我不知道该如何构造)如何?)

任何提示或见解将不胜感激。

PS:尝试过iText 5.5.8和5.5.9

mkl

问题是,尽管itext内容添加功能确实考虑了页面旋转(它们平移给定坐标,以便在旋转的页面中x右移,y向上并且原点在左下方),阴影图案定义(这是不是页面内容的一部分,但外部定义)没有

因此,您必须使明暗定义旋转可见,例如,如下所示:

Document doc = new Document(PageSize.A4);
PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream(new File(RESULT_FOLDER, "gradientProblem.pdf")));
doc.open();
drawSexyTriangle(writer, false);
doc.setPageSize(PageSize.A4.rotate());
doc.newPage();
drawSexyTriangle(writer, true);
doc.close();

private static void drawSexyTriangle(PdfWriter writer, boolean rotated)
{
    PdfContentByte canvas = writer.getDirectContent();
    float x = 36;
    float y = 400;
    float side = 70;
    PdfShading axial = rotated ?
            PdfShading.simpleAxial(writer, PageSize.A4.getRight() - y, x, PageSize.A4.getRight() - y, x + side, BaseColor.PINK, BaseColor.BLUE)
            : PdfShading.simpleAxial(writer, x, y, x + side, y, BaseColor.PINK, BaseColor.BLUE);
    PdfShadingPattern shading = new PdfShadingPattern(axial);
    canvas.setShadingFill(shading);
    canvas.moveTo(x,y);
    canvas.lineTo(x + side, y);
    canvas.lineTo(x + (side / 2), (float)(y + (side * Math.sin(Math.PI / 3))));
    canvas.closePathFillStroke();
}

DrawGradient.java

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

快速显示UIBUTTON中的渐变层问题

来自分类Dev

.net 中 iText 的嵌套表问题

来自分类Dev

在Android中渐变渐变

来自分类Dev

CSS中渐变的渐变

来自分类Dev

Firefox线性渐变问题

来自分类Dev

PHP渐变问题

来自分类Dev

Webpack SVG渐变问题

来自分类Dev

在Crystal Report中混合肖像和风景

来自分类Dev

在iOS中锁定人像和风景

来自分类Dev

iText格式问题

来自分类Dev

iText - PDFAppearence 问题

来自分类Dev

圆形渐变效果的悬停问题

来自分类Dev

Swing Dialog 渐变绘制问题

来自分类Dev

Keras:渐变问题,自定义图层在顺序模型中不起作用

来自分类Dev

Edge中自定义下拉箭头图标样式的CSS线性渐变问题

来自分类Dev

在同一长页面中应用时的CSS3渐变问题

来自分类Dev

UITableviewCell 中的渐变添加导致重新加载时出现动画问题

来自分类Dev

在Universal App中为iPhone的Split View Controller禁用风景

来自分类Dev

如何在iPhone的人像/风景中锁定屏幕?

来自分类Dev

在Komodo Edit中以垂直风景进行HTML编辑预览

来自分类Dev

在Universal App中为iPhone的Split View Controller禁用风景

来自分类Dev

threejs中的渐变clearColor

来自分类Dev

tabBar中的渐变背景

来自分类Dev

画布中的角度渐变

来自分类Dev

NativeScript中的CSS渐变

来自分类Dev

UITextField中的渐变文本

来自分类Dev

HTML Canvas中的渐变

来自分类Dev

Android中的简单渐变

来自分类Dev

Inkscape中的渐变网格?