Avatar billede Acidum Nybegynder
03. oktober 2012 - 13:36

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&#8243;, "This is PDF generation test from coolwebdeveloper.com using iTextSharp PDF library");
        testForm.SetField("textBox2&#8243;, "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&#8243;);

        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&#8243;);


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 :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester