我可以在程序中使用具有透明性的颜色吗?我想在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 的指示进行操作,但是没有看到任何结果:
我可以在程序中编辑的产品卡模板(边距,填充,颜色,字体等)。 设置模板时,某些颜色可能具有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
答案 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);