私は、あなたとjosephj1989を同じ問題を持っていた、と私は私が私達の答えであると信じるものを見つけました。
PDFSharpドキュメントのthis page、
によればPDFsharpの現在の実装では、グラフィックスコンテキストの一つだけレイアウトを有しています。原点(0,0)は左上で、座標は右下がりになります。測定単位は常にポイント(1/72インチ)です。
したがって、左から3インチ、7インチの画像を描画したいとします。8.5×11ページの最上部から5インチは、その後、私はこのようなものだろう:私はバーコード画像と自分自身をこれをテストした
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);
を、そして私が見つけた、あなたが位置を測定するための彼らの公式を使用する場合、まあ、1/72インチの精度を得ることができます。悪くない。
この時点で、このような測定のためにある種のカプセル化を作成し、主に手近な作業に集中し、変換の詳細に焦点を合わせるのは良いことです。そのようなヘルパー・メソッドで
public static double GetCoordinateFromInch(double inches)
{
return inches * 72;
}
私たちは、このように他のヘルパーを作るために行くことができる...
public static double GetCoordinateFromCentimeter(double centimeters)
{
return centimeters * 0.39370 * 72;
}
、我々は前のサンプルコードでこれを行うことができます:
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);
これが参考になることを願っています。私はあなたが私の例にあるよりもきれいなコードを書くだろうと確信しています。さらに、このプロセスを合理化するためにもっとスマートな方法があるかもしれませんが、ここではドキュメントに書かれていることをすぐに利用できるようにしたいと考えています。
ハッピーPDFレンダリング!