IText7-pdfHTML-如何在从HTML到PDF文件的生成中使用SetBold()方法增加笔画宽度

问题描述 投票:-1回答:1

我目前正在将[[ASP.NET MVC(v 4.6.1)和itext.html2pdfv 2.1.5.0)中的HTML文件转换为pdf文件。

[this tutorial提到:

在iText 5中,如果要使用其他大小或颜色的字体,则必须创建另一个Font对象。我们在iText 7中对此进行了更改:您只需要一个PdfFont对象。

setBold()

字体将更改文本的渲染模式并增加笔触宽度。这意味着我们仅在PDF中定义了单个字体

但是,此示例是非常基本的(仅一个段落),而在我的情况下必须将其从HTML转换为PDF文件。

我尝试添加2种字体(普通字体和粗体字体),对我来说效果很好。但是,

这种方式使我的pdf文件增加了一倍。

所以,

我该如何正确使用SetBold()方法?


我的以下代码片段:

1。 GeneratePdf()方法

private static byte[] GeneratePdf(string htmlString, string rootPath) { using (var stream = new MemoryStream()) { using (var pdfWriter = new PdfWriter(stream)) { using (var pdfDocument = new PdfDocument(pdfWriter)) { pdfDocument.SetDefaultPageSize(PageSize.A4); pdfDocument.SetDefaultPageSize(PageSize.A4.Rotate()); var document = HtmlConverter.ConvertToDocument(htmlString, pdfDocument, GetConverterProperties(rootPath)); document.Close(); return stream.ToArray(); } } } }

2。 GetConverterProperties()方法

private static ConverterProperties GetConverterProperties(string rootPath) { var fontPath = HttpContext.Current.Request.PhysicalApplicationPath + "Areas\\Font\\msyh.ttf"; var defaultFontProvider = new DefaultFontProvider(false, false, false); var fontProgram = FontProgramFactory.CreateFont(fontPath); defaultFontProvider.AddFont(fontProgram); return new ConverterProperties().SetBaseUri(rootPath) .SetFontProvider(defaultFontProvider); }
有人有什么想法/解决方案吗?

我非常感谢。

c# asp.net-mvc itext itext7
1个回答
1
投票
无法在您的问题上发表评论,所以我只想在这里问:您打算什么时候使用定制字体?因为在iText 7中,HtmlConverter可以自行获得字体。您唯一需要做的就是创建一个新的ConverterProperties对象,并将基本文件夹URI传递给它。这样做时,转换器将具有必要的上下文,以单独包括字体。我将在下面提供一个简短示例说明需要做的事情:

HTML:

<html><head> <style type="text/css"> @font-face { font-family: MPLUS; src: url('MPLUS1p-Regular.ttf'); } </style> </head> <body> <div style="position:relative;min-height: 297mm;max-height: 297mm;width: 210mm"> <div style="width:100mm;background-color:red"> <p style="text-align:left;font-size:3.52mm;font-family:'MPLUS', sans-serif;line-height:5.56mm">...content...</p> </body> </html>

。NET:

public void manipulatepdf() { ConverterProperties prop = new ConverterProperties(); prop.SetBaseUri("src/main/resources/"); HtmlConverter.ConvertToPdf(HTML,new FileStream(DEST,FileMode.Create),prop); }

当将字体如上所述添加到HTML中,并且使用ConverterProperties设置我们的基本目录时,我们的HtmlConverter将具有必要的上下文来正确地自行解析字体。 

亲切的问候,KaeseKüchen

© www.soinside.com 2019 - 2024. All rights reserved.