首页 > 其他分享 >PDF标准详解(五)——图形状态

PDF标准详解(五)——图形状态

时间:2024-09-18 11:25:56浏览次数:8  
标签:状态 对象 初始值 color 详解 操作符 PDF 图形

在第三节中,我们说到Q/q 这一对操作符是用来保存和还原图形状态的,那个时候只有一个简单的概念,变换矩阵是图形状态的一员,那么什么是图形状态,以及有哪些图形状态呢?本节将要描述这部分的内容

图形状态

一个PDF应用程序维护内部数据结构称为图形状态,它保存了当前图形控制参数。这些参数定义在全局框架,在全局框架内可执行图形操作符。例如:f(填充)操作符隐式调用当前颜色这个参数,S(描边)操作符调用了当前线框这个参数从图形状态。

这个说法比较的官方,我个人的理解就是它保存了画笔画刷,线性等一系列跟画图相关的属性,在调用图形操作符时,直接采用图形状态中的参数来填充画笔画刷等。

目前设备无关的图形状态参数主要有下面几个

参数 类型
CTM array 当前变换矩阵,例如: a b c d e f cm
clipping path (internal) 当前剪切路径,初始值:CropBox
color space Name or array 当前颜色空间,分为 fill color(填充色) & stroke color(描边色),初始值:DeviceGray
color (various) 当前颜色。初始值:black
text state various 有9个图形状态参数组成,用于文本显示。
line width number 线宽。初始值:1.0
line cap integer 线帽,线2端的样式。初始值:0 J(square butt cap)
line join integer 线连接的样式 。初始值:0 j (miter join)
miter limit integer 尖角限量。 初始值:10 M (11.5°)
dash pattern array and number 虚线。初始值:[] 0 d
blend mode name or array 当前混合模式。初始值:Normal
soft mask dictionary or name 指定阴影的形状或阴影不透明值用于透明图像模式。初始值:None
alpha constant number 透明度。初始值:1.0。 CA(for stroke) ca(fill)
alpha source boolean True: 由 SMask 指定透明模式
false:由 CA 或 ca 指定透明值

我们目前介绍过的图形状态主要有变换矩阵以及裁剪区域。剩下的会在后面的内容中依次介绍

图形对象的状态变更

在pdf 1.7 的标准中,有这么一张图
在这里插入图片描述
这张图描述了图形状态描述对象的变更。
图最中间的是页面对象层,包括图形状态、颜色、文本状态和标记对象等等。
坐上角的连线表示,图形对象可以通过 m/re 等操作符进入对路径对象的描述,路径对象在描述完毕后可以使用f、s等操作符显示路径并回到页面对象层,或者可以通过W/W* 来进入对裁剪区域对象的描述。

其他的连线也是同样的道理。理解了这个图,也就理解了基本的PDF图形操作逻辑,一般想要的绘制的图形未显示或者裁剪区域未发生作用,一般都是进入的状态不对。按照此思路进行查漏补缺一般可以解决问题

本节的内容,不涉及到具体的操作符,仅仅是概念的介绍。后续将会陆续介绍上面提到的图形状态

标签:状态,对象,初始值,color,详解,操作符,PDF,图形
From: https://www.cnblogs.com/lanuage/p/18418136

相关文章

  • WPF LiveChart 图表详解
    引用LiveChart.Wpf在使用的界面当中引用LiveChart.Wpf的类库xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf"以直方图、折线图为例,都属于CartesianChart下的一种Series类型,例如折线图,如下:<lvc:CartesianChart><lvc:CartesianCh......
  • 在 Windows 上恢复已删除的 PDF 文件的最佳方法
    如果您不小心删除了PDF文件或由于系统突然崩溃而无法再找到它们,本指南介绍了恢复已删除文件的最佳方法。帖子中列出的方法简单、有效且可行。我们在列出它们之前对其进行了测试。什么是PDF,Adobe将未保存的PDF存储在哪里?自从Adobe开发可移植文档格式(PDF)以来,该格式......
  • 函数新特性、内联函数、const详解
    函数新特性、内联函数、const详解函数新特性函数回顾与后置返回类型//1.前面放auto,标识函数返回类型放到参数列表之后//2.而放在参数列表之后的返回类型是通过->开始的autofunc(inta,intb)->void内联函数函数定义前加incline,这个普通函数就变成了内联函数......
  • MySQL中的存储过程(详解)
    前言:在数据库开发中,MySQL存储过程是一种非常强大的工具,可以提高数据库的性能、可维护性和安全性。本文将介绍MySQL存储过程的基本概念、语法和使用方法,并通过一些实际的例子来说明其在数据库开发中的应用。首先要知道我们为什么要学这个存储过程,因为当我们的SQL语句较为麻......
  • 智能 Uber 发票 PDF 合并工具
    在现代商务出行中,尤其是在跨国出差中,处理和整合大量Uber发票已成为一项不小的挑战。手动整理和合并这些发票不仅耗时,还容易出错。作为开发者,为什么不开发一个自动化工具,将这些任务交给代码来完成呢?在这篇博客中,我将带你一步步构建一个结合PyQt5、pdfplumber和PyPDF2的智......
  • 滚雪球学SpringCloud[4.1讲]: Spring Cloud Gateway详解
    全文目录:前言APIGateway的概念与作用什么是APIGateway?APIGateway的作用:SpringCloudGateway的核心特性配置SpringCloudGateway1.引入依赖2.基本路由配置3.路由与过滤器的使用示例:路径匹配与过滤器4.动态路由与负载均衡示例:通过Eureka进行动态路由过滤器的......
  • USB协议详解第10讲(USB描述符-报告描述符)
    1.报告描述符的概念和作用开门见山,报告描述符就是描述报告(HID接口上传输事务中的数据)的一组数据结构。首先大家可能会问,报告又是什么?我们前面讲过,USB主机一般是以中断的方式向HID设备发送或者索取数据,也就是说USB主机发送一个请求,设备要根据硬件操作,向主机提交自己的状态变化,例......
  • 详解IPC(进程间通信)
    进程间通信(IPC,Inter-ProcessCommunication)是指在不同进程之间传递数据或信号的机制。由于进程之间的地址空间是独立的,IPC提供了一种在进程之间进行数据交换的方法。以下是几种常见的IPC机制:1.管道(Pipes)匿名管道匿名管道是单向的通信通道,通常用于具有亲缘关系的进程之间(如......
  • 打卡信奥刷题(771)用Scratch图形化工具信P5727[普及组/提高组] 【深基5.例3】冰雹猜想
    【深基5.例3】冰雹猜想题目描述给出一个正整数nnn,然后对这个数字一直进行下面的操作:如果这个数字是奇数,那么将其乘3......
  • STM32F407单片机编程入门(三)ADC详解及实战含源码
    文章目录一.概要二.STM32F407VET6单片机ADC外设特点三.STM32单片机ADC内部结构图1.ADC相关引脚说明2.ADC通道分类3.触发源4.转换周期5.电压转换计算6.更精确电压转换计算四.规则通道ADC采集信号流向1.单次转换模式2.连续转换模式五.CubeMX配置一个ADC采集例程六.CubeMX......