Ciao a tutti,
ho provato con questa funzione:
public static byte[] WriteToPdf2(FileInfo sourceFile, string stringToWriteToPdf)
{
PdfReader reader = new PdfReader(sourceFile.FullName);
using (MemoryStream memoryStream = new MemoryStream())
{
PdfStamper pdfStamper = new PdfStamper(reader, memoryStream);
for (int i = 1; i <= reader.NumberOfPages; i++)
{
Rectangle pageSize = reader.GetPageSizeWithRotation(i);
PdfContentByte pdfPageContents = pdfStamper.GetUnderContent(i);
pdfPageContents.BeginText();
BaseFont baseFont = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, Encoding.ASCII.EncodingName, false);
pdfPageContents.SetFontAndSize(baseFont, 40);
pdfPageContents.SetRGBColorFill(255, 0, 0);
float textAngle =
(float)FooTheoryMath.GetHypotenuseAngleInDegreesFrom(pageSize.Height, pageSize.Width);
pdfPageContents.ShowTextAligned(PdfContentByte.ALIGN_CENTER, stringToWriteToPdf,
pageSize.Width / 2,
pageSize.Height / 2,
textAngle);
pdfPageContents.EndText();
}
pdfStamper.FormFlattening = true;
pdfStamper.Close();
byte[] content = memoryStream.ToArray();
using (FileStream fs = File.Create(@"C:\Users\m.armanno\Desktop\C\booo.pdf"))
{
fs.Write(content, 0, (int)content.Length);
}
return memoryStream.ToArray();
}
}
o questa:
public static void WriteText()
{
string oldFile = @"C:\Users\m.armanno\Desktop\C\01ZI20120021.pdf";
string newFile = @"C:\Users\m.armanno\Desktop\C\output.pdf";
PdfReader reader = new PdfReader(oldFile);
Rectangle size = reader.GetPageSizeWithRotation(1);
Document document = new Document(size);
FileStream fs = new FileStream(newFile, FileMode.Create, FileAccess.Write);
PdfWriter writer = PdfWriter.GetInstance(document, fs);
document.Open();
PdfContentByte cb = writer.DirectContent;
BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
cb.SetColorFill(BaseColor.DARK_GRAY);
cb.SetFontAndSize(bf, 8);
cb.BeginText();
string text = "Some random blablablabla...";
cb.ShowTextAligned(1, text, 520, 640, 0);
cb.EndText();
cb.BeginText();
text = "Other random blabla...";
cb.ShowTextAligned(2, text, 100, 200, 0);
cb.EndText();
PdfImportedPage page = writer.GetImportedPage(reader, 1);
cb.AddTemplate(page, 0, 0);
document.Close();
fs.Close();
writer.Close();
reader.Close();
}
Ma entrambe non generano errori ma non scrivono nulla sul pdf che gli ho dato come parametro.
Riesco solo ad inserire immagini con questa funzione:
public static void WriteImage()
{
using (Stream inputPdfStream = new FileStream(@"C:\Users\m.armanno\Desktop\C\01ZI20120021.pdf", FileMode.Open, FileAccess.Read, FileShare.Read))
using (Stream inputImageStream = new FileStream(@"C:\Users\m.armanno\Desktop\C\a.jpg", FileMode.Open, FileAccess.Read, FileShare.Read))
using (Stream outputPdfStream = new FileStream(@"C:\Users\m.armanno\Desktop\C\result.pdf", FileMode.Create, FileAccess.Write, FileShare.None))
{
var reader = new PdfReader(inputPdfStream);
var stamper = new PdfStamper(reader, outputPdfStream);
var pdfContentByte = stamper.GetOverContent(1);
Image image = Image.GetInstance(inputImageStream);
image.SetAbsolutePosition(100, 100);
pdfContentByte.AddImage(image);
stamper.Close();
}
}
Ma il testo ho cercato ovunque ma non riesco proprio ad inserirlo.
Riuscite a dirmi cosa sbaglio per favore?
Grazie mille in anticipo!!!