Indsæt billede med Itextsharp.
Hej Eksperter.Dette vil af mange nok med god ret blive betegnet som et dumt spørgsmål, da jeg bevæger mig i noget som jeg ikke har forstand til endnu ;)
Sagen er den at jeg forsøger at lave en side som kan generere nogle .pdf filer for mig ud fra en skabelon. I hver enkelt fil skal jeg have indsat både tekst og billeder. Til det formål har jeg ved hjælp af google fundet følgene kode.
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.IO;
using System.Xml;
using System.Xml.Linq;
using iTextSharp.text;
using iTextSharp.text.pdf;
using System.Text;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
CreatePDFDocument();
}
/// <summary>
/// Creates the PDF document with a given content at a given location.
/// </summary>
/// <param name="strFilePath">The file path to write the new PDF to.</param>
/// <param name="strContent">Content in HTML to write to the PDF.</param>
public void CreatePDFDocument()
{
string pdfTemplate = @"F:\pdf_redesign\testFinal.pdf";
string imagePath = String.Empty;
imagePath = @"F:\pdf_redesign\community.jpg";
PdfReader pdfReader = null;
// Create the form filler
FileStream pdfOutputFile = new FileStream(pdfTemplate, FileMode.Create);
pdfReader = new PdfReader(@"F:\Websites\pdf_redesign\testTemplate.pdf");
PdfStamper pdfStamper = null;
pdfStamper = new PdfStamper(pdfReader, pdfOutputFile);
// Get the form fields
AcroFields testForm = pdfStamper.AcroFields;
// Fill the form
testForm.SetField("textBox1″, "This is PDF generation test from coolwebdeveloper.com using iTextSharp PDF library");
testForm.SetField("textBox2″, "This is PDF generation test from coolwebdeveloper.com using iTextSharp PDF library");
iTextSharp.text.Image instanceImg = iTextSharp.text.Image.GetInstance(imagePath);
PdfContentByte overContent = pdfStamper.GetOverContent(1);
//Specifying the name of the field wehere this image will be placed
float[] imageArea = testForm.GetFieldPositions("testImage1″);
iTextSharp.text.Rectangle imageRect = new Rectangle(imageArea[1], imageArea[2], imageArea[3], imageArea[4]);
instanceImg.ScaleToFit(imageRect.Width, imageRect.Height);
instanceImg.SetAbsolutePosition(imageArea[3] - instanceImg.ScaledWidth + (imageRect.Width - instanceImg.ScaledWidth) / 2, imageArea[2] + (imageRect.Height - instanceImg.ScaledHeight) / 2);
overContent.AddImage(instanceImg);
//'Flatten' (make the text go directly onto the pdf) and close the form
pdfStamper.FormFlattening = true;
pdfStamper.Close();
pdfReader.Close();
}
}
Det er lykkedes mig at tilpasse koden til at skrive tekst i dokumentet præcis som det skal. Men når det kommer til billedet går det ikke så let. Jeg får fejl i denne linje som programmet sætter er rød streg under variablen testimage1:
float[] imageArea = testForm.GetFieldPositions("testImage1″);
Jeg håber at nogle af jer har mod på at hjælpe mig til hvordan jeg korrekt indsætter et billede til min pdf fil. Den software jeg arbejder med hedder visual studio 2010 og besvarelser kan både bruges i C# og Visual basic. Såfremt at ITextSharp understøtter sidstnævnte self :)