使用包含在 HTML 中的外部 CSS 类的 PdfSharp 从 HTML 片段创建 PDF

Posted

技术标签:

【中文标题】使用包含在 HTML 中的外部 CSS 类的 PdfSharp 从 HTML 片段创建 PDF【英文标题】:Create PDF from HTML snippet using PdfSharp having external CSS classes included in the HTML 【发布时间】:2015-09-24 13:15:11 【问题描述】:

我想知道有什么办法可以

使用 PdfSharp having external CSShtml sn-p 创建 PDF classes included in the HTML.

我找到了一种使用 HTML 内容生成 pdf 文件的方法,但我的 css 类没有应用于 PDF。

这是我对简单 html 字符串的处理方式:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using PdfSharp.Drawing;
using PdfSharp.Pdf;
using System.Drawing;
using TheArtOfDev.HtmlRenderer.PdfSharp;
using PdfSharp;

public partial class _Default : System.Web.UI.Page 

    protected void Page_Load(object sender, EventArgs e)
    
        PdfDocument pdf = PdfGenerator.GeneratePdf("<h1>tests</h1><p>test para</p>", PageSize.A4,20,null,null,null);
        pdf.Save(@"C\testPDF.pdf");

    

这是它的生成方式:

但我想要的是包含这样的 HTML 字符串:

<h1>tests</h1><p class='para1'>test para</p>

有什么方法可以实现吗?使用不同的库不是问题,唯一的问题是使用的库应该是开源的。

【问题讨论】:

【参考方案1】:

您可以将您的样式包含在 head 部分中,它将正确呈现:

    var testHtml = @"<head>
        <style>
            .test 
                background-color: linen;
                color: maroon;
            
        </style>
    </head>
    <body class=""test"">
        <p>
            <h1>Hello World</h1>
            This is html rendered text with css and image.
        </p>
        <p>
            <img src=""http://fc62.deviantart.com/fs11/i/2006/236/d/e/The_Planet_Express_Ship_by_gasclown.jpg"" 100"" 100"">
        </p>
    </body>";

更多 - 您只需将 url 添加到样式表即可!

【讨论】:

我有这个问题。当我从头部删除 css 时,正在打印 pdf,但是使用样式,pdf 看起来像一个白页:/ @DiSaSteR 如果我理解正确,您想显示带有样式的 pdf,但打印时不带样式?在这种情况下,在删除 css 后,您需要重建 pdf 然后打印。也许你可以分享一个有问题的简单例子,然后我会帮助你。

以上是关于使用包含在 HTML 中的外部 CSS 类的 PdfSharp 从 HTML 片段创建 PDF的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JS 将样式修改为 HTML 元素(使用 CSS 外部样式)?

如何在生成 PDF 时添加外部 CSS?

如何在里面附加一个带有 CSS 类的 textContent?

外部CSS在Python项目中不能用于HTML

4 htmlCSS

如何仅为我的自定义 vue 组件包含外部 css 文件?