vy3*_*y32 6 pdf applescript redaction
Adobe Acrobat可以编辑PDF文件(即,实际上删除信息,而不是简单地在其顶部绘制黑框)。我想以编程方式使用此功能。要使用GUI进行编辑,请选择“标记为编辑工具”,将其绘制在要编辑的文本上,然后应用“应用编辑”。
是否可以通过AppleScript或其他方式以编程方式执行此操作?
我知道要编辑的文本的(X,y)位置。
谢谢!
为了正确编辑 PDF,您需要更改内容流。这是非常困难的。
如果您可以找到绘制要删除的文本的内容流部分,那么您就成功了。
另一半是弄清楚如何更改内容流,这样您就不会修改文档的其余部分。如果下一个文本绘制操作符由“tm”命令进行(设置文本矩阵,它绝对定位下一段文本),这很容易。如果没有……您必须计算要替换的文本的确切宽度(几个不同的 PDF 库可以做到这一点),并更改绘图命令以跳过那么多内容。
例如:
BT /F1 10 Tf 1 0 0 1 30 720 吨 (这里有一些文字,你只想编辑那边的大写“编辑”)Tj * (此文本相对于上一行定位)Tj 1 0 0 1 30 650 吨 (本文绝对定位,从30、650开始)Tj
因此,您必须将第一(...)Tj行分解为(Here's some text, and you only want to)Tj,N 0 Td和(that upper case "redact" over there)Tj... 其中“N”正确调整以下文本绘制操作的位置,使其位于完全相同的位置。因此,您需要使用字体资源 /F1(无论结果如何)知道“REDACT”的精确宽度,大小为 10 磅。
为了让您的生活更精彩,您还必须担心字距调整的文本。因此,您可以提供与文本内联的少量间距调整:
(这是从 PDF 规范中绘制的第一个文本中获取的)
[(Adobe Sys)5(t)1(ems Inc)5(orporated)5(20)5(08 \226 All rights)5( reser)-9(ved)]TJ
要正确编辑“Incorporated”,您需要确定它已被拆分为两个字符串,并调整它后面的字符串的位置,使其位于完全相同的位置。
并且字符串可以是<DEADBEEF>十六进制值而不是(plain old ascii).
明白了吗?我没有在这里涵盖所有的可能性,只涵盖最常见的那些。
就像我说的:这很难。
有一个名为Appligent Redax(无连接)的 acrobat 插件,可让您绘制注释(或通过模板、正则表达式等生成注释),然后运行它们的代码来处理编辑。应该可以以编程方式创建他们的注释,甚至可能激活他们的插件:文档中的 JS 可以运行菜单项。
小智 2
您可以使用GroupDocs.Redaction for .NET以编程方式编辑 PDF 文档中的文本。您可以执行文本的精确短语、区分大小写和正则表达式编辑。您可以通过这种方式执行精确的短语编辑。
using (Document doc = Redactor.Load("D:\\candy.pdf"))
{
doc.RedactWith(new ExactPhraseRedaction("candy", new ReplacementOptions("[redacted]")));
// Save the document to "*_Redacted.*" file.
doc.Save(new SaveOptions() { AddSuffix = true, RasterizeToPDF = false });
}
Run Code Online (Sandbox Code Playgroud)
披露:我在 GroupDocs 担任开发人员传播者。