我正在评估iText7是否足以在未来的项目中使用。
有人可以在iText7上为我提供一个关于如何为字体创建和应用pantone颜色的明确示例吗?
我曾经在另一个PDF库上开发,在这种情况下,我会将“R G B H S B”值提供给一个数组,创建我的颜色空间,然后在任何地方使用这个颜色空间。我似乎无法在itext7上做到这一点。
我想使用pantone颜色“PANTONE 485 C”使用以下RGB HSB值在pdf上编写字体:
我找到的大多数示例都是针对iText5(已在iText7中删除的函数和类)
提前致谢
答案 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));