当前位置: 首页 > 面试题库 >

itextsharp-CSS未得到应用-C#.NET

濮阳弘扬
2023-03-14
问题内容

iTextSharp用于将HTML页面转换为PDF。我正在使用这里提供的帮助程序类,并且还尝试了使用StyleSheet.LoadTagStyle()CSS。但是似乎没有任何作用。有什么见解吗?

编辑

我可以添加这样的样式-

.mystyle
{
   color: red;
   width: 400px;
}

使用以下代码-

StyleSheet css = new StyleSheet();
css.LoadStyle("mystyle", "color", "red");
css.LoadStyle("mystyle", "width", "400px");

但是,当我拥有复杂的样式时会发生什么?

div .myclass
{
    /*some styles*/
}

td a.hover
{
    /*some styles*/
}

td .myclass2
{
    /*some styles*/
}    
.myclass .myinnerclass
{
    /*some styles*/
}

如何使用iTextSharp添加它?


问题答案:

使用StyleSheet.LoadTagStyle()使您处在正确的轨道上。

基本上,这是一个四步过程:

  1. 以字符串形式获取HTML
  2. 实例化一个StyleSheet对象,然后为所需的每种样式调用 StyleSheet.LoadTagStyle()
  3. 调用HTMLWorker.ParseToList()
  4. 将上述调用返回的IElement添加到Document对象。

这是一个简单的HTTP处理程序:

<%@ WebHandler Language='C#' Class='styles' %>
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Web;
using iTextSharp.text.html;
using iTextSharp.text.html.simpleparser;
using iTextSharp.text;  
using iTextSharp.text.pdf;

public class styles : IHttpHandler {
  public void ProcessRequest (HttpContext context) {
    HttpResponse Response = context.Response;
    Response.ContentType = "application/pdf";
    string Html = @"
<h1>h1</h1>
<p>A paragraph</p>    
<ul> 
<li>one</li>   
<li>two</li>   
<li>three</li>   
</ul>";
    StyleSheet styles = new StyleSheet();
    styles.LoadTagStyle(HtmlTags.H1, HtmlTags.FONTSIZE, "16");
    styles.LoadTagStyle(HtmlTags.P, HtmlTags.FONTSIZE, "10");
    styles.LoadTagStyle(HtmlTags.P, HtmlTags.COLOR, "#ff0000");
    styles.LoadTagStyle(HtmlTags.UL, HtmlTags.INDENT, "10");
    styles.LoadTagStyle(HtmlTags.LI, HtmlTags.LEADING, "16");
    using (Document document = new Document()) {
      PdfWriter.GetInstance(document, Response.OutputStream);
      document.Open();
      List<IElement> objects = HTMLWorker.ParseToList(
        new StringReader(Html), styles
      );
      foreach (IElement element in objects) {
        document.Add(element);
      }
    }
 }
  public bool IsReusable {
      get { return false; }
  }
}

您需要版本5.0.6才能运行上面的代码。对解析HTML的支持已大大改善。



 类似资料:
  • 问题内容: 我正在我的网站上工作,每当我在CSS文件中添加一些新行时,它只是不想使用我所做的行。 但是,他们应该没事。 举个例子。 CSS文件只在某一部分起作用,但是从某处开始只是停止使用我的文件。但是,它链接在< head >中。 我的HTML代码如下(请注意,这只是代码的一部分): 有人知道解决方案吗? 问题答案: 我忘了在CSS文件中关闭。这就是为什么所有代码​​都没有显示在页面上的原因。

  • 我读了很多关于SO的帖子,并搜索了很多解决方案,所有这些似乎都回避了我的特定问题。 是否有一种方法可以使用正确的页面大小将现有的PDF复制到新文档中? 谢谢。 更新 接受了布鲁诺的建议,我仔细检查了剪裁框和媒体框。我正在使用的PDF两者都有。裁剪框数组为 但是这样做会使“文本”向右和顶部移动太多,留下不均匀的边距。 我发现通过改变左下角的坐标,裁剪框,我可以移动文本。事实上,将裁剪框设置为40、4

  • 我正在使用一个基于Symfony的react应用程序,并试图使用react-datepicker模块包含一个datepicker。 我可以创建datepicker对象,但它的样式似乎不正确——当我单击选择日期时,页面顶部只有一个垂直的数字列表(我看到很多人在网上经历过这种情况,通常是因为他们没有导入datepicker css)。 我正在导入react-datepicker.css文件,如果我在浏

  • 我想使用iTextSharp和rectangle(0,100,600,155)裁剪PDF文件。一切都很好,当你打开创建的*.pdf文件时,你只能看到裁剪的内容,但是!如果你解析那个pdf,仍然有信息和文本来自不可见的文档部分,我不能接受。如何完全删除该数据? 不幸的是,如果我想在不支付许可证的情况下将我的应用程序商业化,我就不能使用这些代码,所以我不得不考虑不同的库...

  • 我用的是iTextSharp。dll将我的页面打印为pdf。我唯一的问题是pdf显示了我在页面上的CSS和JavaScript。有没有一种方法可以将iTextSharp设置为不显示CSS/JS? 是的,我把我的CSS/JS直接输入到. aspx页面——因为这是一个小项目。当然,对于一个大项目,我会把它分开。 编辑 这是我当前写入页面的语法

  • iTextSharp 是用来生成 PDF 文档的 C# 组件,相当于 Java 版的 iText。