使用 itextsharp 将图像 html 旁边的文本放置到 pdf

Posted

技术标签:

【中文标题】使用 itextsharp 将图像 html 旁边的文本放置到 pdf【英文标题】:place text next to image html to pdf using itextsharp 【发布时间】:2012-02-26 03:25:24 【问题描述】:

我正在使用 itextsharp 将 html 转换为 pdf。我必须将文本放在图像旁边而不是图像下方。在 html 中,我可以在图像旁边放置文本,但在 pdf 中,文本行在图像之后开始

请帮忙。

【问题讨论】:

iTextSharp 中的 HTML 解析支持非常有限,具体取决于您的操作方式。如果您提供代码示例,我们可能会为您提供更多帮助。否则,简单的解决方案就是使用 HTML 表格。 【参考方案1】:

既然提到了HTML,你就明白blockinline显示了吧?以此类推,iTextSharp 的默认Image 显示为block。要内联 Image 对象,您需要:

    将图像添加到Chunk 对象 在Phrase 对象中添加文本 然后将这些对象添加到Paragraph 对象中

类似这样的:

Image image = Image.GetInstance(imagePath);  
Paragraph p = new Paragraph();
p.Add(new Phrase("Text next to the image "));
p.Add(new Chunk(image, 0, 0));
p.Add(new Phrase(" and text after the image.")); 
document.Add(p);

将上面的imagePath 替换为图片的物理路径

【讨论】:

但我使用直接从html图像标签转换pdf 我正在使用 HTmlWorker.ParseToList 方法来解析 html 标记。那么如何在逻辑后面的代码中做到这一点。 使用XmlWorker。那么你就没有关于图像的块/内联问题;默认情况下,图像显示为内联。但是您必须设置ImageProvider 以说明:[1] 相对图像 URL,[2] iText[Sharp] 处理图像大小的方式。请参阅 this 评论开头的链接中提供的文档。 sn-p 的第 4 行应该是:p.add(new Chunk(image,0,0,true)); 需要第四个布尔参数,否则重载解析将无法尝试将图像对象投射到 IDrawInterface【参考方案2】:

您可以尝试以下代码示例。

Image jpg = Image.GetInstance(imagepath + "/Sunset.jpg");
Paragraph paragraph = new Paragraph(@"Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Suspendisse blandit blandit turpis. Nam in lectus ut dolor consectetuer bibendum. Morbi neque ipsum, laoreet id; dignissim et, viverra id, mauris. Nulla mauris elit, consectetuer sit amet, accumsan eget, congue ac, libero. Vivamus suscipit. Nunc dignissim consectetuer lectus. Fusce elit nisi; commodo non, facilisis quis, hendrerit eu, dolor? Suspendisse eleifend nisi ut magna. Phasellus id lectus! Vivamus laoreet enim et dolor. Integer arcu mauris, ultricies vel, porta quis, venenatis at, libero. Donec nibh est, adipiscing et, ullamcorper vitae, placerat at, diam. Integer ac turpis vel ligula rutrum auctor! Morbi egestas erat sit amet diam. Ut ut ipsum? Aliquam non sem. Nulla risus eros, mollis quis, blandit ut; luctus eget, urna. Vestibulum vestibulum dapibus erat. Proin egestas leo a metus?");
paragraph.Alignment = Element.ALIGN_JUSTIFIED;
jpg.ScaleToFit(250f, 250f);
jpg.Alignment = Image.TEXTWRAP | Image.ALIGN_RIGHT;
jpg.IndentationLeft = 9f;
jpg.SpacingAfter = 9f;
jpg.BorderWidthTop = 36f;
jpg.BorderColorTop = Color.WHITE;
doc.Add(jpg);
doc.Add(paragraph);

来源:http://www.mikesdotnetting.com/Article/87/iTextSharp-Working-with-images

通过 Mikesdotnetting

【讨论】:

以上是关于使用 itextsharp 将图像 html 旁边的文本放置到 pdf的主要内容,如果未能解决你的问题,请参考以下文章

使用 PDF itextSharp 可以在创建 pdf 文档时将图像放在文本之上

使用 ITextSharp 将 HTML 文件转换为 PDF 文件

使用 itextsharp 将 HTML 转换为 PDF

iTextSharp 填充 Pdf 表单图像字段

如何使用骨架网格垂直对齐图像旁边的文本

使用 iTextSharp 将 HTML 样式(点下划线)转换为 PDF