Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Abrir imagem e escrever dados de uma List

Olá, estou tentando abrir uma imagem e dentro dela escrever dados de uma List, por exemplo o nome das pessoas da lista, e no final gerar em um arquivo pdf com as imagens geradas após a edição, desde já agradeço a colaboração!!

2 respostas
solução!

Não sei qual versão do framework .NET você está usando, e em qual ambiente, então vou dar uma resposta uma pouco mais genérica.

Se for só escrever na imagem, você pode por exemplo trabalhar a imagem usando o system.drawing, criar a imagem, depois criar um "graphic" e então escrever na imagem com esse objeto que você instanciou, se for apenas para escrever na imagem.

System.Drawing.Image image1 = Image.FromFile("diretorio\fileName1.png");
System.Drawing.Graphics newGraphics = Graphics.FromImage(image1);
String drawString = "Sample Text";
// fonte e cor
 Font drawFont = new Font("Arial", 16);
SolidBrush drawBrush = new SolidBrush(Color.Black);
// onde escrever na imagem
float x = 15.0F;
float y =  5.0F;

// formato
StringFormat drawFormat = new StringFormat();
drawFormat.FormatFlags = StringFormatFlags.DirectionVertical;

// esxrever na imagem
newGraphics.DrawString(drawString, drawFont, drawBrush, x, y, drawFormat);
// salvar como PNG
image1 .Save(@"diretório\fileName2.png", ImageFormat.Png);

// lembre de descartar. o garbage collector não limpa o graphics
 newGraphics.Dispose();

Se a necessidade for realmente trabalhar com pdf, você pode usar o XGraphics, que é algo que eu tenho um pouco menos de experiência para indicar, mas que pode resolver no seu caso.

PdfDocument pdfDoc = new PdfDocument() ;
PdfPage page = new PdfPage();
pdfDoc.Pages.Add(page);
XGraphics gfx= XGraphics.FromPdfPage(page)
 // manipular o pdf com gfx agora
XImage image = XImage.FromFile(@"..\..\images\Test.png");  
gfx.DrawImage(image, 100, 100, 400, 400);
XFont fontRegular = new XFont("Times New Roman", 20);
gfx.DrawString("Meu texto", fontRegular, XBrushes.DarkSlateGray, 0, 30);
pdfDoc.Save("diretório destino")

Aí no seu caso, seria apenas colocar isso dentro de um for e fazer para todos os arquivos de imagem.

Fontes: https://csharp.hotexamples.com/examples/PdfSharp.Drawing/XGraphics/DrawImage/php-xgraphics-drawimage-method-examples.html

https://csharp.hotexamples.com/examples/PdfSharp.Drawing/XGraphics/DrawString/php-xgraphics-drawstring-method-examples.html

https://docs.microsoft.com/pt-br/dotnet/api/system.drawing.image.fromfile?view=netframework-4.7.2

https://docs.microsoft.com/pt-br/dotnet/api/system.drawing.graphics.fromimage?view=netframework-4.7.2

https://docs.microsoft.com/pt-br/dotnet/api/system.drawing.graphics.drawstring?view=netframework-4.7.2

Ola, consegui ontem e esqueci de postar a solução, obrigado pela ajuda, foide forma similar.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software