我想在ASP.NET MVC项目中使用PDFsharp将图像转换为PDF。我已经成功地将它们转换为PDF,但是它们的格式很奇怪,例如:这张图片:
使用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();
使用具有宽度和高度参数的xgr.DrawImage(img, 0, 0);
的重载,并指定所需的值。
您的呼叫将按照为该图像指定的尺寸绘制图像-结果是无法预测的。
呼叫xgr.DrawImage(img, 0, 0, 595, 842);
将始终以A4尺寸绘制图像。长宽比不同的图像会失真。计算图像大小以保持宽高比留给读者练习。