iText - 如何设置 PdfAnnotationInk 的描边宽度和不透明度

2023-12-03

绘制墨迹类型注释时,应该调用哪些函数来设置笔划宽度和不透明度? 我已经浏览过 PdfAnnotation 和 PDFStamp 的类 API,但似乎没有直接设置宽度和不透明度的函数。有什么建议么?谢谢。

我的示例程序:

    final String sourceFile = "C:\\PdfAnnotation\\sample.pdf";
    final String destFile = "C:\\PdfAnnotation\\output\\output.pdf";

    PdfReader reader = new PdfReader(sourceFile);
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(destFile));

    Rectangle rect = new Rectangle(52.92f, 397.56f, 173.36f, 530.67f);
    float[][] inkList = {{61.736111f,530.669250f,61.295139f,525.820984f,61.295139f,518.768860f,
            61.295139f,505.986969f,61.295139f,490.560547f,61.295139f,470.726562f,59.972221f,452.214844f,
            57.767361f,434.143890f,56.003471f,418.276703f,53.357639f,404.172516f,51.593750f,391.390625f,
            50.711807f,382.134766f,49.829861f,376.845703f},
            {68.350693f,453.537109f,73.201385f,453.977875f,79.375000f,453.977875f,85.107635f,453.977875f,92.163193f,453.977875f,
                    100.541664f,453.977875f,108.038193f,453.977875f,117.298615f,453.977875f},
            {112.447914f,509.072266f,112.006943f,505.105469f,112.006943f,498.053375f,112.006943f,488.797516f,112.006943f,472.930328f,
                    112.006943f,457.503906f,112.006943f,441.636719f,112.006943f,426.210297f,111.565971f,412.106110f,
                    111.125000f,401.968750f,111.125000f,391.831390f},
            {161.836807f,454.859375f,161.836807f,449.129547f,161.836807f,441.636719f,161.836807f,433.262360f,161.836807f,
                    423.125000f,161.836807f,412.546875f,161.836807f,405.054047f,161.836807f,398.442719f,161.836807f,392.712891f,
                    161.836807f,389.627594f},
            {163.159729f,485.712250f,170.215271f,469.845062f}
    };

    PdfAnnotation an = PdfAnnotation.createInk(stamper.getWriter(), rect, "", inkList);
    an.setColor(new BaseColor(30, 89, 255));
    an.setFlags(PdfAnnotation.FLAGS_PRINT);
    stamper.addAnnotation(an, 1);

    stamper.close();
    reader.close();

绘制墨迹类型注释时,应该调用哪些函数来设置笔划宽度和不透明度?

有两个答案:

如果 PDF 查看器创建外观

The PDF规格提及

BS字典(选修的)指定线条的边框样式字典(参见表 166) 绘制路径时应使用的宽度和虚线图案。

作为特定于的另一个条目Ink注释词典。这至少允许您设置笔划宽度但不是opacity。只需添加这样一行

PdfAnnotation an = PdfAnnotation.createInk(stamper.getWriter(), rect, "", inkList);
an.setColor(new BaseColor(30, 89, 255));
an.setFlags(PdfAnnotation.FLAGS_PRINT);
// vvv set line width to 5:
an.setBorderStyle(new PdfBorderDictionary(5, PdfBorderDictionary.STYLE_SOLID));
// ^^^ set line width to 5:
stamper.addAnnotation(an, 1);

将描边宽度设置为 5 并得到如下结果:

Screenshot

如果 PDF 提供外观

The PDF规格还提到

注释字典的AP条目(如果存在)应优先 超过InkList and BS条目;参见表 168 和 12.5.5,“外观 流。”

因此,您可以创建一个PdfAppearance,使用其方法完全按照您的需要创建外观(包括透明度),并将其设置为注释的正常外观。然后,PDF 查看器将按照您想要的方式显示注释。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iText - 如何设置 PdfAnnotationInk 的描边宽度和不透明度 的相关文章

  • MVCrazorToPdf (iTextSharp) 使用自定义字体

    我正在尝试使用 nuget 包 MVCRazorToPdf 将自定义字体添加到我的 pdf 输出中 但我在如何执行此操作时遇到了麻烦 因为 iTextSharp 的文档不是很好 而且所有内容似乎都已过时 我当前用于创建pdf的代码是 ret
  • 使用 iText 从 *.ttf 文件创建字体

    这是我的 Resources class 中的一个方法 public static Font loadFont String fontFileName BaseFont base null try base BaseFont createF
  • iTextSharp 如何读取PDF文件中的表格

    我正在努力将 PDF 转换为文本 我可以正确地从 PDF 中获取文本 但表结构很复杂 我知道 PDF 不支持表格结构 但我认为有一种方法可以正确获取单元格 嗯 例如 我想转换成这样的文本 gt This is first example g
  • 如何检查pdf页面是否有书签?

    我正在尝试检查 pdf 文件中的页面是否有书签以及该书签中的内容 我正在使用 iTextSharp text pdf 来阅读和操作 pdf 但我找不到方法检查页面是否有书签 请帮忙 谢谢 我尝试获取书签 但它获取了所有集合 但我不知道如何获
  • iText 列表项或 JTextArea 中的行间距

    我需要在 GUI 中同步 PDF 列表项和 JTextArea 的行距 我可以通过调整其中之一来做到这一点 在列表项 或 JTextArea 超过一行 在 JTextArea 中将换行设置为 true 之前 这一切都运行良好 我可以调整两个
  • TextRenderInfo 在 iTextSharp 中如何工作?

    我从网上得到了一些代码 他们为我提供了字体大小 我不明白 TextRenderInfo 如何读取文本 我尝试使用 renderInfo GetText 它给出随机数量的字符 有时是 3 个字符 有时是 2 个字符或更多或更少 我需要知道 r
  • “setIndentationLeft”不是“iTextsharp.text.Paragraph”的成员

    我正在添加出现错误的段落 p setindentationLeft 不是 itextsharp text paragraph 的成员 Dim bf As BaseFont BaseFont CreateFont Dim p As New P
  • 如何向自定义形状添加阴影图案

    我使用 iText 绘制了一个等边三角形 如下所示 canvas setColorStroke BaseColor BLACK int x start getX int y start getY canvas moveTo x y canv
  • iText 将组件摆动到多个页面

    我有一个 jpanel 它有一个相当大的高度 我想将其绘制成 pdf 大约 2 3 页 有时甚至更多 我的问题是 它不会传递到下一页 它只会尝试将所有内容插入第一页 当页面结束时 它不会传递到下一页 我搜索了一下 尝试了我能想到的一切 但一
  • 图像未按顺序添加到 pdf 文档 itextsharp 中(元素顺序错误)

    我现在正在使用 iTextSharp 5 4 5 几个星期 本周 我在文档中的元素顺序方面遇到了一些奇怪的事情 我正在制作一份包含主题和图像 图表 的 pdf 报告 该文档的格式如下 NR 主题 1 的主题标题 主题 1 的图表图像 来自
  • 代码未在我的 PDF 中绘制水平线

    I m trying to add a horizontal line on top to divide the header text from the actual values in my pdf file 这是我的代码 public
  • 垂直对齐在复合模式下不起作用

    根据文档 以下内容应该有效 但对我不起作用 我错过了什么吗 PdfPTable rs1 new PdfPTable 1 PdfPCell c new PdfPCell Paragraph p new Paragraph some text
  • iTextSharp 从 WPF 固定文档生成 PDF

    我有一个简单的 WPF 应用程序 可以显示和打印一些内容 使用固定文档进行报告 如何使用免费且开放的解决方案从中生成 PDF 比如iTextSharp WPF 固定文档 也称为 XPS 文档 是对 PDF 的明显改进 它具有 PDF 所缺乏
  • 无法将 iTextSharp 与 ASP.NET 5 Core 一起使用

    我正在尝试将 iTextSharp 与 ASP NET 5 Core 一起使用 但是 当我尝试使用 iTextSharp 5 5 5 构建 ASP NET 应用程序时 出现这些错误 Code using Microsoft AspNet M
  • C# 3.0 使用MemoryStream将itextsharp pdf保存到数据库

    我正在尝试将 itextsharp 生成的 pdf 文件保存到数据库 但是 到目前为止我还没有成功 我正在使用 Linq to sql 这是代码 MemoryStream ms new MemoryStream Document d new
  • 使用 iTextSharp 5.3.3 和 USB 令牌签署 PDF

    我是 iTextSharp 和 StackOverFlow 的新手 我正在尝试使用外部 USB 令牌在 C 中签署 PDF 我尝试使用从互联网上挖掘的以下代码 Org BouncyCastle X509 X509CertificatePar
  • 是否可以修改 PDF 表单字段名称?

    情况是这样的 我有一个 PDF 其中包含自动生成的 pdf 表单字段名称 问题是这些名称不太用户友好 它们看起来像 topmostSubform 0 Page1 0 Website Address 0 我希望能够更改它们 使它们类似于 We
  • ExceptionConverter:java.io.IOException:文档没有页面。我正在使用 iText

    当我执行下面的代码时 File f new File c sample pdf PdfWriter getInstance document new FileOutputStream f document open System out p
  • 如何减少具有多个单元的 PdfPTable 的内存消耗

    我正在使用 ITextSharp 创建一个 PDF 它由单个 PdfTable 组成 不幸的是 对于特定的数据集 由于创建了大量 PdfPCell 我遇到了内存不足异常 我已经分析了内存使用情况 我有近百万个单元格的 1 2 在这种情况下有
  • 如何在启用嵌入时间戳和 LTV 的情况下签署 PDF?

    我正在尝试签署启用了时间戳和 LTV 的 pdf 以便它在 Adob e Reader 中显示如下 在英语中 这意味着 签名包含嵌入的时间戳 和 签名启用了 LTV 这是我正在使用的代码 PrivateKey pk get pk from

随机推荐

  • 将 stdout 和 stderr 重定向到文件,并将 stderr 重定向到 stdout

    以下代码将 stdout 写入日志文件并打印 stderr bash script sh gt gt out log 这再次将 stdout 和 stderr 写入日志文件 bash script sh gt gt out log 2 gt
  • SquirreL SQL 客户端 3.7.1 上的 PL/SQL

    我试图在 SQuirrel 上执行 PL SQL 脚本 但似乎不起作用 我通过在 额外类路径 上添加 ojdbc7 jar 来配置 Oracle Thin Driver 能够连接到数据库 但当尝试运行简单代码时 会出现错误 code BEG
  • 如何在 pyGTK 中搜索 gtk.ListStore 并删除元素?

    我有以下代码 其中 store 是gtk ListStore效价是gtk TreeIter 文档说如果没有下一行 iter next 将返回None 因此找到时中断 它应该通过搜索ListStore of int str 并删除其中的一项i
  • 每行对齐 2 个 DIV,高度相同

    我们遇到一个问题 我们需要一个包含动态内容的 div 列表 每行始终有 2 个 div 这两个元素应该具有相同的高度 目前我们有一个使用 JavaScript 设置框高度的解决方案 但它的性能不是很好 因为它会在每次调整大小时重新计算尺寸
  • 按结构中的变量对结构向量进行排序? [复制]

    这个问题在这里已经有答案了 我有一个数据结构 例如 struct Data string firstname string lastname string age 我已将每个结构放置在一个向量 VectorOfData 中 是否可以循环遍历
  • 如何在自定义引导程序应用程序中设置或获取所有日志

    在我的自定义 Burn 托管引导程序应用程序中 我希望有一种方法来设置安装程序的默认日志目录 以便客户可以轻松找到安装日志 如果无法做到这一点 我想要一种合适的方法来在安装后复制日志文件 我尝试在我的安装项目 即 Bundle wxs 和我
  • 添加构建后事件而不覆盖现有事件

    我有一个 Powershell 脚本 由我的 NuGet 包运行 它将生成后事件添加到用户的 Visual Studio 项目中 project Properties where Name eq PostBuildEvent foreach
  • PHP PDO bindParam() 和 MySQL BIT

    我正在尝试更新其中包含 BIT 类型值的表中的数据 如下所示 show contact is either 1 or 0 query gt bindValue scontact show contact PDO PARAM INT 问题是
  • 测试固件

    这遵循几个other 问题 但我认为我已经更好地完善了我的问题 我想在安装设备之前测试我的固件代码 我意识到很多人编写代码 上传 测试等 但我真的想在上传之前编写和测试 主要是因为我想自动化许多场景 那么 最好的方法是什么 如果我正在编写纯
  • JavaScript 过滤图像颜色

    嘿 我正在寻找一种拍摄黑白照片的方法img元素 并使用 JavaScript 指定 RGB 值 以便图像变成该颜色 有什么想法 除了图书馆 我也尝试只用 IE 来做到这一点 我只在 IE 中这样做的原因是因为我正在制作一个小的侧边栏小工具
  • 使用 Three.js 创建凹半球

    我是一名具有良好 JavaScript 经验的 Web 开发人员 目前正在探索Three js的可能性 然而 我对 3D 形状和词汇不是很熟悉 我不知道如何构建我需要的形状 我想创建一个半球体 并且能够投影视频inside这个球体 我有一个
  • 移动太慢时 jquery mouseleave 问题

    我正在使用 jQuery mouseenter 和 mouseleave 事件来上下滑动 div 除了 mouseleave 之外 一切都运行良好 只有当鼠标从 div 上移开的速度相当慢时 它才不会触发 如果我以相对正常或较快的速度移动鼠
  • 如何在 ctypes 中使用 typedef

    我正在尝试使用 ctypes 库在 Python 中包装 C 库 我这样包装结构 file c typedef struct int x int y Point file py import ctypes class Point ctype
  • 当跨度是锚点的子级时,不显示标题工具提示

    例如 考虑以下 DOM 结构 a href title The Anchor img src http www adiumxtras com images thumbs dango status icon set 7 19047 6248
  • 制作每日重置的InfluxDB/Grafana累积函数(锯齿图)

    我将能源使用数据记录为计数器 我希望将其显示为每天重置的累积图表 类似地在这里问 我可以按如下方式生成累积值 SELECT mean value FROM energy WHERE timeFilter GROUP BY time inte
  • 解决方案资源管理器中文件上的蓝色问号

    当通过 P4VS 打开绑定到 Perforce 的解决方案时 我的 VS2012 解决方案资源管理器中的文件上经常出现蓝色问号 看起来有些东西无法与仓库 工作区 诸如此类的东西 同步 点击 刷新视图 总是能解决问题 但我每天都这样做已经厌倦
  • 使用 PyArray_SimpleNew 创建 PyArrayObject 时出现分段错误

    我正在为 numpy 创建一个 C 扩展 该函数应该返回一个数组 因此我决定使用 PyArray SimpleNew 创建一个尺寸为 50x10 的 PyArrayObject 然后用一些值填充它 这是代码 PyArrayObject a
  • npm install 没有安装依赖项的依赖项

    When I npm install我的节点应用程序 我的包列表dependencies我的财产package json已安装 但是 由于某种原因 其中一些依赖项没有安装它们的子依赖项 换句话说 我的依赖项的依赖项没有node module
  • 无法让 CKEditor 插件在 django 中工作

    我正在尝试让 CKEditor 插件 codenippet 在 django 管理中工作 但无法做到 如果我没有在 settings py 中定义任何 CKEDIT CONFIGS CKEditor 就可以工作 如果取出 extraPlug
  • iText - 如何设置 PdfAnnotationInk 的描边宽度和不透明度

    绘制墨迹类型注释时 应该调用哪些函数来设置笔划宽度和不透明度 我已经浏览过 PdfAnnotation 和 PDFStamp 的类 API 但似乎没有直接设置宽度和不透明度的函数 有什么建议么 谢谢 我的示例程序 final String