使用 itextsharp 将 HTML 转换为 PDF

2024-03-28

当使用将 html 转换为 pdf 时itextsharp使用 css 为网页应用的 iam 样式在转换后的 pdf 中不起作用。

这是我的CSS代码:

<style type="text/css">
       .cssformat
            {
                width:300px;
                height:200px;
                border:2px solid black;
                background-color:white; 
                border-top-left-radius:60px 90px; 
                border-bottom-right-radius:60px 90px;
        }                
        </style>

这是我的 html 代码:

      <div id="divpdf" runat="server">
        <table id="tid" runat="server">
        <tr>
        <td>
       <asp:Label ID="Label1" runat="server" Text="this is new way of pdf" CssClass="cssformat"></asp:Label>
        </td>
        </tr>
        </table>
        </div>

以下是我用 c# 尝试过的:

 Response.ContentType = "application/pdf";
        Response.AddHeader("content-disposition", "attachment;filename=TestPage.pdf");
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        StringBuilder sb = new StringBuilder();
        StringWriter sw = new StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(sw);
        Document pdfDoc = new Document(PageSize.A4, 60f, 80f, -2f, 35f);
        divpdf.RenderControl(hw);
        StringReader sr = new StringReader(sw.ToString());   
        HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
        PdfWriter writer = PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
        pdfDoc.Open();
        hw1.Parse(new StringReader(sttt));
        htmlparser.Parse(sr);
        pdfDoc.Close();
        Response.Write(pdfDoc);
        Response.End();
        sw.Close();
        sr.Close();
        hw.Close();

我在使用 iTextSharp 从 HTML 转换为 PDF 时费了很大劲,最终放弃了,因为我无法获得与我的 HTML5/CSS3 页面 100% 相同的转换后的 PDF。所以我给你提供了最终对我有用的替代方案。

令人惊讶的是,当您不准备为商业图书馆付费时,可用的选择非常少。我的一位客户也有同样的要求(从 HTML 转换为 PDF),他们不想支付任何第三方工具的费用,所以我必须制定一个计划。这就是我所做的,不是最好的解决方案,但它完成了工作

我下载了最新版本的wkhtml转pdf https://code.google.com/p/wkhtmltopdf/。不幸的是,wkhtmltopdf 工具在转换为 PDF 时没有显示嵌入 HTML 中的一些谷歌图表。因此,我使用了附带的 wkhtmltoimage 工具来转换为 PNG,它按预期唤醒并显示所有图形。 然后我下载了最新版本的图像魔法 http://www.imagemagick.org/script/index.php并将 PNG 转换为 PDF。 我使用 C# 自动化了这个过程。

不幸的是,这不是最优雅的解决方案,因为您必须执行两次转换并做一些工作来自动化所有操作,但这是我能想到的最好的解决方案,它给了我所需的结果和质量。

当然,有很多商业软件可以做得更快更好。

只是一个旁注:

我必须转换的网页是使用 Bootstrap 版本 3 以 HTML5 和 CSS3 开发的,其中包含一些谷歌图表和图表。一切都已顺利转换。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 itextsharp 将 HTML 转换为 PDF 的相关文章

  • 如何使用 wpf webbrowser 将数据发布到 Web 服务器

    我想从数据库获取数据并使用它来让用户登录到网站 我有一个包含 Web 浏览器控件的 wpf 页面 我有这样的代码 用于将用户登录到用 php 编写的网站
  • 单线程公寓问题

    从我的主窗体中 我调用以下命令来打开一个新窗体 MyForm sth new MyForm sth show 一切都很好 但是这个表单有一个组合框 当我将其 AutoCompleteMode 切换为建议和追加时 我在显示表单时遇到了这个异常
  • 我可以仅在少数情况下关闭模拟吗

    我有一个始终使用模拟的应用程序 但是 当用户以管理员身份登录时 一些操作需要他们写入服务器本身 现在 如果这些用户在实际服务器上没有权限 有些用户没有 则不会让他们写入 我想做的是关闭几个命令的模拟 有没有办法做这样的事情 using Ho
  • 在 IIS 托管的 ASP.NET Web 应用程序中打开页面时显示“找不到资源”

    我正在使用 IIS 8 5 将 Web 应用程序 Net 4 5 托管到远程服务器 该应用程序在本地和远程 IIS 上运行良好 但是有一个页面 Reports ReportsMain aspx 导致错误 找不到资源 我确保该页面存在 我还确
  • 以编程方式更新 ClickOnce 应用程序的部署清单会导致缺少 4.0 中所需的 <兼容框架> 元素

    我正在致力于自动化 NET 4 0 ClickOnce WPF 应用程序的安装程序 该应用程序需要在应用程序配置文件 我经历了寻找必须遵循的具体步骤的棘手过程Mage exe http msdn microsoft com en us li
  • R Shiny - 修复了 Shiny 仪表板中的侧边栏和主标题

    我有一个简化的闪亮仪表板 请参阅下面的代码 我想修复侧边栏和主标题 因此 在其他帖子的帮助下 我编写了一个 CSS 文件来解决该问题 sidebar color FFF position fixed width 220px white sp
  • 如何用 C 语言练习 Unix 编程?

    经过五年的专业 Java 以及较小程度上的 Python 编程并慢慢感觉到我的计算机科学教育逐渐消失 我决定要拓宽我的视野 对世界的一般用处 并做一些 对我来说 感觉更重要的事情就像我真的对机器有影响一样 我选择学习 C 和 Unix 编程
  • 错误左值需要作为赋值C++的左操作数

    整个程序基本上只允许用户移动光标 如果用户位于给定的坐标范围 2 2 内 则允许用户键入输入 我刚刚提供了一些我认为足以解决问题的代码 我不知道是什么导致了这个问题 你能解释一下为什么会发生吗 void goToXY int int 创建一
  • 奇怪的 ASP.NET 错误!

    我正在运行带有 IIS 7 5 的 Windows 7 x64 版本 我有一个简单的 asp net 网站 我在其他版本的 Windows 和 IIS 上运行该网站 但现在在某些页面上出现以下错误 异常信息 异常类型 HttpParseEx
  • 为什么这个 CSS nowrap 不起作用?

    我试图阻止 bar top container div 包裹它的内容 无论页面有多宽 即两个选择应该始终出现在同一行 但是当页面宽度太小而无法容纳它们时 这不起作用一方面 我该如何解决这个问题 Styles bar top containe
  • 显示带有 jQ​​uery-ui 自动完成功能的微调器

    我一直在到处搜索 但没有看到有人这样做 是否有可能拥有某种带有 jQ uery UI 自动完成功能的旋转器 加载器 1 8 获取数据时 我的解决方案是使用 ui autocomplete loading CSS 类 该类在 ajax GET
  • 网页抓取 - 如何识别网页上的主要内容

    给定一个新闻文章网页 来自任何主要新闻来源 例如时报或彭博社 我想识别该页面上的主要文章内容 并丢弃其他杂项元素 例如广告 菜单 侧边栏 用户评论 在大多数主要新闻网站上都可以使用的通用方法是什么 有哪些好的数据挖掘工具或库 最好是基于Py
  • .NET JIT 编译的代码缓存在哪里?

    NET 程序首先被编译为 MSIL 代码 当它被执行时 JIT编译器会将其编译为本机机器代码 我想知道 这些JIT编译的机器代码存储在哪里 它只存储在进程的地址空间中吗 但由于程序的第二次启动比第一次快得多 我认为即使在执行完成后 该本机代
  • 相当于 C# 中 Java 的“ByteBuffer.putType()”

    我正在尝试通过从 Java 移植代码来格式化 C 中的字节数组 在 Java 中 使用方法 buf putInt value buf putShort buf putDouble 等等 但我不知道如何将其移植到 C 我尝试过 MemoryS
  • 从 C 线程调用 Python 代码

    我对从 C 或 C 线程调用 Python 代码时如何确保线程安全感到非常困惑 The Python 文档 http docs python org c api init html non python created threads似乎是
  • ASP.NET Core Razor Page 多路径路由

    我正在使用 ASP NET Core 2 0 Razor Pages 不是 MVC 构建系统 但在为页面添加多个路由时遇到问题 例如 所有页面都应该能够通过 abc com language 访问segment shop mypage 或
  • 访问被拒绝 - 401.2:未经授权的错误

    我有一个托管在 IIS 7 5 上的 ASP NET 网站 如下所示 我有 customwebsite com 作为网站 其中有两个 Web 应用程序 uk 和 us 这样我就可以通过 customwebsite com uk 和 cust
  • 如何获取 QIcon 的文件/资源​​路径

    假设我做了这样的事情 QIcon myIcon resources icon ico 我稍后如何确定该图标的路径 例如 QString path myIcon getPath 问题是 没有getPath 会员 我找不到类似的东西 但肯定有办
  • c# 模拟 IFormFile CopyToAsync() 方法

    我正在对一个异步函数进行单元测试 该函数将 IFormFile 列表转换为我自己的任意数据库文件类列表 将文件数据转换为字节数组的方法是 internal async Task
  • 新的 .NET 6 控制台模板中的 C# 函数重载不起作用

    我在尝试重载该函数时遇到错误Print object in the 新的 NET 6 C 控制台应用程序模板 https learn microsoft com en us dotnet core tutorials top level t

随机推荐

  • tangelgram 的彩色线 - 包 ape 函数 cophyloplot

    我正在尝试对包含相同分类单元的两棵树进行系统发育比较 我想根据隔离站点为连接着色 我原以为我已经成功执行了此操作 但我的工作流程中存在错误 即彩色线与隔离站点不准确对应 我想知道您是否有任何见解 请在下面找到我的可复制示例 site lt
  • firebase导入服务抛出错误

    我正在使用 firebase 函数 我想使用服务帐户密钥 json 来初始化App 并将其放入凭证中 但出现错误 类型参数 type string project id 字符串 private key id 字符串 私钥 字符串 clien
  • 从字节数组中读取 C# 中的 C/C++ 数据结构

    从数据来自 C C 结构的 byte 数组填充 C 结构的最佳方法是什么 C 结构看起来像这样 我的 C 很生锈 typedef OldStuff CHAR Name 8 UInt32 User CHAR Location 8 UInt32
  • 随着利润增加,如何在止损和当前价格之间保持 10 点的利润差距

    我试图在解决方案中添加另一个条件 当交易盈利 10 点时 我希望止损移动 10 点 更具体地说 假设我设置了一个挂单买单 止损是低于开盘价 10 点 止盈是 50 点 如果交易盈利 10 点 则止损将向上移动 10 点 如果交易盈利 20
  • 有没有更好的写法 ||在单个 if 语句中[重复]

    这个问题在这里已经有答案了 想知道是否有更好的方法来编写下面的代码 我希望我的 if 语句忽略所有键码 但这样写似乎很混乱 如下所示 thanks if event keyCode 9 event keyCode 91 event keyC
  • 为什么 ((object)(int)1).Equals(((object)(ushort)1)) 产生 false?

    我有这样的情况object我想检查与另一个是否相等object public static bool Equals object a object b return a Equals b 当出现问题时a 1 integer and b 1
  • 为什么 Java 中的每个对象都隐式扩展 java.lang.Object 类?

    我已经用 Java 编程有一段时间了 但是当我试图解释什么是 Java 时 java lang Object是给朋友上课的 我除了简单的一句台词之外想不出更多的话 Java中的所有对象都扩展java lang Object隐含地 我不太确定
  • 以编程方式创建具有特定样式的 ImageView

    我想以编程方式执行此操作
  • IOS 5:UIScrollView 不将触摸传递给 nextResponder

    我有一个子类UIScrollView 并覆盖其所有 4 Touches 功能 在那些 Touches 函数中 self nextResponder Touches and super Touches 用于传递触摸事件 我还有一个视图控制器
  • Apache POI 设置 Excel 图表标题

    我正在从头开始创建 Excel 工作簿 其中一张工作表包含一个图表 我想设置图表标题 Apache POI 在 HSSFChart 上有一个 setChartTitle 方法 但 XSSFChart 和与格式无关的 Chart 都没有设置图
  • 如何验证 WebClient 请求?

    我正在使用网络客户端调用我网站上的页面 我正在尝试将网页的结果放入 pdf 中 因此我正在尝试获取呈现页面的字符串表示形式 问题是请求没有经过身份验证 所以我得到的只是一个登录屏幕 我已将 UseDefaultCredentials 属性设
  • 如何向 django 项目添加环境变量

    我正在尝试设置我的项目 以便它可以在本地使用环境变量 我尝试将其添加到我的激活文件和其他内容列表的末尾 我正在尝试使用这个 from base import if os environ DJANGO SERVER TYPE local tr
  • 在事务内部或外部打开和关闭游标以及事务失败时如何关闭游标

    我正在 SQL Server 2012 中编写一个存储过程 它使用游标进行读取 并在TRY CATCH堵塞 基本上 我的问题如下 我应该在里面声明我的光标吗TRY CATCH堵塞 如果是 我应该在之前还是之后声明光标BEGIN TRANSA
  • 将 Font Awesome 图标做成一个圆圈?

    我在某些项目中使用 font Awesome 但我想用 font Awesome 图标做一些事情 我可以轻松地调用这样的图标 i class fa fa lock i 是否有可能所有图标始终处于带边框的圆圈中 类似这样的 我有一张图片 Us
  • 使用一组迭代步骤迭代基于列表的列表

    我想根据存储在另一个列表中的可变数量的迭代和存储为整数的恒定数量的跳过来迭代给定的列表 假设我有三件事 l 我需要迭代 或过滤 的列表 w 一个列表 告诉我在休息之前要迭代多少项 k 一个整数 告诉我在每组迭代之间要跳过多少个元素 换句话说
  • Android 上原生的自修改代码

    我正在尝试在 Android 上制作一些自修改本机代码并在模拟器中运行它 我的示例基于 android ndk 中的 Hello JNI 示例 它看起来像这样 define NOPE LENGTH 4 typedef void FUNC v
  • 如何处理返回结构的不可变性?

    我正在编写一个具有巨大的二维 单元 数组的游戏 一个单元仅占用 3 个字节 我还有一个名为 CellMap 的类 其中包含作为私有字段的 2D 数组 并提供通过公共索引器对其进行访问 分析表明 性能问题是由过多 Cell 对象的垃圾回收引起
  • apache 和 httpd 正在运行,但我看不到我的网站 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我已经在我的服务器上安装了 apache 但是我无法通过我的服务器 IP 浏览我的网站 apache 的设置是 var www htdocs 下的单帐
  • TeamFoundation.VersionControl.HatPackage 加载失败

    在源代码管理下加载项目时 我在 VS2013 中收到此错误 包 Microsoft VisualStudio TeamFoundation VersionControl HatPackage Microsoft VisualStudio T
  • 使用 itextsharp 将 HTML 转换为 PDF

    当使用将 html 转换为 pdf 时itextsharp使用 css 为网页应用的 iam 样式在转换后的 pdf 中不起作用 这是我的CSS代码