c# - 来自资源文件的 iTextSharp pdf 图像

标签 c# pdf itext

我在带有 c# 的 Windows 窗体中使用 iTextSharp 创建了一个 pdf 文件,我想从资源文件夹(图像名称:LOGO.png)中向该文件添加图像。我有一个 ExportToPdf.cs 类,这个类在 App_Class 文件夹中。我正在使用下面的代码。任何人都可以帮忙吗。

internal static void exportEchoReport(Patient p)
{
    using (var ms = new MemoryStream())
    {
        using (var doc1 = new iTextSharp.text.Document(PageSize.A4, 50, 50, 15, 15))
        {
            try
            {
                PdfWriter writer = PdfWriter.GetInstance(doc1, new FileStream("echo.pdf", FileMode.Create));
                doc1.Open();

                string imagePath = // I want to use this image LOGO.png (Resources.LOGO)
                iTextSharp.text.Image logoImg = iTextSharp.text.Image.GetInstance(imagePath);

                PdfPTable headerTable = createTable(logoImg, p);
                doc1.Add(headerTable);
            }
            catch (Exception ex)
            {
            }
            finally
            {
                doc1.Close();
            }
        }
        System.Diagnostics.Process.Start("echo.pdf");
    }
}

最佳答案

Visual Studio 使恕我直言,将图像文件存储为 System.Drawing.Bitmap(在 Resources.LOGO 上方的代码中)而不是 byte 是有问题的决定[] 就像处理其他二进制文件一样。因此,您需要使用一种重载的 Image.GetInstance() 方法。这是一个简单的例子:

using (var stream = new MemoryStream())
{
    using (var document = new Document())
    {
        PdfWriter.GetInstance(document, stream);
        document.Open();
        var image = Image.GetInstance(
            Resources.LOGO, System.Drawing.Imaging.ImageFormat.Png
        );
        document.Add(image);
    }
    File.WriteAllBytes(OUTPUT_FILE, stream.ToArray());
}

关于c# - 来自资源文件的 iTextSharp pdf 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44734025/

相关文章:

c# - 无法以编程方式打开 PDF

c# - 模块窗口中缺少项目 dll

pdf - 将 PDF 转换为 PDF/A-1

objective-c - Objective C 在 UIWebView 中加载 PDF 文件

java - 将文本(数字)放置在指定位置

c# - iTextSharp .NET PDF - 无法更改 PDF Producer

java - android: 在 textview 中显示 .txt 文件时出错

c# - 有没有办法测试一个潜在的僵尸交易,看看它是否可以回滚?

c# - 这个例子线程安全吗?

c# - C# 中的 REST Web 服务