c# - ItextSharp 在页面中心添加图像,并在其下方添加文本

标签 c# image pdf text itext

我正在尝试在带有文本的页面 PDF 文件的中心(中间)添加图片,但我做不对。我对图片使用 SetAbsolutePosition,但图片下方没有文字。

我的 Pdf 文件中需要下一个页面格式: enter image description here

我使用下一个代码:

                PdfWriter writer = PdfWriter.GetInstance(doc, fs);

                ITextEvents ev = new ITextEvents();
                writer.PageEvent = ev;
                doc.Open();

                var paragraph = new Paragraph();
                var paragraph1 = new Paragraph();
                var chunk = new Chunk("Text under picture", f14nb);
                var chunk1 = new Chunk("Code of picture", f14);

                img = ScaleImg(Image.GetInstance(imgNane_2));
                img.SetAbsolutePosition((PageSize.A4.Width - img.ScaledWidth) / 2,
                    ((PageSize.A4.Height - img.ScaledHeight) / 2));
                
                paragraph.Add(img);
                paragraph1.Add(chunk);
                paragraph1.Add(chunk1);
                doc.Add(paragraph);
                doc.Add(paragraph1);
                
                doc.Close();

private Image ScaleImg(Image img)
{
    if (img.Height > img.Width)
    {
        //Maximum height is 800 pixels.
        float percentage = 0.0f;
        percentage = 640 / img.Height;
        img.ScalePercent(percentage * 100);
    }
    else
    {
        //Maximum width is 600 pixels.
        float percentage = 0.0f;
        percentage = 500 / img.Width;
        img.ScalePercent(percentage * 100);
    }
    return img;
}

我想,我应该用另一种方法来解决我的问题,但我不知道是哪种。

谢谢。

最佳答案

我知道怎么做。

这是用于带有文字的图像:

        public Image getWatermarkedImage(Document Doc, Image img, String watermarkText)
    {
        float width = img.ScaledWidth;
        float height = img.ScaledHeight;

        PdfTemplate template = cb.CreateTemplate(width, height);

        template.AddImage(img, width, 0, 0, height, 0, 0);
        ColumnText.ShowTextAligned(template, Element.ALIGN_RIGHT,
            new Phrase(watermarkText, fontBold_14), width - 10, 10, 0);

        return Image.GetInstance(template);
    }

这是为了在图像下添加文本(主要代码):

                var codeOfPicture = "*Code of picture* - *Код картинки*";

                var chunk = new Chunk("Text under picture", font_14);

                img = ScaleImg(Image.GetInstance(imgNane_1));//imgNane_2));

                var tmpImg = getWatermarkedImage(doc, img, codeOfPicture);
                var textY = ((PageSize.A4.Height - img.ScaledHeight) / 2) - 15;
                var textX = PageSize.A4.Width / 2;

                tmpImg.SetAbsolutePosition((PageSize.A4.Width - img.ScaledWidth) / 2,
                    ((PageSize.A4.Height - img.ScaledHeight) / 2));

                doc.Add(tmpImg);

                ColumnText.ShowTextAligned(cb, Element.ALIGN_CENTER, new Phrase(chunk), textX, textY, 0);

关于c# - ItextSharp 在页面中心添加图像,并在其下方添加文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41975666/

相关文章:

pdf - 如何将PDF中的所有颜色更改为它们各自的免费颜色;如何使PDF阴性

c# - 在满足条件之前查找值

C# <-> Java 套接字通信

css - 将CSS类添加到wordpress中的媒体图像中

python - 浏览器和 wget 以不同方式加载 JPEG?

java - 用 Java 编写 PDF/E

python - ReportLab:如何对齐文本对象?

c# - log4net - 仅在一天中的某些时间之间安排日志记录

c# - 奥尔良-自定义TCP套接字连接

java - 使用多部分形式改造上传图像但不获取文件路径