Сделать текст недоступным для выбора при печати в PDF - PullRequest
3 голосов
/ 24 февраля 2012

У меня есть вид, предназначенный для печати, который включает водяной знак, прозрачный вид, который рисует какой-то текст поверх другого содержимого.

При печати и использовании Mac OS Сохранить как PDF функциятекст водяного знака можно выбрать.Иногда это мешает выбрать другой контент, а иногда просто отвлекает.

Как сделать текст недоступным для выбора в сгенерированном PDF?

Вместо этого я попытался нарисовать водяной знак за другим контентом.перед.Это не помешало выбрать водяной знак, но держало его подальше от другого контента.Однако строки табличного представления закрывали водяной знак, что, конечно, хуже.


Комментатор запросил код, поэтому вот некоторый код, который подготавливает представление:

// 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

Ответы [ 2 ]

2 голосов
/ 24 февраля 2012

Один из вариантов - создать один или несколько CGPath из вашей строки и вместо этого нарисовать их в PDF.Один из способов сделать это - использовать CTFontCreatePathForGlyph, но на самом деле это довольно много работы для целых строк, Core Text помогает, но это довольно низкоуровневая структура.

Если выВы всегда рисуете один и тот же водяной знак, было бы намного проще создать статический PDF в каком-либо приложении векторной графики и использовать его с CGPDFPageDraw и т. д. В Illustrator есть команда «Преобразовать в контуры» для текстовых объектов.

0 голосов
/ 24 февраля 2012

Насколько я знаю, нет никакого способа сделать текст невыбираемым в PDF. Вероятно, лучшим решением будет использование водяного знака на изображении.

Однако, если он находится перед текстом, это может затруднить выделение фонового текста.Если это стоит за всем, будут те же проблемы с маскировкой таблиц.Поэтому, возможно, лучшим планом действий было бы не пытаться сделать текст невыбираемым, а сделать фон таблицы прозрачным.Затем используйте изображение водяного знака.

Взяв идею из omz, вместо использования CGPaths и создавая их на лету, самое простое и элегантное решение будет следующим:

  1. Создайте векторный водяной знак, набрав текст в векторном редакторе и развернув текст для создания контуров.
  2. Сохраните его в формате SVG или PDF.
  3. Затем поместите эту новую векторную графику сверхуводяной знак.Он не будет доступен для выбора, не будет скрывать представление и не будет скрыт таблицами.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...