问题标签 [redaction]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如何更改在 Adobe Acrobat 中创建的编校注释的编校文本
更新:2021-01-15 - 增加了赏金
我正在尝试更改编校注释以更改在应用编校时刻录到 PDF 中的基础文本。在 Acrobat 中,您可以设置“编校代码”的集合,这些代码可用于确定您将某些内容标记为已编校的原因。我的目标是用系统定义的值覆盖用户选择的内容。代码将在应用编辑之前运行。
在我的尝试中,我发现将光标悬停在编辑框上时 Acrobat 产品中可用的“预览”是 Acrobat 独有的,大多数其他查看器不会显示预览。似乎预览与应用的实际编辑分开维护。我不需要更改预览中显示的文本,只需更改应用密文后显示的内容即可。
我已经增加了 150 声望的赏金,因为我认为我自己无法找到解决方案。我最初的问题指定了 iText7,因为这是在我自己的尝试中让我最接近的库。虽然我更喜欢使用 iText7,但我也会考虑使用我可以合理访问的其他库的解决方案(如果需要,我确实有少量预算可以用来购买另一个库)。
我保留了我最初的问题以及我在下面亲自尝试过的后续内容。我感谢提供的任何帮助。
如果您需要一个样本进行测试,这个 DropBox文件夹有一个名为的文件01 - Original.pdf
,您可以将其用作源文档。期望的结果是能够更改在将“原始覆盖文本”的编辑应用到任何其他值(例如“新文本”)时出现的文本。
原始问题:
我正在尝试更改 PDF 中每个修订注释中包含的文本,使用iText7
. 该PdfRedactAnnotation
对象有一个名为的方法SetOverlayText()
,看起来它应该做我想做的事。因此,我编写了一个打开 PDF 的方法,循环浏览页面,然后循环浏览每个页面上的注释,并检查注释是否为PdfRedactAnnotation
. 如果是,它会调用SetOverlayText()
.
在调试和查看注释属性时,我可以看到OverlayText
肯定发生了变化。但是,当我打开文件并通过将光标悬停在编辑标记上来检查覆盖文本时,原始覆盖文本仍然存在。
此外,如果我应用了编辑,原始的覆盖文本就是被烧入页面的内容。
但是,当我右键单击注释时(在应用编辑之前),覆盖文本会立即更新为新文本:
在这一点上,当我应用编辑时,将新文本刻录到 PDF 中。
有什么方法可以以编程方式触发修订注释更新,而无需打开并右键单击每个注释?我在下面包含了我的代码。感谢您提供任何人可以提供的任何建议。
更新:截至 2021 年 1 月 7 日的调查结果
正如@mkl 的回答所指出的那样,PDF Redact Annotation Specification 阐明了底层的 redact annotation DOM 条目。OverlayText只是等式的一部分。如果您使用OverlayText,则必须定义一个DA元素(DA 是一个为 OverlayText 提供格式信息的字符串)。最后,如果定义了RO,它将取代几乎所有其他独立的显示条目。
我的测试文档是使用 Acrobat DC Pro 制作的,通过在 Acrobat 中手动添加编辑。这样做会产生一个带有所有上述条目的编辑注释。我的测试文档的副本可以在这个 DropBox文件夹中找到。
(旁注:在我最初的问题中,我提到将鼠标悬停在编辑的红色矩形上以预览应用的编辑将是什么样子......在多个浏览器和其他 PDF 查看器(如 Foxit Reader)中进行测试后,它看起来像功能“预览”仅在 Acrobat 产品中支持通过将鼠标悬停在红色轮廓上应用编辑时的外观。所有其他测试的查看器将仅显示红色边框,当您将光标悬停在它上面时不会发生任何事情。黑色上面显示的矩形只能在应用编辑后在其他程序中查看。
附加测试表明,悬停预览与编辑详细信息本身是分开维护的,Acrobat 会尝试使悬停详细信息与基础注释保持同步。测试时最好忽略悬停预览,并在应用编辑后参考结果。)
@mkl 建议删除 RO 条目以尝试让 OverlayText 优先考虑是一个好主意,但不幸的是它没有奏效。与我原来的结果没有显着差异。
在 iText7 的 PdfRedactAnnotation 中四处寻找之后,我发现以下方法都会导致对 Redact 对象的 RO 条目的引用:
(我通过检查相等比较器确认它们实际上是完全相同的引用。作为引用类型,它们true
在使用 测试时都返回==
)。
在进一步的测试中,我得出的结论是 RO 属性必须具有内部存储的相同 OverlayText 的副本。如果您有两个具有不同原始值的编校,您可以将 RO 元素从一个编校“复制”到另一个编校:
如果您这样做并应用编辑,第一个编辑中的“覆盖文本”将替换第二个中的“覆盖文本”。其他 RO 元素值也被复制(例如 BBox,它定义了黑色矩形的尺寸)......但至少可以调整这些元素。
问题仍然是 RO 的 iText7 PdfObject 有 7 个子元素,并且它们或它们的后代元素似乎都没有暴露我试图更改的文本。
我的最后一个测试是我是否可以将 RO 元素从一个 PDF 复制到另一个(以便我可以使用第二个源 PDF 和已配置所需 RO“覆盖文本”的注释),但看起来间接对象不喜欢将 .Put() 放入其他文档中。
所以现在,我只能尝试找到一种方法来访问/更改存储在 RO 中的文本,或者从另一个文档中克隆预配置的 RO。
pdf - 以编程方式编辑 PDF 文件页面上的文本和图像
Adobe Acrobat 提供了编辑 PDF 文件的功能。我想以编程方式使用此功能,我提供页码并编辑所有文本和/或图像。
有没有办法以编程方式做到这一点?
oracle - 即使在 oracle 12c 中使用 DBMS_REDACT 成功添加策略后,也无法看到被屏蔽的数据
我能够在没有任何错误的情况下将数据编辑策略添加到表的列中,但看不到任何被屏蔽的数据,这一切都和以前一样,无法隐藏原始数据。我尝试从其他用户访问表,但原始数据并未隐藏。我也能够从 sql developer 添加策略,但在隐藏数据方面仍然没有运气。
我已将所有这些权限授予 sys.jag 用户。
java - 如何避免在 sparkUI 中显示一些秘密值
我在 spark-submit 命令中传递了一些密钥。我在下面使用来编辑密钥:--conf 'spark.redaction.regex='secret_key'
虽然它正在工作,但在作业执行期间,secret_key 在 sparkUI 中是可见的。编辑发生在最后。如何避免这种情况?
python - 如何替换pdf隐藏文本层中的文本?
我必须从 pdf 中删除敏感信息。我想在图像层和文本层中都这样做。我设法使用 fitz 库获得了一半的目标结果。这是我使用的简化形式的代码。
这段代码给了我一个 pdf,其中我要审查的短语被填充的矩形模糊。当我选择其中部分模糊的文本时,复制并粘贴到记事本中,我得到的复制件没有被删减的单词(没有隐藏在矩形后面的部分)。我想要实现的是,在复制文本时,有删除单词长度的中性字符代替该单词。我可以使用 fitz 库另外做的是填写另一个选定的短语来代替被审查的词。那么代码应该是这样的。
这样,一个新的短语会在 pdf 中视觉上出现在被删减的单词的位置,但是当我复制包含新单词的片段时,由于删失单词而产生的间隙仍然是空的。要复制新插入的单词,我只需要选择那个单词。我检查了页面上的块在使用此代码进行此类编辑后的外观。
而且我注意到删减的词从块中的行中删除,并且带有新短语的新块被添加到块列表的末尾。所以块不是按照视觉出现的顺序排列的,而是按照它们添加的顺序排列的。因此,当我从整个页面中提取文本时,新插入的短语出现在最后,并且不清楚它们替换的单词来自哪里。
有没有办法用另一个文本替换pdf中的文本,以便在从编辑的pdf页面复制粘贴文本时新文本将代替旧文本?我已经搜索了互联网,但我发现的只是编辑图像层,它不能以我想要的方式复制编辑的内容。
monitoring - 如何从 Datadog RUM 中编辑地理位置数据?
我有一个 Web 应用程序,我想连接 Datadog 的真实用户监控 (RUM) 服务,但我希望能够防止收集特定信息,例如有关用户位置或设备的信息。他们的文档确实说您可以编辑一些信息,例如引荐来源网址,但您可以编辑的字段列表相当有限。所以我的问题是如何手动编辑或控制 Datadog RUM 收集的其他信息?
javascript - 如何使用 JavaScript [Typescript ES5] 在 JSON 中编辑密码
我有一个看起来像这样的对象:
我需要编辑密码并保留用户名。
从使用正则表达式的 Javascript 中以单词开头的删除行中,我尝试了:
...但这不会保留用户名并在所有双引号("
--> \"
)前插入反斜杠。
什么是正确的正则表达式来反应密码文字字符串并保持其他所有内容不变?
video - 有人可以删除用于编辑的视频注释(ffmpeg)吗?
我正在为一个主要用例是审查的客户开发一个使用 ffmpeg(特别是 ffmpeg.wasm)的应用程序。我担心的是,如果在视频帧的顶部绘制了一个黑盒,然后对视频进行编码,是否替换了帧中的像素(即您不能只是从帧中“剥离”黑盒)?
如果某人有足够的视频专业知识,是否有任何机会(甚至 1%)可以做到这一点?或者这实际上是不可能的?
我一直在互联网上寻找这个问题的答案,并在搜索了一段时间没有运气后决定在这里问它。这是我的第一篇 StackOverflow 帖子,所以如果我做错了什么,请告诉我!
python - 使用 spacy 从数据框中的列中编辑名称
我有一个名为“df1”的数据框。该数据框有 12 列。此数据框中的最后一列称为注释。我需要替换此列中的“约翰、莎莉和理查德”等常用名称,并将值替换为 xxxx 或类似名称。我有一个从 MS SQL 创建这个数据框的工作脚本。我花了几个小时并使用各种资源来尝试获得一些可以做到这一点的代码,但我没有成功。我不必使用 Spacy,但有人告诉我这是一个很好的软件包。任何帮助,将不胜感激。
c# - 防止使用排除敏感属性的通用类型记录个人身份或敏感数据
我想通过编译时安全检查来增强我的记录器,以防止我记录个人识别或敏感数据。这是我想象的界面可能的样子:
此行不应编译。
常规User
类具有属性id
, firstname
, lastname
, createdAt
,roleId
等password
。其中一些字段非常适合记录,例如id
和roleId
。那些不安全的日志将被标记为[PersonallyIdentifying]
或之类的属性[Secret]
。
我想要一个这样的类型SafeToLog<T>
,它对 T 的每个安全记录属性都有方法,但对不安全记录属性没有方法。所以SafeToLog<User>
应该有属性id
,createdAt
和roleId
。它不应该有属性firstname
,lastname
或password
。
是否可以实现该SafeToLog
类型?在 Typescript 中,我可以使用Omit
辅助类型来构造它,但我不知道如何在 C# 中做到这一点。
此外,是否可以防止记录器的意外误用?在上面的示例中,粗心的开发人员仍然可以user
在日志字符串中引用,忽略safeuser
并绕过安全检查。我可以以某种方式强制在日志消息中仅引用 lambda 中提供的变量吗?