问题标签 [dinktopdf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
186 浏览

razor - 在 Razor View Engine .net core 中渲染 Google 图表

直到最近,我才用谷歌图表运行一些 pdf 报告,突然谷歌图表不会出现。报告的其余部分工作正常。我正在使用 razor 视图引擎来运行一个模板文件,该文件具有 javascript 来加载谷歌图表。

模板文件有一个initCharts()<body onload=initCharts()>. 该函数加载谷歌图表如下:

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>

然后这个模板文件由 razor 视图引擎加载,如下所示:

razorview 引擎的输出(来自RenderToStringAsync函数)被提供给 DinkToPdf 库以转换为 pdf。

我遇到的问题是,当google.charts.load行执行时,它会失败或者在它可以加载 JavaScript 之前,razorview 返回 html。javascript 不在 razorview 中执行,因此图表不会被渲染。但是,如果我将输出复制到 HTML 文件并使用浏览器打开它,图表将按预期工作。javascript 似乎没有在 razorview 引擎内执行google.charts.load

无论如何我可以看到在razorview引擎中执行javascript的结果吗?如果有错误,我可以看到错误吗?我可以加载像谷歌这样的第三方脚本并在 razorview 引擎中执行吗?

我花了很多时间都无济于事。您的帮助将不胜感激!

0 投票
1 回答
2907 浏览

c# - DinkToPdf 包括 HtmlContent 中的图像

我有使用.Net Core 3 Web APIDinkToPdf库创建的 pdf 发票。

现在我需要在 pdf 中插入一个图像作为签名。我创建了我的项目的资源文件夹,并将图像Copy to Output Directory设置为allways. 但我不知道如何在包含所有 pdf 数据的字符串值中使用它。

启动.cs:

编辑:我发现绝对路径有效

但是,这不是一个最佳解决方案,因为本地环境的绝对路径与生产环境不同。

还有其他想法吗?谢谢

0 投票
1 回答
161 浏览

javascript - 将 vue-qrcode 编译成 razorlight 和 dinktopdf

我正在构建一个 POC,在其中我使用 razorlight 编译 index.cshtml,然后使用 dinktopdf 生成一个 pdf,到目前为止,我的那部分工作正常。

接下来,使用 vuejs 和 vue-qrcode,我能够将 qrcode 添加到 qr-code 标签转换为画布并显示 qrcode 的页面。

现在,我遇到的问题是,在生成 pdf 的过程中,vue-qrcode 没有被编译成常规的 html(它应该是一个画布标签),并且没有任何东西被添加到 pdf 中。

解决方案在以下存储库中

page = await engine.CompileRenderAsync(path, model);显示 html 的完整字符串,在那里您可以看到 qr-code 标记仍然保持原样。

0 投票
1 回答
1330 浏览

c# - 将自定义代码(视图)添加到 DinkToPdf 标头

我正在构建html视图stringbuilderDinkToPDF用于将这个 HTML 转换为 pdf。我已经能够使用以下方法添加页眉和页脚(通过创建静态HTML页面:

这很好用,但我需要添加一个自定义html视图作为标题的一部分,其中包含详细信息,例如姓名、姓氏、地址等。

有没有办法将自定义构建的页面(意味着 Html 标记等带有来自数据库的信息)添加到标题?

我希望我的问题是有道理的。

谢谢你的帮助。

0 投票
2 回答
226 浏览

c# - 在 C# html 字符串中引用本地磁盘映像

我正在使用 DinkToPdf 生成一个 pdf 文档,并且需要使用 img 标签嵌入一个图像(存在于发布文件夹中)。

我关注了这个 SO Post: 添加 <img> HTML tag to C# String

但它仅适用于 Internet URL,不适用于本地磁盘映像

我尝试的是 var HTML = @"<img src=""/myimage.png""/>"

但是一旦生成 PDF,就不会显示任何图像。但如果路径是 Internet URL,则可以正常工作

我该如何解决这个问题?

[编辑澄清问题]图像驻留在服务器中,这需要嵌入到文档的第一页

0 投票
0 回答
233 浏览

c# - DinkToPdf 不在 Azure 环境中呈现图标

我正在使用DinkToPdf 从 HTML 文件生成 PDF 文件。当我在本地启动代码时,它按预期工作,但在 Azure 环境中,PDF 文件中的图标丢失并且字体看起来很粗糙:

font-face这些图标通过css 中的规则嵌入到源 HTML 文件中:

这是HTML:

当我用 PNG 图像替换样式时@font-face,图标以 PDF 格式显示,因此可以解决问题:

但可能有更优雅的解决方案?这与wkhtmltopdf库在 Azure 中的工作方式不同有关吗?

0 投票
1 回答
197 浏览

c# - DinkToPdf 显示在每一页上

我想在使用 DinkToPdf 获得的 PDF 的每一页上显示一个标题。我知道我可以使用 HeaderSettings 类,但我无法编辑该文本(我想添加背景颜色)。有什么办法可以用html实现吗?

我也尝试设置 HeaderSettings 的 HtmUrl,但没有奏效。

这是我想要在每一页上的标题:

0 投票
0 回答
388 浏览

c# - 在 Windows Container Docker 上运行时无法加载 libwkhtmltox DLL

我正在尝试在 Docker 的 Windows 容器中运行我的项目,但是在为 DinkToPDF 加载必要的 dll 时,我一直遇到这种错误:

System.DllNotFoundException:'无法加载 DLL'C:\app\libwkhtmltox' 或其依赖项之一:找不到指定的模块。(0x8007007E)'

已经在这个线程上尝试了建议的解决方案,但仍然没有运气:

https://github.com/rdvojmoc/DinkToPdf/issues/116

https://github.com/rdvojmoc/DinkToPdf/issues/5

下面是我当前的 Dockerfile

0 投票
0 回答
44 浏览

c# - Syncfusion EJ2 图表是否与 .NET Core 3.1 中的 DinkToPdf 兼容?

该应用程序在 .NET Core 3.1 中,前端是 Angular8。来自 Syncfusion 的 EJ2 图表用于前端。该应用程序具有将某些数据转换为 pdf 的功能。生成 cshtml 页面并使用 DinkToPdf 将其转换为 pdf。需要在后端代码中添加 EJ2 图表。但是,无法在 cshtml 文件中配置 EJ2 图表。未获得任何错误,但生成的 pdf 没有来自 EJ2 图表的任何数据。是否可以使用 DinkToPdf 将 EJ2 图表转换为 pdf?

0 投票
1 回答
290 浏览

c# - Azure C# Function App,使用 HTML 到 PDF 库 (DinkToPDF)。只运行一次。错误:Qt:无法初始化 OLE(错误 80010106)

我遵循了本教程:https ://www.freecodecamp.org/news/convert-html-to-pdf-with-azure-functions-and-wkhtmltopdf/

解决方案是 Azure C# Function App,它将 HTML 转换为 PDF 文档并将该 PDF 保存在 blob 存储中。这个特定的功能应用程序接受以下内容,我通过 Postman 在本地运行时通过请求正文:

本教程使用这个库:https ://github.com/rdvojmoc/DinkToPdf

发生的事情有点难以调试。我在本地运行函数应用程序,它运行良好,并且 PDF 保存在我的 blob 存储中,没有任何问题,但是当它运行时,我确实在控制台中看到了下面的错误。

Qt: Could not initialize OLE (error 80010106)

然后当我再次运行它时(甚至删除 pdf,以确保那里没有冲突),应用程序只是挂起,直到它返回 503 或我取消请求。

跟踪代码,这是它发生故障的这一行(来自下面的代码):

var PDFByteArray = BuildPdf(Request.HtmlContent, new MarginSettings(2, 2, 2, 2));

直接在门户中发布和运行(测试 + 代码并在逻辑应用流中运行)时,我观察到相同的行为。

我拥有的应用服务计划是基本 (B1: 1)。任何解决此问题的帮助将不胜感激!

完整代码如下:

.csproj