При программном использовании ABCpdf я обнаружил необходимость добавить новое изображение в определенный канал пользовательских цветов (известный как плашечные цвета) в файле PDF. Обычно эти типы каналов используются в полиграфической промышленности для добавления специальных цветов, таких как золото, серебро и т. Д. На печатный материал, и дают указание печатной машине использовать специальные чернила во время процесса. Каждый канал плашечных цветов может содержать только 1 цвет (с различной интенсивностью в зависимости от их альфа-значения).
Проблема заключается в том, чтобы выяснить, как это легко сделать с помощью ABCpdf. Хотя в документации есть пример кода для этого с использованием функции AddColorSpaceSpot в сочетании с функцией AddText, нет указаний на то, как этого добиться, используя изображение. Любая попытка заменить AddText на AddImage бесполезна, поскольку она добавляет изображение только как обычный объект RGB или CMYK.
Пример кода из документации гласит:
Doc theDoc = new Doc();
theDoc.Rect.Inset(20, 20);
theDoc.FontSize = 300;
theDoc.ColorSpace = theDoc.AddColorSpaceSpot("GOLD", "0 0 100 0");
for (int i = 1; i <= 10; i++) {
theDoc.Color.Gray = 255 / i;
theDoc.AddText(theDoc.Color.Gray.ToString());
theDoc.Rect.Move(25, -50);
}
theDoc.Save(Server.MapPath("docaddcolorspacespot.pdf"));
theDoc.Clear();
На основании вышеизложенногокод Я попробовал следующее в консольном приложении:
Doc theDoc = new Doc();
theDoc.Rect.Inset(10, 10);
theDoc.ColorSpace = theDoc.AddColorSpaceSpot("Gold", "0 0 100 0");
theDoc.FontSize = 300;
theDoc.Color.Gray = 255;
theDoc.AddText("My Text");
theDoc.Save($"output/spot_test_{DateTime.Now.ToString("yyyyMMdd_HHmmss")}.pdf");
theDoc.Clear();
До сих пор все работало хорошо, текст «My Text» присутствует в выходном файле PDF в правильном канале «Gold», который был добавлен.
Поэтому я заменяю строку theDoc.AddText("My Text");
на theDoc.AddImage("images/gradient_alpha.png")'
, ожидая, что она добавит это изображение в текущее цветовое пространство, которое я создал, но это не сработало.
Создание нового вручнуюцветовое пространство, объект изображения и объект растрового изображения также не работали:
Doc theDoc = new Doc();
var cs = new ColorSpace(theDoc.ObjectSoup, ColorSpaceType.Separation);
cs.Doc.Color.String = "0 0 100 0";
cs.Doc.Color.Name = "Gold";
theDoc.ColorSpace = cs.ID;
var image = new XImage();
image.SetFile("images/gradient_alpha.png");
PixMap px = PixMap.FromXImage(theDoc.ObjectSoup, image);
px.Recolor(cs);
theDoc.AddImage(px.GetBitmap());
Итак, как правильно добавить изображение в канал плашечного цвета? Прочитайте ответ ниже, чтобы узнать!