Ich hatte das gleiche Problem wie du, josephj1989, und ich fand, was ich glaube, dass unsere Antwort sein.
Nach this page in der PDFSharp Dokumentation,
Die aktuelle Implementierung von PDFsharp hat nur ein Layout des Kontextes Grafiken. Der Ursprung (0, 0) ist oben links und Koordinaten wachsen nach rechts und unten. Die Maßeinheit ist immer Punkt (1/72 Zoll).
Also, sagen, ich möchte ein Bild 3 Zoll von links und 7 zu zeichnen.5 Zoll von der Spitze einer 8,5 x 11 Seite, dann würde ich so etwas tun:
PdfDocument document = GetBlankPdfDocument();
PdfPage myPage = document.AddPage();
myPage.Orientation = PdfSharp.PageOrientation.Portrait;
myPage.Width = XUnit.FromInch(8.5);
myPage.Height = XUnit.FromInch(11);
XImage myImage = GetSampleImage();
double myX = 3 * 72;
double myY = 7.5 * 72;
double someWidth = 126;
double someHeight = 36;
XGraphics gfx = XGraphics.FromPdfPage(myPage);
gfx.DrawImage(myBarcode, myX, myY, someWidth, someHeight);
ich das selbst mit einem Barcode-Bild getestet, und ich fand, dass wenn Sie ihre Formel Positionierung für die Messung, Sie können ein Niveau der Genauigkeit bei, gut, 1/72 eines Zolls bekommen. Das ist nicht schlecht.
So, an diesem Punkt wäre es gut, eine Art Kapselung für solche Messungen zu erstellen, so dass wir uns hauptsächlich auf die Aufgabe konzentrieren und nicht die Details der Konvertierung.
public static double GetCoordinateFromInch(double inches)
{
return inches * 72;
}
konnten wir gehen an andere Helfer auf diese Weise machen ...
public static double GetCoordinateFromCentimeter(double centimeters)
{
return centimeters * 0.39370 * 72;
}
Mit einer solchen Hilfsmethoden, könnten wir dies mit dem vorherigen Beispielcode:
double myX = GetCoordinateFromInch(3);
double myY = GetCoordinateFromInch(7.5);
double someWidth = 126;
double someHeight = 36;
XGraphics gfx = XGraphics.FromPdfPage(myPage);
gfx.DrawImage(myBarcode, myX, myY, someWidth, someHeight);
Ich hoffe, das ist hilfreich. Ich bin mir sicher, dass Sie saubereren Code schreiben werden als in meinem Beispiel. Außerdem gibt es wahrscheinlich viel klügere Möglichkeiten, diesen Prozess zu rationalisieren, aber ich wollte hier nur etwas einfügen, das sofort das nutzt, was wir in der Dokumentation gesehen haben.
Happy PDF-Rendering!