使用 itextsharp 在 PDF 中保持相似的图像大小

2024-01-11

我正在使用 itextsharp 将我的图片转换为 pdf 文件。我用的是块。然而,当我使用块新线时,尽管我使用了相同的比例来适应,但我的图像会改变它的大小。

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())
        {


            phrase2.Add(new Chunk("Citizen Images :", normalFont));

            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.", normalFont));
            Byte[] bytes1 = (Byte[])dr[10];
            iTextSharp.text.Image image1 = iTextSharp.text.Image.GetInstance(bytes1);
            image1.ScaleToFit(750f, 750f);
            Chunk imageChunk1 = new Chunk(image1, 0, -30);
            phrase2.Add(imageChunk1);

            phrase2.Add(Chunk.NEWLINE);
            phrase2.Add(Chunk.NEWLINE);
            phrase2.Add(Chunk.NEWLINE);
            phrase2.Add(Chunk.NEWLINE);
            phrase2.Add(Chunk.NEWLINE);


            phrase2.Add(new Chunk("2.", normalFont));
            Byte[] bytes5 = (Byte[])dr[11];
            iTextSharp.text.Image image5 = iTextSharp.text.Image.GetInstance(bytes5);
            image5.ScaleToFit(750f, 750f);
            Chunk imageChunk5 = new Chunk(image5, 0, -30);
            phrase2.Add(imageChunk5);

            phrase2.Add(Chunk.NEWLINE);
            phrase2.Add(Chunk.NEWLINE);
            phrase2.Add(Chunk.NEWLINE);
            phrase2.Add(Chunk.NEWLINE);
            phrase2.Add(Chunk.NEWLINE);

            phrase2.Add(new Chunk("3.", normalFont));
            Byte[] bytes6 = (Byte[])dr[12];
            iTextSharp.text.Image image6 = iTextSharp.text.Image.GetInstance(bytes6);
            image6.ScaleToFit(750f, 750f);
            Chunk imageChunk6 = new Chunk(image6, 0, -30);
            phrase2.Add(imageChunk6);

            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.", normalFont));
            Byte[] bytes7 = (Byte[])dr[13];
            iTextSharp.text.Image image7 = iTextSharp.text.Image.GetInstance(bytes7);
            image7.ScaleToFit(750f, 750f);
            Chunk imageChunk7 = new Chunk(image7, 0, -30);
            phrase2.Add(imageChunk7);

            phrase2.Add(Chunk.NEWLINE);
            phrase2.Add(Chunk.NEWLINE);
            phrase2.Add(Chunk.NEWLINE);
            phrase2.Add(Chunk.NEWLINE);
            phrase2.Add(Chunk.NEWLINE);

            phrase2.Add(new Chunk("5.", normalFont));
            Byte[] bytes8 = (Byte[])dr[14];
            iTextSharp.text.Image image8 = iTextSharp.text.Image.GetInstance(bytes8);
            image8.ScaleToFit(750f, 750f);
            Chunk imageChunk8 = new Chunk(image8, 0, -30);
            phrase2.Add(imageChunk8);

            phrase2.Add(Chunk.NEWLINE);
            phrase2.Add(Chunk.NEWLINE);
            phrase2.Add(Chunk.NEWLINE);
            phrase2.Add(Chunk.NEWLINE);


            table2.AddCell(phrase2);

        }

        dr.Close();
        doc1.Add(table);
        doc1.NewPage();
        doc1.Add(table2);
        doc1.Close();
    }


}

我完全忘记了这个问题,但我现在回答一下以供进一步参考。 iTextSharp 自动调整图像大小(这是大多数情况下您想要的),但您可以通过设置来避免这种情况ScaleToFitHeight = false到每个图像。

phrase2.Add(new Chunk("1.", normalFont));
Byte[] bytes1 = (Byte[])dr[10];
iTextSharp.text.Image image1 = iTextSharp.text.Image.GetInstance(bytes1);
image1.ScaleToFit(750f, 750f);
//set scale to fit height = false
image1.ScaleToFitHeight = false;
Chunk imageChunk1 = new Chunk(image1, 0, -30);
phrase2.Add(imageChunk1);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 itextsharp 在 PDF 中保持相似的图像大小 的相关文章

  • 在 LINQ 查询中进行转换

    是否可以在 LINQ 查询中进行强制转换 为了编译器的缘故 下面的代码并不糟糕 但最好将其放入一个查询中 Content content dataStore RootControl as Controls Content List
  • 未找到 DEADLINE 调度策略

    我想在 C 中实现 DEADLINE 调度策略 我知道该功能已实现Linux 3 14 10我正在使用 Ubuntu 14 04Linux 3 17 0 031700 lowlatency 201410060605 SMP PREEMPT这
  • 非模板函数中的尾随返回类型[重复]

    这个问题在这里已经有答案了 我见过有人使用以下语法来实现函数 auto get next gt int 代替 int get next 我理解两者 并且我知道尾随返回类型语法对于使用 decltype 的模板代码很有用 就我个人而言 我会避
  • 无法在 CUDA 中找到 1 到 100 数字的简单和?

    我正在研究使用 CUDA 的图像处理算法 在我的算法中 我想使用 CUDA 内核找到图像所有像素的总和 所以我在cuda中制作了内核方法 来测量16位灰度图像的所有像素的总和 但我得到了错误的答案 所以我在cuda中编写了一个简单的程序来查
  • 来自 double 的 static_cast 可以优化分配给 double 吗?

    我偶然发现了一个我认为不必要的功能 并且通常让我感到害怕 float coerceToFloat double x volatile float y static cast
  • 如何使用T4从一个模板同时生成两个文件?

    我遇到的情况是 我需要生成两个 CSharp 代码文件 它们的代码几乎相同 但方法的输入和输出类型的命名空间不同 事实上 每个文件都针对特定国家 地区 并且类型来自特定国家 地区的 WSDL 我正在围绕服务编写一些包装器 逻辑完全相同 但从
  • 我担心我添加了太多接口

    我正在构建我的领域模型并继续重构它 正如我所做的那样 我发现我喜欢接口 因为它允许我根据接口为具体类型创建可重用的方法 控制器 视图 但是 我发现每次向域实体之一添加新属性时 我都会创建一个接口 例如 我有一个会员状态从抽象继承的对象Ent
  • 加载 QPixmap 数据的更好方法

    更好的方法来做到这一点 没有QImage QImage image width height QImage Format RGB888 memcpy image bits m frameRGB gt data 0 height width
  • 我能否找出 ASP 回发时将触发哪些控制事件?

    是否有可能在发生之前获取将要触发的控制事件列表 例如在Page Load处理程序 例如 如果单击了一个按钮 我可以在button click事件处理程序被调用 您选择了一个非常棘手的问题 原因是事件触发的方式有多种 1 EVENTTARGE
  • 大量互斥体对性能的影响

    假设我有一个包含 1 000 000 个元素的数组 以及多个工作线程 每个线程都操作该数组中的数据 工作线程可能会使用新数据更新已填充的元素 但每个操作仅限于单个数组元素 并且独立于任何其他元素的值 使用单个互斥锁来保护整个数组显然会导致高
  • 从图像创建半透明光标

    是否可以从图像创建光标并使其半透明 我目前正在拍摄自定义图像并覆盖鼠标光标图像 如果我可以将其设为半透明 那就太好了 但不是必需的 销售人员喜欢闪亮的 目前正在做这样的事情 Image cursorImage customImage Get
  • 如何在 C 中链接目标文件?失败并显示“架构 x86_64 的未定义符号”

    因此 我尝试在我的文件 file2 c 中使用另一个 C file1 c 文件中定义的函数 为了做到这一点 我包含了 file1 file1 h 的标头 但是 每当我尝试使用 gcc 编译文件时 我都会收到以下错误 Undefined sy
  • C# 可以为控制台应用程序部分类“程序”类吗?

    我想知道是否可以将为任何控制台应用程序创建的默认 程序 类更改为部分类 我想这样做是因为我想要更好的组织 而不是将所有方法都放在按区域分类的 1 个文件中 对我来说 将某些方法类别放在单独的文件中会更有意义 我对分部类的理解是 它是多个文件
  • MPI - 发送和接收列

    我需要从一个进程发送矩阵列并从另一个进程接收它 我尝试运行以下程序 但得到了一个奇怪的结果 至少我这么认为 仅复制矩阵的第一个元素 某些矩阵元素会发生意外变化 include
  • 具有多个父项的 Qt 树模型

    我想构建一棵树 其中一个元素可以引用另一个元素 我想要构建的树是 像这样的东西 A B C D E F P this is a pointer to C D first child of C E second child of C I fo
  • 使用未命名命名空间而不是静态命名空间

    我可以假设在未命名命名空间中声明的对象相当于static namespace int x 1 static int x 2 FWIK 在这两种情况下 x将具有静态存储期限和内部链接 声明为的对象的所有规则也是如此static适用于未命名名称
  • 稀疏矩阵超定线性方程组c/c++库

    我需要一个库来解决 Ax b 系统 其中 A 是一个非对称稀疏矩阵 每行有 8 个条目 而且可能很大 我认为实现双共轭梯度的库应该没问题 但我找不到一个有效的库 我尝试过 iml 但 iml sparselib 包中缺少一些标头 有小费吗
  • 使用空的weak_ptr作为参数调用map::count安全吗?

    打电话安全吗map count http www cplusplus com reference map map count on an 未初始化因此为空weak ptr http en cppreference com w cpp mem
  • 将同步 zip 操作转换为异步

    我们有一个现有的库 其中一些方法需要转换为异步方法 但是我不确定如何使用以下方法执行此操作 错误处理已被删除 该方法的目的是压缩文件并将其保存到磁盘 请注意 zip 类不公开任何异步方法 public static bool ZipAndS
  • NHibernate:无状态会话错误消息无法获取代理

    我正在使用 nHibernate 无状态会话来获取对象 更新一个属性并将对象保存回数据库 我不断收到错误消息 无状态会话无法获取代理 我在其他地方有类似的代码 所以我不明白为什么这不起作用 有谁知道问题可能是什么 我正在尝试更新Screen

随机推荐

  • 动态插入 iframe 中的 jQuery .ready

    我们正在使用 jQuerythickbox http jquery com demo thickbox 当有人点击图片时动态显示 iframe 在此 iframe 中 我们使用galleria http devkick com lab ga
  • 更改总计和tax_total Woocommerce

    我使用自定义计算创建自定义结帐页面 我如何无法通过 Ajax 更改总计和tax total 或根据需要刷新页面 我为 ajax 请求创建自定义页面并设置此代码 ss new WC Session Handler ss gt set tax
  • 在 Hibernate 中使用惰性属性

    hibernate 中属性标签的惰性属性允许按照链接延迟加载属性 http docs jboss org hibernate orm 3 3 reference en US html mapping html mapping declara
  • 在 git 命令中的开关之前放置 - 和 -​- [重复]

    这个问题在这里已经有答案了 为什么我们把 在 git 中进行一些切换之前 在其他人之前 有没有任何经验法则可以帮助您记住使用哪一个 这实际上是一个通用的类 Unix 系统功能 在 GNU 应用程序中变得很常见 单破折号选项是 短 选项 双破
  • 使用 lapply 根据旧列创建新列

    我的数据如下 DF lt structure list No Adjusted Gross Income c 183454 241199 249506 NoR from 1 to 5000 c 1035373 4272260 1124098
  • 在 VS 2005 中增量构建

    我们在 VS 2005 中有 50 个项目的解决方案 如果没有任何改变 有什么方法可以进行增量构建吗 它有点像现在就这样做 但它执行每个项目的所有预构建和构建后事件 有什么办法可以预防吗 看看构建活动标签 请注意底部的下拉菜单 上面写着运行
  • 如何为 TEX 创建解析器?

    我正在寻求开发一个 TEX 解析器 现在的问题是没有上下文无关语法 也不可能有 因为它不是上下文无关语言 我听说它是 某种宏语言并且是建立在自己的基础上的 所以现在我需要指导这种宏语言具有什么样的语法以及如何在 C 中构建任何内容 我将编写
  • Spring Webflux 不明时间损失

    我们最近切换到 ExpediaGroups GraphQLlibrary https github com ExpediaGroup graphql kotlin它基于 Spring Webflux Since switching our
  • ics 文件 mime 类型

    我正在尝试将 ics 文件上传到我的网站 它是从 Mac OSX 上的 iCal 导出的 我认为 ics 文件的 mime 类型为text calendar 但由于某种原因 该文件的类型似乎是Application octet stream
  • 实体框架延迟加载的私有支持字段

    我正在使用启用了延迟加载的 Entity Framework 5 我有以下代码 private ICollection
  • 本地时区 鲁比

    需要创建一个 Rails 应用程序 我想在其中获取本地时区的时间 即如果位置是Delhi时区应该是IST如果位置是旧金山时区应该是PDT 如何在 ruby on Rails 中实现这一点 附 一行代码 可以根据位置自动设置时区 尝试这个Ti
  • 可变参数模板的链接器错误

    我有一个带有可变参数模板和辅助函数的程序 include
  • comctl32.msm(合并模块)在 Vista 上失败

    我将 comctl32 msm 卡在安装程序中 comctl32 ocx 合并模块 在 XP 上 comctl32 ocx 出现在 system32 中 一切都很顺利 在vista上 它不起作用 你猜我做错了什么吗 我还尝试用以下内容替换合
  • .click() 和实际单击按钮之间的区别? (JavaScript/jQuery)

    我试图找出我一直遇到的这个奇怪的问题 根本原因是实时点击和触发之间的区别 click 我不会详细讨论问题的细节 但基本上当您单击输入按钮时它工作正常 有一个onclick事件 但如果我打电话 click 从其他地方 而不是物理单击按钮 它无
  • 错误:重载的“operator<<”必须是二元运算符(有 3 个参数)

    我知道有很多类似的问题 但我找不到适合我的解决方案 我正在尝试制作简单的分数计算器 可以添加或减去任意数量的函数并将答案写为约简分数 示例 输入 3 2 4 8 输出 2 我正在尝试重载运算符来完成此任务 因此 在我尝试开发的程序中 输入由
  • StructureMap 注入数据上下文时出现间歇性“指定的转换无效”

    我间歇性地收到System InvalidCastException Specified cast is not valid 执行抽象时我的存储库层出现错误SELECT使用 LINQ 映射的查询 该错误不可能是由不匹配的数据库架构引起的 因
  • 如何在jsPDF中使用addHTML函数

    您能让我知道如何在 jsPDF 库中使用 addHTML 函数吗 我正在尝试将网页转换为 pdf 想要使用 addHTML 功能 让我知道需要传递哪些参数才能将整个网页转换为带有标题 徽标 正文等的 pdf 首先 你必须包括jsPDF ht
  • 名称隐藏在构造函数初始化列表中

    我想修改构造函数以使用初始化列表 如下例所示 class Foo public Foo std wstring bar private std wstring bar VERSION 1 Foo Foo std wstring bar th
  • JavaScript 拼接

    我有一个数组 MyArray 我想删除位置 i 处的一个元素 I tried MyArray MyArray splice i 1 但它返回我想要删除的元素 而不是没有我想要删除的元素的数组 我确信这是一个简单的修复 无论如何 谢谢 Cha
  • 使用 itextsharp 在 PDF 中保持相似的图像大小

    我正在使用 itextsharp 将我的图片转换为 pdf 文件 我用的是块 然而 当我使用块新线时 尽管我使用了相同的比例来适应 但我的图像会改变它的大小 protected void btnPDF Click object sender