gpt4 book ai didi

c# - 如何将带有图像的段落添加到 iTextSharp 表格中的单元格?

转载 作者:太空狗 更新时间:2023-10-29 18:35:26 25 4
gpt4 key购买 nike

我正在创建一个解析器,可以将 Word 文档转换为 PDF,并在此过程中进行一些专门的处理。我选择使它成为一个递归解析器以匹配 OpenXml 的结构。

我在处理图像时遇到了一些问题。鉴于 OpenXml 的结构,图像始终是段落内的绘图元素。如果该段落直接在文档中,则效果很好,基本上就像这样(此示例的递归未纠缠):

using (var document = new Document(PageSize.A4))
{
PdfWriter.GetInstance(document, new FileStream(path, FileMode.Create));
document.Open();

var paragraph = new Paragraph();

var image = Image.GetInstance(@"C:\image1.jpg");

paragraph.Add(image);
document.Add(paragraph);

document.Close();
}

此代码将图像正确地插入到文档中。当图像位于表格内时会出现问题,这在我们正在处理的文档中很常见。那里的 OpenXml 结构将像这样结束:

DocumentBody => Table => Cell => Paragraph => Drawing

所以在 iTextSharp 术语中,映射到:

文档=>表格=>单元格=>段落=>图片

将带有图像的段落直接添加到单元格会生成一个空的、高度为零的表格。如果我在段落中添加一个 block ,图像会出现但会大幅调整大小(变小)——我无法弄清楚调整大小的依据是什么:

using (var document = new Document(PageSize.A4))
{
PdfWriter.GetInstance(document, new FileStream(path, FileMode.Create));
document.Open();

var paragraph = new Paragraph();

var image = Image.GetInstance(@"C:\image1.jpg");

paragraph.Add(new Chunk(image, 0, 0));

var table = new PdfPTable(1);

var cell = new PdfPCell { PaddingLeft = 5, PaddingTop = 5, PaddingBottom = 5, PaddingRight = 5 };

cell.HorizontalAlignment = Element.ALIGN_CENTER;
cell.AddElement(paragraph);

table.AddCell(cell);

document.Add(table);

document.Close();
}

如果有人可以帮助我将这张图片放入单元格而不调整大小,那就太完美了。

更新*

我已确定图像本身未在本地调整大小 - 如果我从生成的 pdf 中提取图像并保存它,它会保留原始图像的尺寸。

最佳答案

尝试将 Image 直接添加到单元格,而不是先将其添加到 Paragraph:

var cell = new PdfPCell { PaddingLeft = 5, PaddingTop = 5, PaddingBottom = 5, PaddingRight = 5 };
cell.HorizontalAlignment = Element.ALIGN_CENTER;
cell.AddElement(paragraph);
cell.AddElement(image);

阅读您的示例,您也可以省略 cell.AddElement(paragraph); 行,因为您的段落似乎是空的。

请注意,使用 addElement(image) 将缩放图像以适应表格列宽度的 100%(您通常不希望图像与其他列重叠)。您可以对图像使用 setWidthPercentage() 方法来更改此百分比。

关于c# - 如何将带有图像的段落添加到 iTextSharp 表格中的单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25979902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com