zoukankan      html  css  js  c++  java
  • iTextSharp Image.ScaleToFit自适应缩放简述

    参考文章地址:itextsharp和图像大小 - 码客 (oomake.com)

    国内提问文章:itextsharp和图像大小 - 码客 (oomake.com)

    国外参考文章:scaling images in iTextSharp

    如果想要完全相同的尺寸,那么应该使用ScaleAbsolute而不是ScaleToFit。后者保持图像的纵横比,因此缩放到50x50的100x200图像将为25x50。

    // 传入PDF纸张大小
    img.ScaleAbsolute(120f, 155.25f);
    // 实战案例
    
    string imgPath = pdfPath;
    string imgPDFPath = imgPath + ".pdf";
    iTextSharp.text.Document Doc
    = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4.Rotate(), 10, 10, 10, 10); PdfWriter writer = PdfWriter.GetInstance(Doc, new FileStream(imgPDFPath, FileMode.Create, FileAccess.Write, System.IO.FileShare.Read)); Doc.Open(); Doc.NewPage(); #region 图片自适应 Rectangle defaultPageSize = iTextSharp.text.PageSize.A4.Rotate(); float pageWidth = defaultPageSize.Width - Doc.RightMargin - Doc.LeftMargin; float pageHeight = defaultPageSize.Height - Doc.TopMargin - Doc.BottomMargin; iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(new Uri(new FileInfo(imgPath).FullName)); // 图片宽、高任意超过图纸大小(需要缩放,ScaleToFit方法自适应缩放后可以保持图片的纵横比例,且以长边为主) if (image.ScaledWidth >= pageWidth || image.ScaledHeight >= pageHeight) {   image.ScaleToFit(pageWidth, pageHeight); } // 水平、垂直居中(由于此处的绝对位置是以图片的“左下角”为主,所以这里的Y值要使用加法增加数值,10为Doc的边距) image.SetAbsolutePosition((pageWidth - image.ScaledWidth) / 2 + 10, (pageHeight - image.ScaledHeight) / 2 + 10); #endregion Doc.Add(image); Doc.Close(); pdfPath = imgPDFPath;
  • 相关阅读:
    软件使用---Eclipse
    封装图这一种数据结构
    visual stdio使用
    B P5 第十三届北航程序设计竞赛预赛
    [编程题]堆棋子 中位数
    [编程题]疯狂队列 双端队列
    E. Swapping Characters 一个喳喳的做法
    Oracle
    java && C# 线程
    caffe环境配置
  • 原文地址:https://www.cnblogs.com/sangzs/p/15102245.html
Copyright © 2011-2022 走看看