【问题标题】:ITextSharp pdf resize and data alignmentITextSharp pdf 调整大小和数据对齐
【发布时间】:2017-12-29 06:55:08
【问题描述】:

我正在使用 ITextSharp 将 HTML 转换为 PDF,但我希望生成 5 厘米宽的 PDF。我使用了以下代码

var pgSize = new iTextSharp.text.Rectangle(2.05f, 2.05f);
Document doc = new Document(pgSize);

但它只是调整 pdf 的大小,我的数据在 pdf 中消失或隐藏。 如何在 PDF 的中心对齐数据或调整 pdf 的大小?这是我的代码 公共无效 ConvertHTMLToPDF(字符串 HTMLCode) {

        try
        {
            System.IO.StringWriter stringWrite = new StringWriter();
            System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);

            StringReader reader = new StringReader(HTMLCode);

            var pgSize = new iTextSharp.text.Rectangle(2.05f, 2.05f);                
            Document doc = new Document(pgSize);
            HTMLWorker parser = new HTMLWorker(doc);

            PdfWriter.GetInstance(doc, new FileStream(Server.MapPath("~") + "/App_Data/HTMLToPDF.pdf",
            FileMode.Create));
            doc.Open();
            foreach (IElement element in HTMLWorker.ParseToList(
            new StringReader(HTMLCode), null))
            {

                doc.Add(element);
            }

            doc.Close();
            Response.End();
        }
        catch (Exception ex)
        {

        }
    }

【问题讨论】:

标签: c# asp.net-mvc itext


【解决方案1】:

您正在创建一个尺寸为 0.0723 厘米 x 0.0723 厘米的 PDF。这太小了,无法添加任何内容。如果您想创建一个 5 cm x 5 cm 的 PDF,您需要像这样创建文档:

var pgSize = new iTextSharp.text.Rectangle(141.732f, 141.732f);
Document doc = new Document(pgSize);

至于对齐,应该在 HTML 中定义,但是您使用的是旧版本的 iText,并且您使用的是已弃用的HTMLWorker

您应该升级到 iText 7 和 pdfHTML,如下所述:Converting HTML to PDF using iText

另外:页面的大小可以在 CSS 的@page-rule 中定义。见Huge white space after header in PDF using Flying Saucer

当新版本允许您这样做时,您为什么要使用旧的 iText 版本让自己变得困难:

@page {
  size: 5cm 5cm;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 2012-02-01
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多