如何使用itextsharp减小pdf标题中的图像大小

时间:2014-04-14 10:57:29

标签: c# pdf itextsharp

 public class itsEventsHandler : PdfPageEventHelper
         {
             PdfTemplate total;
             BaseFont helv;


             public override void OnEndPage(PdfWriter writer, Document document)
             {

iTextSharp.text.Image JPG = iTextSharp.text.Image.GetInstance("C:/Users/Public/Pictures/Sample Pictures/Penguins.jpg");
             JPG.ScalePercent(35f);
             JPG.SetAbsolutePosition(130f, 240f);


             iTextSharp.text.Image imgfoot = JPG;
                 //Header Image 
                 iTextSharp.text.Image imghead = iTextSharp.text.Image.GetInstance("C:/Users/Public/Pictures/Sample Pictures/Penguins.jpg");

                 imgfoot.SetAbsolutePosition(0, 0);
                 imghead.SetAbsolutePosition(0, 0);
                 imgfoot.ScaleAbsolute(826, 1100);
                 PdfContentByte cbhead = writer.DirectContent;
                 PdfTemplate tp = cbhead.CreateTemplate(2480, 370); // units are in pixels but I'm not sure if thats the correct units
                 tp.AddImage(imghead);

                 PdfContentByte cbfoot = writer.DirectContent;
                 PdfTemplate tpl = cbfoot.CreateTemplate(2480, 664);
                 tpl.AddImage(imgfoot);
                 cbhead.AddTemplate(tp, 0, 715);

                 helv = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED);

                 /*PdfContentByte cb = writer.DirectContent;
                 cbfoot.SaveState();
                 document.SetMargins(35, 35, 100, 82);
                 cb.RestoreState();*/

                 //document.NewPage(); 
                 base.OnStartPage(writer, document);
             }

             public override void OnOpenDocument(PdfWriter writer, Document document)
             {
                 total = writer.DirectContent.CreateTemplate(100, 100);
                 total.BoundingBox = new iTextSharp.text.Rectangle(-20, -20, 100, 100);
                 helv = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED);
             }
         }

创建标题图像的代码;但是图像看起来太大了。试着使用imgfoot.ScaleAbsolute(826,1100);但是剂量工作它的结果显示一半。请任何人帮我解决。 .................................................. .............................................

1 个答案:

答案 0 :(得分:1)

假设您正在谈论imgHead,那么您创建的图像宽度为826个用户单位,高度为1100个用户单位。然后,您将此图像添加到XObject表单的(0, 0)位置,宽度为2480个用户单位(足够),高度为370个用户单位(这对于图像高度不足1100个用户单位)。

你说图像只显示了一半。为了正确:您已将图像剪裁为其高度的33.6%(370/1100)。更改表单XObject tp的高度值,以便图像适合您已解决问题。

另外:用户单位不是像素!默认情况下,1个用户单位对应1个点。