iText 7.1.4中具有透明性的颜色

时间:2019-01-14 17:58:44

标签: c# .net pdf itext itext7

我可以在程序中使用具有透明性的颜色吗?我想在PDF文件中使用该颜色吗?我使用iText 7.1.4创建了pdf,但我不知道如何将transpanrent设置为DeviceRgb的类型:

public static DeviceRgb ToDeviceRgb(this System.Windows.Media.Color color) =>
    new DeviceRgb(color.R, color.G, color.B);

是否可以在iText7中使用具有透明度的颜色?

已更新

我尝试按照 Uladzimir Asipchuk 的指示进行操作,但是没有看到任何结果: enter image description here

我可以在程序中编辑的产品卡模板(边距,填充,颜色,字体等)。 设置模板时,某些颜色可能具有alpha通道(透明),我想在我的PDF文档中看到此透明因子。 因此,正如 Uladzimir Asipchuk 所建议的那样,我将不透明度级别传递给SetBackgroundColor方法中的第二个参数:

public override Table CreateTemplate(Product product)
{
    if(product == null) throw new ArgumentNullException(nameof(product));

    // Create a table of the product card
    var productTable = new Table(new UnitValue[] { UnitValue.CreatePercentValue(40), UnitValue.CreatePercentValue(60) })
        .SetWidth(UnitValue.CreatePercentValue(100))
        .SetBackgroundColor(Settings.BackgroundColor.ToDeviceRgb(), 0.3f) // Here!!
        .SetMarginBottom(10)
        .SetKeepTogether(true);

    // Here we create a cell of the header, 
    // image, description, notes, prices of out product card

    return productTable;
}

您怎么在屏幕截图上看到,我没有透明色等于0.3f

1 个答案:

答案 0 :(得分:1)

iText支持背景的透明颜色。请查看其中的示例:https://github.com/itext/itext7/tree/develop/layout/src/test/resources/com/itextpdf/layout/OpacityTest

例如,在下一个代码段中,我可以获得令人满意的结果:

    Table table = new Table(1);
    table.addCell(new Cell().setBackgroundColor(new DeviceRgb(200, 100, 50), 1f).add(new Paragraph("Cell with Opacoty 1")));
    table.addCell(new Cell().setBackgroundColor(new DeviceRgb(200, 100, 50), 0.5f).add(new Paragraph("Cell with Opacoty 0.5")));
    table.addCell(new Cell().setBackgroundColor(new DeviceRgb(200, 100, 50), 0.1f).add(new Paragraph("Cell with Opacoty 0.1")));
    doc.add(table);

enter image description here