Bom dia, Alexandre. Nós utilizamos a acbrlib em VB.Net, não usamos Delphi.
Tentamos de todas as formas utilizar um PNG da transparente e não conseguimos. Nossa solução (com um custo alto), foi salvar a imagem que esta no banco de dados em uma pasta temporaria com o fundo branco e ai passar essa imagem para a lib
Call Financeira.Bancos.InitACBoleto(dtConta.Rows(0), ACBoleto)
If ACBoleto Is Nothing Then Exit Sub
If Not File.Exists(Application.StartupPath.ToString() + $"\\Temp\\Logo{DBNumber(FGrade.SelectedRows(0).Cells("PVendaNr").FormattedValue)}.JPG") Then
Using cmd As New SqlCommand($"Select Logotipo from PVenda where PVendaNr={DBNumber(FGrade.SelectedRows(0).Cells("PVendaNr").FormattedValue)}", Global.ETL.Global.SQLConnect)
Using reader As SqlDataReader = cmd.ExecuteReader()
While reader.Read
If Not reader("LogoTipo").ToString = "" Then
Dim bytes = CType(reader("LogoTipo"), Byte())
Using ms As New MemoryStream(bytes)
Dim originalImage As Image = Image.FromStream(ms)
Dim newImage As New Bitmap(originalImage.Width, originalImage.Height)
Using g As Graphics = Graphics.FromImage(newImage)
g.Clear(Color.White) ' Preencher o fundo com branco
g.DrawImage(originalImage, 0, 0, originalImage.Width, originalImage.Height)
End Using
Dim jpgEncoder As Imaging.ImageCodecInfo = Imaging.ImageCodecInfo.GetImageDecoders().FirstOrDefault(Function(codec) codec.FormatID = Imaging.ImageFormat.Jpeg.Guid)
Dim encoderParameters As New Imaging.EncoderParameters(1)
encoderParameters.Param(0) = New Imaging.EncoderParameter(Imaging.Encoder.Quality, 75L)
Dim filePath As String = Application.StartupPath.ToString() & "\\Temp\\Logo" & FGrade.SelectedRows(0).Cells("PVendaNr").Value & ".JPG"
newImage.Save(filePath, jpgEncoder, encoderParameters)
End Using
' Dim I As Image = CType(((New ImageConverter()).ConvertFrom(bytes)), Bitmap)
' I.Save(Application.StartupPath.ToString() + "\\Temp\\Logo" & FGrade.SelectedRows(0).Cells("PVendaNr").Value & ".JPG", Imaging.ImageFormat.Jpeg)
End If
End While
End Using
End Using
End If
ACBoleto.Config.Impressao.DirLogo = Application.StartupPath.ToString() + "\Recursos\Boletos"