将pantone颜色应用于iText7中的字体

时间:2017-03-27 09:18:28

标签: c# itext7

我正在评估iText7是否足以在未来的项目中使用。

有人可以在iText7上为我提供一个关于如何为字体创建和应用pantone颜色的明确示例吗?

我曾经在另一个PDF库上开发,在这种情况下,我会将“R G B H S B”值提供给一个数组,创建我的颜色空间,然后在任何地方使用这个颜色空间。我似乎无法在itext7上做到这一点。

我想使用pantone颜色“PANTONE 485 C”使用以下RGB HSB值在pdf上编写字体:

  • H:255
  • S:251
  • B:248
  • R:220
  • G:36
  • B:31

我找到的大多数示例都是针对iText5(已在iText7中删除的函数和类)

提前致谢

3 个答案:

答案 0 :(得分:0)

我有这个java片段。 映射到C#应该相当不错。

public static void main(String[] args) throws FileNotFoundException {

    // color definition
    Color color = new DeviceRgb(220,36,31);

    // set up IO
    PdfWriter writer = new PdfWriter(new File(System.getProperty("user.home"), "stackoverflow.pdf"));
    PdfDocument pdf = new PdfDocument(writer);
    Document doc = new Document(pdf);

    // add paragraph in desired color
    Paragraph para = new Paragraph("I want to write a font on a pdf using pantone color \"PANTONE 485 C\" with the following values of RGB HSB");
    para.setFontColor(color);
    doc.add(para);

    // close IO
    doc.flush();
    doc.close();
}

答案 1 :(得分:0)

要在PDF中使用Pantone颜色,应将其定义为“分色”空间。

string dest = @"C:\publish\Pantone.pdf";
string text = "This text is PANTONE 485 C.";
using (var fileStream = new FileStream(dest, FileMode.Create))
{
    var pdfDoc = new PdfDocument(new PdfWriter(fileStream));
    using (var doc = new Document(pdfDoc))
    {
        PdfFont font = PdfFontFactory.CreateFont(StandardFonts.HELVETICA);

        var alternateSpace = new DeviceRgb(220, 36, 31);
        var tintTransform = new PdfFunction.Type2(
            new PdfArray(new[] { 0.0f, 1f }),
            null,
            new PdfArray(new[] { 1f, 1f, 1f }),
            new PdfArray(new[] { alternateSpace.GetColorValue()[0], alternateSpace.GetColorValue()[1], alternateSpace.GetColorValue()[2] }),
            new PdfNumber(1f));

        var pantone = new Separation("PANTONE 485 C", alternateSpace.GetColorSpace(), tintTransform, 1f);
        doc.Add(new Paragraph(text).SetFontColor(pantone).SetFont(font).SetFontSize(12f));
    }
}

答案 2 :(得分:0)

这是创建RGB专色的C#方法

using iText.Kernel.Colors;
using iText.Kernel.Pdf.Function;
using iText.Kernel.Pdf;
private Separation SpotColor(string name, int r,int g,int b)
{
    var alternateSpace = new DeviceRgb(r, g, b);
    var tintTransform = new PdfFunction.Type2(
        new PdfArray(new[] { 0.0f, 1f }),
        null,
        new PdfArray(new[] { 1f, 1f, 1f }),
        new PdfArray(new[] { alternateSpace.GetColorValue()[0], alternateSpace.GetColorValue()[1], alternateSpace.GetColorValue()[2]}),
        new PdfNumber(1f));

    var spot = new Separation(name, alternateSpace.GetColorSpace(), tintTransform, 1f);
    return spot;
}

然后,您可以像使用此代码一样,使用此方法向画布添加专色。我正在为perf切割设置一个专色,对于许多切割工来说,它使用红色的RGB要求将该专色称为“ CutContourPerf”

iText.Kernel.Pdf.Canvas.PdfCanvas canvas = new PdfCanvas(page);
canvas.SetStrokeColor(SpotColor("CutContourPerf", 255, 0, 0));