当前位置: 首页 > 知识库问答 >
问题:

ITextSharp:如何查找矩形的填充颜色

章鸿光
2023-03-14

我按照ItextSharp的示例获取图形结构,并使用以下代码获取矩形坐标:

class VectorGraphicsListener : IExtRenderListener
{
public void ModifyPath(PathConstructionRenderInfo renderInfo)
{
    if (renderInfo.Operation == PathConstructionRenderInfo.RECT)
    {
        float x = renderInfo.SegmentData[0];
        float y = renderInfo.SegmentData[1];
        float w = renderInfo.SegmentData[2];
        float h = renderInfo.SegmentData[3];  
...      

我尝试了renderInfo.getfillColor();但是没有这样的方法。

我想获得额外的矩形属性:
像矩形填充颜色,(一些类似于html中的DIV style=“background:blue;border:black;”标签)我如何获得它?

共有1个答案

翟浩穰
2023-03-14

为了总结相关部分,它使用graphicsstate来获取填充颜色。要实现这一点,您需要使用PDFreaderContentParser解析所有PDF内容,将派生的ExtrenderListener传递给ProcessContent方法,如下所示(摘自上面的Java代码):

PdfReader pdfReader = new PdfReader(resource);
ExtRenderListener extRenderListener = new ExtRenderListener();
for (int page = 1; page <= pdfReader.getNumberOfPages(); page++)
{
    PdfReaderContentParser parser = new PdfReaderContentParser(pdfReader);
    parser.processContent(page, extRenderListener);

}

ExtRenderListener将需要重写RenderPath:

public override Path renderPath(PathPaintingRenderInfo renderInfo)
{
    Field gsField = PathPaintingRenderInfo.class.getDeclaredField("gs");
    gsField.setAccessible(true);
    GraphicsState graphicsState = (GraphicsState) gsField.get(renderInfo);
    if ((renderInfo.getOperation() & PathPaintingRenderInfo.FILL) != 0)
    {
        var fillColor = graphicsState.getFillColor();
        bool filledRect= false;
        for (PathConstructionRenderInfo pathConstructionRenderInfo in pathInfos) 
        {
            if(pathConstructionRenderInfo.getOperation()==PathConstructionRenderInfo.RECT)
            {
                filledRect=true;
                break;
            }
            if (filledRect && fillColor!=null)
                Console.WriteLine("{0},{1},{2}",
                fillColor.getRed(), fillColor.getGreen(), fillColor.getBlue());
        }
    }
}
 类似资料:
  • 我正在尝试使用另一个SFO链接提供的解决方案--itextSharp:如何查找矩形的填充颜色 我已经按照上面的文章实现了接口IExtRenderListener。一切都很好,但是对于一些向量,CurrentFillColor和CurrentStrokeColor的值为NULL。在这种情况下,我发现属性ColorSpaceFill和ColorSpaceStroke具有一些非空值。 在这种情况下,规定

  • 我在这方面收效甚微。我想到的唯一一件事就是在我想要的圆所占的空间周围画出巨大的拱形,因为我很难计算出数学来。 编辑:为什么我不能填满整个图像,然后再画圆圈,因为圆圈里的不是单一的颜色,而是我想拍摄一张图像(任何图像,比如我自己的照片),并能够在图像中间的圆圈周围添加单一的颜色。所以,在画它之前,圆圈中间的东西就已经存在了,它不是由代码绘制的。

  • 问题内容: 我用线画一个三角形。如何填充颜色?到目前为止,我只能为线条成功上色,而不能填充颜色。 问题答案: 从顶点制作一个,然后填充它,方法是:

  • 任务是创建一个颜色选择器。为什么当我移动滑块时,颜色没有改变?我必须使用来影响矩形的填充颜色。 最初的请求是: (创建颜色选择器)声明的一个子类,称为,它提供三个对象和三个对象。每个表示颜色的红色、绿色和蓝色部分的值从0到255。使用这些值作为Color构造函数的参数来创建新的Color对象。在相应的中显示每个的当前值。当用户更改的值时,也应相应更改。使用新的GUI组件作为应用程序的一部分,该应用

  • 本文向大家介绍javascript实现通过表格绘制颜色填充矩形的方法,包括了javascript实现通过表格绘制颜色填充矩形的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了javascript实现通过表格绘制颜色填充矩形的方法。分享给大家供大家参考。具体如下: 希望本文所述对大家的javascript程序设计有所帮助。

  • 艺术离不开色彩,今天咱们来介绍一下填充颜色,体会一下色彩的魅力。 填充颜色主要分为两种: 基本颜色 渐变颜色(又分为线性渐变与径向渐变) 我们一个个来看。 填充基本颜色 Canvas fillStyle属性用来设置画布上形状的基本颜色和填充。fillStyle使用简单的颜色名称。这看起来非常简单,例如: context.fillStyle = "red"; 下面是出自 HTML4 规范的可用颜色