如何更改要导出为PDF的图像的分辨率

本文关键字:PDF 图像 分辨率 何更改 | 更新日期: 2023-09-27 18:20:09

我遇到了很多PDF问题。包含具有不同维度像素的图片的Pdf。我使用了默认窗口的计算机图像,它的默认尺寸像素为1024x768,图像清晰。然而,如果我从互联网上拍摄分辨率稍低的照片,我的图像大小就会改变。如何设置检索图像的默认分辨率?|我用了这种方法

image5.SetDpi(96, 96);

但是我的照片没有变化。我从数据库里拍下了所有的照片。我数据库中的图片分辨率不一样。

protected void btnPDF_Click(object sender, EventArgs e)
    {
        var doc1 = new Document();
        var filename = "MyTestPDF" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".pdf";
        var output = new FileStream(Path.Combine("C:''Users''apr13mpsip''Downloads", filename), FileMode.Create);
        iTextSharp.text.pdf.PdfWriter.GetInstance(doc1, output);
        doc1.Open();

        PdfPTable table = new PdfPTable(1);
        table.TotalWidth = 585f;
        table.LockedWidth = true;

        PdfPTable table2 = new PdfPTable(1);
        table2.TotalWidth = 585f;
        table2.LockedWidth = true;
        iTextSharp.text.pdf.PdfPCell imgCell1 = new iTextSharp.text.pdf.PdfPCell();
        var logo = iTextSharp.text.Image.GetInstance(Server.MapPath("~/image/logo.jpg"));
        doc1.Add(logo);
        var titleFont = FontFactory.GetFont("Arial", 15, Font.BOLD);
        doc1.Add(new Paragraph("Official Report. Member Report ID : " + DDLCase.SelectedValue, titleFont));
        var normalFont = FontFactory.GetFont(FontFactory.HELVETICA, 14, Font.BOLD);
        var phrase = new Phrase();
        var phrase2 = new Phrase();
        SqlConnection con = new SqlConnection("Data Source = localhost; Initial Catalog = project; Integrated Security = SSPI");
        SqlCommand cm = new SqlCommand("Select lro.fullname, lro.contact, mr.typeofcrime, mr.location,mr.crdatetime, mr.citizenreport, pr.policeid,  pr.prdatetime, pr.policereport, aor.officialreport,  mr.image1, mr.image2, mr.image3, mr.image4, mr.image5,  pr.image1, pr.image2, pr.image3, pr.image4, pr.image5 from MemberReport mr, PoliceReport pr, LoginRegisterOthers lro, AdminOfficialReport aor where mr.memberreportid = '" + DDLCase.SelectedValue + "' and mr.memberreportid=pr.memberreportid and pr.policereportid=aor.policereportid", con);
        con.Open();
        SqlDataReader dr;
        dr = cm.ExecuteReader();
        if (dr.Read())
        {
            phrase.Add(new Chunk("Full Name :", normalFont));
            phrase.Add(dr[0].ToString());
            phrase.Add(Chunk.NEWLINE);
            phrase.Add(Chunk.NEWLINE);
            phrase.Add(new Chunk("Contact :", normalFont));
            phrase.Add(dr[1].ToString());
            phrase.Add(Chunk.NEWLINE);
            phrase.Add(Chunk.NEWLINE);
            phrase.Add(new Chunk("Type Of Crime :", normalFont));
            phrase.Add(dr[2].ToString());
            phrase.Add(Chunk.NEWLINE);
            phrase.Add(Chunk.NEWLINE);
            phrase.Add(new Chunk("Location :", normalFont));
            phrase.Add(dr[3].ToString());
            phrase.Add(Chunk.NEWLINE);
            phrase.Add(Chunk.NEWLINE);
            phrase.Add(new Chunk("Citizen Report Date Time :", normalFont));
            phrase.Add(dr[4].ToString());
            phrase.Add(Chunk.NEWLINE);
            phrase.Add(Chunk.NEWLINE);
            phrase.Add(new Chunk("Citizen Report :", normalFont));
            phrase.Add(dr[5].ToString());
            phrase.Add(Chunk.NEWLINE);
            phrase.Add(Chunk.NEWLINE);
            phrase.Add(new Chunk("Citizen Images :", normalFont));
            phrase.Add(Chunk.NEWLINE);
            phrase.Add(Chunk.NEWLINE);
            phrase.Add(Chunk.NEWLINE);
            phrase.Add(Chunk.NEWLINE);
            phrase.Add(Chunk.NEWLINE);
            phrase.Add(Chunk.NEWLINE);
            phrase.Add(Chunk.NEWLINE);
            phrase.Add(Chunk.NEWLINE);
            phrase.Add(new Chunk("1.", normalFont));
            Byte[] bytes1 = (Byte[])dr[10];
            iTextSharp.text.Image image1 = iTextSharp.text.Image.GetInstance(bytes1);
            image1.ScaleToFit(850f, 850f);
            image1.SetDpi(96,96);
            Chunk imageChunk1 = new Chunk(image1, 0, 0);
            phrase.Add(imageChunk1);
            phrase.Add(new Chunk("2.", normalFont));
            Byte[] bytes5 = (Byte[])dr[11];
            iTextSharp.text.Image image5 = iTextSharp.text.Image.GetInstance(bytes5);
            image5.ScaleToFit(850f, 850f);
            image5.SetDpi(96, 96);
            Chunk imageChunk5 = new Chunk(image5, 0, 0);
            phrase.Add(imageChunk5);
            phrase.Add(new Chunk("3.", normalFont));
            Byte[] bytes6 = (Byte[])dr[12];
            iTextSharp.text.Image image6 = iTextSharp.text.Image.GetInstance(bytes6);
            image6.ScaleToFit(850f, 850f);
            image6.SetDpi(96, 96);
            Chunk imageChunk6 = new Chunk(image6, 0, 0);
            phrase.Add(imageChunk6);
            phrase.Add(Chunk.NEWLINE);
            phrase.Add(Chunk.NEWLINE);
            phrase.Add(Chunk.NEWLINE);
            phrase.Add(Chunk.NEWLINE);
            phrase.Add(Chunk.NEWLINE);
            phrase.Add(Chunk.NEWLINE);
            phrase.Add(Chunk.NEWLINE);
            phrase.Add(Chunk.NEWLINE);
            phrase.Add(new Chunk("4.", normalFont));
            Byte[] bytes7 = (Byte[])dr[13];
            iTextSharp.text.Image image7 = iTextSharp.text.Image.GetInstance(bytes7);
            image7.SetDpi(96,96);
            image7.ScaleToFit(2067f, 2064f);
            Chunk imageChunk7 = new Chunk(image7, 0, 0);
            phrase.Add(imageChunk7);
            phrase.Add(new Chunk("5.", normalFont));
            Byte[] bytes8 = (Byte[])dr[14];
            iTextSharp.text.Image image8 = iTextSharp.text.Image.GetInstance(bytes8);
            image8.ScaleToFit(2067f, 2064f);
            image8.SetDpi(96, 96);
            Chunk imageChunk8 = new Chunk(image8, 0, 0);
            phrase.Add(imageChunk8);
            //phrase2.Add(new Chunk("Police ID :", normalFont));
            //phrase2.Add(dr[6].ToString());
            //phrase2.Add(Chunk.NEWLINE);
            //phrase2.Add(Chunk.NEWLINE);
            //phrase2.Add(new Chunk("Police Report Date Time :", normalFont));
            //phrase2.Add(dr[7].ToString());
            //phrase2.Add(Chunk.NEWLINE);
            //phrase2.Add(Chunk.NEWLINE);
            //phrase2.Add(new Chunk("Police Report :", normalFont));
            //phrase2.Add(dr[8].ToString());
            //phrase2.Add(Chunk.NEWLINE);
            //phrase2.Add(Chunk.NEWLINE);
            //phrase2.Add(new Chunk("Official Report :", normalFont));
            //phrase2.Add(dr[9].ToString());
            //phrase2.Add(Chunk.NEWLINE);
            //phrase2.Add(Chunk.NEWLINE);
            //phrase2.Add(new Chunk("Police Images :", normalFont));
            //phrase2.Add(Chunk.NEWLINE);
            //phrase2.Add(Chunk.NEWLINE);
            //phrase2.Add(Chunk.NEWLINE);
            //phrase2.Add(Chunk.NEWLINE);
            //phrase2.Add(Chunk.NEWLINE);
            //phrase2.Add(Chunk.NEWLINE);
            //phrase2.Add(Chunk.NEWLINE);
            //phrase2.Add(Chunk.NEWLINE);
            //phrase2.Add(new Chunk("1 :'u00a0", normalFont));
            //Byte[] bytes10 = (Byte[])dr[15];
            //iTextSharp.text.Image image10 = iTextSharp.text.Image.GetInstance(bytes10);
            //image10.ScaleToFit(850f, 850f);
            //image5.SetDpi(1024, 768);
            //Chunk imageChunk10 = new Chunk(image10, 0, 0);
            //phrase2.Add(imageChunk10);
            //phrase2.Add(new Chunk("2 :'u00a0", normalFont));
            //Byte[] bytes11 = (Byte[])dr[16];
            //iTextSharp.text.Image image11 = iTextSharp.text.Image.GetInstance(bytes11);
            //image11.ScaleToFit(850f, 850f);
            //image5.SetDpi(1024, 768);
            //Chunk imageChunk11 = new Chunk(image11, 0, 0);
            //phrase2.Add(imageChunk11);

            //phrase2.Add(new Chunk("3 :'u00a0", normalFont));
            //Byte[] bytes12 = (Byte[])dr[17];
            //iTextSharp.text.Image image12 = iTextSharp.text.Image.GetInstance(bytes12);
            //image12.ScaleToFit(850f, 850f);
            //image5.SetDpi(1024, 768);
            //Chunk imageChunk12 = new Chunk(image12, 0, 0);
            //phrase2.Add(imageChunk12);
            //phrase2.Add(Chunk.NEWLINE);
            //phrase2.Add(Chunk.NEWLINE);
            //phrase2.Add(Chunk.NEWLINE);
            //phrase2.Add(Chunk.NEWLINE);
            //phrase2.Add(Chunk.NEWLINE);
            //phrase2.Add(Chunk.NEWLINE);
            //phrase2.Add(new Chunk("4 :'u00a0", normalFont));
            //Byte[] bytes13 = (Byte[])dr[18];
            //iTextSharp.text.Image image13 = iTextSharp.text.Image.GetInstance(bytes13);
            //image13.ScaleToFit(850f, 850f);
            //image5.SetDpi(1024, 768);
            //Chunk imageChunk13 = new Chunk(image13, 0, 0);
            //phrase2.Add(imageChunk13);
            //phrase2.Add(new Chunk("5 :'u00a0", normalFont));
            //Byte[] bytes14 = (Byte[])dr[19];
            //iTextSharp.text.Image image14 = iTextSharp.text.Image.GetInstance(bytes14);
            //image14.ScaleToFit(850f, 850f);
            //image5.SetDpi(1024, 768);
            //Chunk imageChunk14 = new Chunk(image14, 0, 0);
            //phrase2.Add(imageChunk14);

            table.AddCell(phrase);
            //table2.AddCell(phrase2);
        }
        dr.Close();
        doc1.Add(table);
        doc1.NewPage();
        doc1.Add(table2);
        doc1.Close();
    }

上面的代码是我如何从SQL数据库中检索图像的。

如何更改要导出为PDF的图像的分辨率

您可以为图像计算必要的比例因子,并将其应用于图片:(默认情况下PDF具有72DPI)

 percent = 850f / image5.Width;// or percent = 850f / image5.Height
 image5.ScalePercent(percent * 100f)

图5.ScaleAbsolute(850850)