1

我遇到了很多关于 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 数据库中检索我的图像。

4

1 回答 1

1

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

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

或者

image5.ScaleAbsolute(850, 850)

于 2013-06-28T10:37:43.720 回答