使用 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,你就明白block和inline显示了吧?以此类推,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 文档时将图像放在文本之上