Hallo,
ich habe eine PDF Vorlage, und muss "auf dieses" Text bzw. Bilder legen.
Mit welcher Gratis PDF Klasse geht das, bzw. wie geht das?
Hab schon gesucht, jedoch scheint das Sharppdf bzw. itextsharp nicht zu können!
Hallo manunidi,
itextsharp kannst du benutzen
http://itextsharp.sourceforge.net/
Dazu gibt es hier im Forum auch einige Fragen .
Leider kann ich den von dir angefügten Beitrag nicht öffnen
( dieser wurde bereits gelöscht!!! )
Wie genau kann ich mit itextsharp eine vorlage einfügen?
Das ist kein Beitrag, sondern eine Suche im Forum nach itextsharp.
Aber ich denke die Antworten auf deine Fragen bekommst du in der itextsharp Doku.
Hier gibt es ein Tutorial:
http://itextsharp.sourceforge.net/tutorial/index.html
Das ist mir eigentlich noch alles klar!
Nur wenn ich so z.b. einen Text zu meiner vorlage hinzufüge:
Document pdf = new Document();
PdfWriter.GetInstance(pdf, new FileStream("D:\\vorlage.pdf", FileMode.Open));
pdf.Open();
pdf.Add(new Paragraph("Hello World"));
pdf.Close();
dann geht der alte inhalt in der vorlage einfach verloren!
Wieso?
hier mal ein Beispiel:
// Methode private byte[] ErzeugeAuftragsRechnungPdf()
Document pdfDokument = new Document(new iTextSharp.text.Rectangle(595, 842));
MemoryStream ausgabestrom = new MemoryStream();
PdfWriter pdfSchreiber = PdfWriter.GetInstance(pdfDokument, ausgabestrom);
pdfDokument.Open();
PdfContentByte pdfInhalt = pdfSchreiber.DirectContent;
PdfReader pdfLeser = new PdfReader(Resources.meinPDF); // fertiges PDF zum "Überschreiben" angeben
PdfImportedPage pdfImportiertesPDF = pdfSchreiber.GetImportedPage(
pdfLeser,
1
);
jetzt das Template hinzufügen
pdfInhalt.AddTemplate(pdfImportiertesPDF, 0f, 0f);
pdfInhalt.BeginText();
pdfInhalt.SetFontAndSize(verdana, 9);
pdfInhalt.SetLeading(12f);
jetzt die Objekte hinzufügen
pdfInhalt.SetTextMatrix(350f, 680f);
pdfInhalt.ShowText("(Bitte bei Rückfragen angeben)");
pdfInhalt.NewlineText();
pdfInhalt.ShowText("Kunden-Nummer:");
pdfInhalt.NewlineText();
pdfInhalt.ShowText("Rechnungs-/Auftrags-Nr.:");
pdfInhalt.NewlineText();
pdfInhalt.ShowText("Bestelldatum:");
pdfInhalt.NewlineShowText("Versanddatum:");
pdfInhalt.NewlineShowText("Zahlungsart:");
pdfInhalt.NewlineText();
pdfInhalt.ShowText("Versandart:");
PDF schließen nach dem Schreiben
pdfInhalt.EndText();
pdfSchreiber.ViewerPreferences = PdfWriter.PageModeUseOutlines;
pdfDokument.Close();
return ausgabestrom.ToArray(); // return
PDF generieren
private void DruckeAuftragsRechnung()
{
byte[] pdf = ErzeugeAuftragsRechnungPdf();
if (pdf == null)
{
return;
}
string temporaererDateiname = Path.GetTempFileName();
temporaererDateiname = Path.ChangeExtension(temporaererDateiname, ".pdf");
FileStream ausgabestrom = new FileStream(
temporaererDateiname,
FileMode.OpenOrCreate
);
ausgabestrom.Write(pdf, 0, pdf.Length);
ausgabestrom.Close();
ProzessStarter.OeffneDatei(temporaererDateiname, true); // Anzeigen des PDFs
}
wie gehabt nur ein Beispiel...