2016-04-29 61 views
-1

我正在评估PdfSharp来创建PDF文档。与MigraDoc相比,我认为我必须将每个位置(x,y)或大小乘以1.25以获得预期结果。例如,如果我将页边距设置为2厘米而没有更正,我会得到大约1.6厘米的边距。PdfSharp:为什么我需要将位置和大小乘以1.25才能获得正确的结果?

page.TrimMargins = new TrimMargins 
{ 
    All = XUnit.FromCentimeter(2) 
}; 

当我乘以2与1.25我得到预期2厘米边距:

page.TrimMargins = new TrimMargins 
{ 
    All = XUnit.FromCentimeter(2 * 1.25) 
}; 

同样是字体大小。我必须将尺寸乘以1.25才能获得与MigraDoc相同的尺寸,或者甚至可以打印Word。

顺便说一句,我的系统没有自定义缩放或100%以外的文本大小(我的猜测是这可能是原因)。

有人可以解释这里发生了什么吗?

编辑: 在TomasH的帮助下,我发现当打印时没有自动缩放时,尺寸是完美的。 PdfSharp显然会创建太大的PDF文档。当用MigraDoc做同样的工作时,PDF也有点太大了,但是只有更小的规模。现在仍然存在的问题是文档太大的原因以及MigraDoc用来纠正PDF大小的原因。

这里是我完整的测试代码,只给出了正确的定位,并与修正系数大小:

using (PdfDocument document = new PdfDocument()) 
{ 
    // Create an empty page size A4 with defined margins 
    PdfPage page = CreatePage(document); 
    using (XGraphics graphics = XGraphics.FromPdfPage(page)) 
    { 
     const double sizeCorrectionFactor = 1.25; 
     // Define the page margins. They must be multiplied by 1.25 to be correct!? 
     page.TrimMargins = new TrimMargins 
     { 
      All = XUnit.FromCentimeter(2 * sizeCorrectionFactor) 
     }; 

     // Draw a string. The font size needs to be multiplied by 1.25 to be correct!? 
     double x = 0; 
     double y = 0; 
     graphics.DrawRectangle(XPens.Black, XBrushes.White, 0, 0, page.Width, page.Height); 
     graphics.DrawString("PdfSharp Measure Demo", new XFont("Verdana", 20 * sizeCorrectionFactor), XBrushes.Navy, x, y, XStringFormats.TopLeft); 

     // Draw a rectangle. Position and size must be multiplied by 1.25 to be correct!? 
     x = XUnit.FromCentimeter(2 * sizeCorrectionFactor); 
     y = XUnit.FromCentimeter(2 * sizeCorrectionFactor); 
     double width = XUnit.FromCentimeter(5 * sizeCorrectionFactor); 
     double height = XUnit.FromCentimeter(5 * sizeCorrectionFactor); 
     graphics.DrawRectangle(XPens.Red, XBrushes.Silver, x, y, width, height); 
    } 

    string pdfFilePath = Path.GetTempFileName() + ".pdf"; 
    document.Save(pdfFilePath); 

    Process.Start(pdfFilePath); 
} 
+0

PDF中是错误的(例如用Adobe Reader测量)还是打印后错误?在不进行自动缩放等情况下以100%打印。确保PDF和打印机使用相同的页面大小。 –

+0

我以100%印刷,尺寸是完美的。不知怎的,PdfSharp创建的PDF文档看起来太大了。当用MigraDoc做同样的工作时,PDF也有点太大了,但是只有更小的规模。需要弄清楚为什么是这种情况,以及MigraDoc如何修正PDF大小。 –

回答

1

我找到了答案:我的意思(无据可查)TrimMargins财产是错误的。设置修剪边距显然会将边距的大小添加到页面的宽度或高度。这意味着如果设置了修剪边距,页面尺寸太大,并且在显示或打印时通常会缩小比例。我为裁切边缘设置了2厘米,使页面明显变大1.25倍。解决方案是让所有的边距都为0,并代替打印代码中的所有页边距。

相关问题