如何通过PDFsharp设置PDF格式,将页面大小设置为A4并适合页面大小(缩小)

问题描述 投票:0回答:1

我想在ASP.NET MVC项目中使用PDFsharp将图像转换为PDF。我已经成功地将它们转换为PDF,但是它们的格式很奇怪,例如:这张图片:

Original image

使用PDFsharp转换后:

Partially visible image on page

我希望PDF文件可以适应页面,适合页面(缩小)并且页面大小为A4。

下面是我的代码:

PdfSharp.Pdf.PdfDocument doc = new PdfSharp.Pdf.PdfDocument();
doc.PageLayout = PdfPageLayout.OneColumn;

PdfPage pdfPage = new PdfPage();
XSize size = PageSizeConverter.ToSize(PdfSharp.PageSize.A4);

pdfPage.Orientation = PageOrientation.Portrait;

pdfPage.Width = size.Width;
pdfPage.Height = size.Height;
pdfPage.TrimMargins.Top = 0.5;
pdfPage.TrimMargins.Right = 0.5;
pdfPage.TrimMargins.Bottom = 0.5;
pdfPage.TrimMargins.Left = 0.5;
doc.Pages.Add(new PdfSharp.Pdf.PdfPage());
XGraphics xgr = XGraphics.FromPdfPage(doc.Pages[0]);
XImage img;
try
{
    img = XImage.FromFile(s);
    //pdfPage.Width = img.Size.Width;
    //pdfPage.Height = img.Size.Height;
    xgr.DrawImage(img, 0, 0);
    img.Dispose();
}
catch (Exception ex)
{
    flag = 3;
    errormassage = ex.Message;
    errorfiles.Add(s);
}


xgr.Dispose();
FileInfo fi = new FileInfo(s);
doc.Save(s.Replace(fi.Extension, ".pdf"));
doc.Close();
c# asp.net asp.net-mvc pdfsharp
1个回答
0
投票

使用具有宽度和高度参数的xgr.DrawImage(img, 0, 0);的重载,并指定所需的值。

您的呼叫将按照为该图像指定的尺寸绘制图像-结果是无法预测的。

呼叫xgr.DrawImage(img, 0, 0, 595, 842);将始终以A4尺寸绘制图像。长宽比不同的图像会失真。计算图像大小以保持宽高比留给读者练习。

© www.soinside.com 2019 - 2024. All rights reserved.