webForumDet fria alternativet

Exempelkod för sharpPDF

.NET

6 svar · 310 visningar · startad av Pace

Medlem sedan juni 20019 024 inlägg
Frågan#1

Då jag sökte på Internet efter exempelkod för sharpPDF (genererar PDF från .NET), hittade jag nada. Med hjälp av dokumentationen ängade jag därför en halvtimme åt att lära mig hur assemblyn är uppbyggd. Pissigt enkelt, måste jag tillägga. ;) Delar därför med mig av lite exempelkod i C# och vad man kan göra med den.

using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Collections;
using sharpPDF;

/// <summary>Test med sharpPDF, test av Pace 040621</summary>

public class HelloWorld : System.Web.UI.Page {

	public void page_load(System.Object sender, System.EventArgs e) {
		Response.Clear();
		Response.ContentType = "application/octet-stream";
		Response.AddHeader("Content-Disposition", "attachment; filename=\"test.pdf\"");
		generatePdf();
		Response.End();
	}
	
	public void generatePdf() {
		// Skapa nytt pdf-dokuemnt med (titel, författare).
		pdfDocument doc = new pdfDocument("Test", "Pace");
		
		// Lägg till ny sida.
		pdfPage pge = doc.addPage();
		
		// Skriv ut enskilda textstycken på sidan med typsnittet Helvetica i storlek 10 respektive 8 pixlar.
		pge.addText("Faktura", 30, 750, sharpPDF.Enumerators.predefinedFont.csHelvetica, 10);
		pge.addText("blaaherpg.org", 30, 730, sharpPDF.Enumerators.predefinedFont.csHelvetica, 8);
		
		
		// Skapa paragrafer och lägg till sidan.
		int TopMargin = 8;
		int LeftMargin = 0;
		ArrayList ps = new ArrayList(3);
		ps.Add(new paragraphLine("Denna filen skapades " + DateTime.Now.ToString("d") , TopMargin, LeftMargin));
		ps.Add(new paragraphLine("we hallå", TopMargin, LeftMargin));
		ps.Add(new paragraphLine("we       wrgg", TopMargin, LeftMargin));
		pge.addParagraph(ps, 30, 660, sharpPDF.Enumerators.predefinedFont.csHelvetica, 8);
		
		
		// Lägg till ny sida.
		pdfPage pge2 = doc.addPage();
		
		// Skriv ut röd linje på nya sidan.
		pge2.drawLine(50, 100, 70, 120, sharpPDF.Enumerators.predefinedLineStyle.csOutlined, sharpPDF.Enumerators.predefinedColor.csRed);
		
		// Skriv ut grön cirkel med orange kant.
		pge2.drawCircle(500, 100, 20, sharpPDF.Enumerators.predefinedColor.csOrange, sharpPDF.Enumerators.predefinedColor.csGreen);
		
		// Skriv ut bild på sidan (utifrån sökväg) på x 30 och y 300.
		pge2.addImage(Server.MapPath("testbild.jpg"), 30, 300);
		
		
		
		// Skapa pdf-fil i response-strömmen.
		doc.createPDF(Response.OutputStream);
	}
}
Medlem sedan juni 20019 024 inlägg
#2

Kan även tipsa om andra PDF-generatorer för .NET:

Report.NET - Endast exempelkod och ingen dokumentation.
PdfCreator - Har du VS.NET kan du skapa PDF-filer visuellt.
Använda HTMLDOC för att skapa PDF - Om du redan använder Htmldoc det vill säga.
Blog med info om att generera PDF - Ännu mer länkar.

Medlem sedan okt. 2002188 inlägg
#3

Hur blir kvaliten?

Medlem sedan juni 20019 024 inlägg
#4

PDF är uppbyggt av vektorer så det blir perfekt. Bilder som är inlagda blir identiska med originalet.

Medlem sedan apr. 2004778 inlägg
#5

En fråga.
Jag har börjat pyssla med SharpPDF men har inte hunnit med så mycket.
Vet någon om man kan skapa ett liggande PDF dokument?

Medlem sedan juni 20019 024 inlägg
#6

Det finns ingen klass eller metod som direkt kan skapa en liggande PDF, men det går däremot bra att själv ställa storleken på varje sida med property:n pdfPage.height och pdfPage.width, eller direkt i konstruktorn pdfPage(height, width).

Btw, hittade sharpPDF i din blog när jag läste. ;) Tidigare försökta jag använda Report.NET men den var så hiskeligt komplicerad (jämför begripligheten på sharpPDFs "addText" med Report.NETs "RepString"). Dessutom saknar Report.NET dokumentation, och exemplen ger fel vid kompilering.

Medlem sedan apr. 2004778 inlägg
#7

Ok, så det gäller bara att använda rätt height och width ratio när man skapar sidan så att det är samma som en A4.

Roligt att det finns de som har nytta av bloggen.
Jag hittade sharpPdf för ett tag sen och tyckte att det var en bra grej att tipsa om i bloggen. Sen har jag tyvärr inte hunnit leka så mycket med det. Men jag har ett projekt på gång där jag ska använda det för att skapa rätt komplicerade PDF:er, och sidorna måste vara liggande.

249 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)