gpt4 book ai didi

cocoa - 打印为 PDF 时使文本不可选择

转载 作者:行者123 更新时间:2023-12-03 16:20:35 24 4
gpt4 key购买 nike

我有一个专为打印而设计的 View ,其中包含水印,这是一个在其他内容之上绘制一些文本的透明 View 。

打印和使用 Mac OS 另存为 PDF 功能时,可以选择水印文本。有时这会干扰选择其他内容,有时它只是分散注意力。

如何使生成的 PDF 中的文本不可选?

我尝试将水印绘制在其他内容后面而不是前面。它不会阻止选择水印,但不会妨碍其他内容。然而, TableView 行遮挡了水印,这当然更糟糕。

<小时/>

评论者要求提供代码,因此这里有一些准备 View 的代码:

// self.view is the print view
// watermark is an instance of WatermarkBackground, an NSView
if (watermark) {
watermark.frame = self.view.frame;
[self.view addSubview:watermark positioned:NSWindowAbove relativeTo:nil];
}

[WatermarkBackground drawRect] 中执行绘图的行:

// _message is an NSString
// textAttributes returns a dictionary with a color and font
[_message drawWithRect:textRect
options:NSLineBreakByWordWrapping
attributes:[WatermarkBackground textAttributes]];
<小时/>

我本来想发布这个屏幕截图:

enter image description here

最佳答案

一种选择是创建一个或多个 CGPath从你的字符串中提取 s 并将它们绘制到 PDF 中。一种方法是使用 CTFontCreatePathForGlyph ,但实际上要对整个字符串执行此操作需要大量工作,Core Text 确实有帮助,但它是一个相当低级的框架。

如果您总是绘制相同的水印,那么在某些矢量图形应用程序中创建静态 PDF 并将其与 CGPDFPageDraw 一起使用会更容易。 Illustrator 有一个用于文本对象的“转换为路径”命令。

关于cocoa - 打印为 PDF 时使文本不可选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9420328/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com