在图像背景上覆盖文本并转换为PDF

本文关键字:转换 PDF 文本 覆盖 图像 背景 | 更新日期: 2023-09-27 17:49:20

使用。net,我想以编程方式创建一个PDF,它只是由一个背景图像和两个不同字体和定位的标签组成。我读过现有的PDF库,但不知道(如果适用的话)哪一个最容易完成这样一个简单的任务。

有谁能给我指路吗?

p。d。:我不想用已生成的图像创建PDF,该图像已将文本覆盖在背景图像上。

编辑:这是最终的工作代码:

public string Create()
{
    if (!Directory.Exists(ApplicationImagePath))
    {
        Directory.CreateDirectory(ApplicationImagePath);
    }
    // Smart card
    var doc = new Document(PageSize.GetRectangle("153 242.65"), 0, 0, 0, 0);            
    using (var stream = File.Create(filepath))
    {
       var writer = PdfWriter.GetInstance(doc, stream);
       doc.Open();
       var image = Image.GetInstance(CarnetData.Frame, ImageFormat.Png);
       image.Alignment = Element.ALIGN_CENTER;
       image.ScaleToFit(153, 242.65f);
       doc.Add(image);
       BaseFont font = BaseFont.CreateFont(GetFontPath(CarnetConfiguration.FontType), BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
       font.PostscriptFontName = CarnetConfiguration.FontType.ToString();
       float verticalPosition = writer.GetVerticalPosition(false);
       var pName = new Paragraph(CarnetData.Name, new Font(font, FontData.EmployeeFont.SizeInPoints))
                        {
                            SpacingBefore = verticalPosition - 51f,
                            MultipliedLeading = 1.1f,
                            Alignment = Element.ALIGN_CENTER
                        };
        doc.Add(pName);
        var pDepartment = new Paragraph(CarnetData.Department, new Font(font, FontData.DepartmentFont.SizeInPoints))
        {
            SpacingBefore = 1.5f,
            MultipliedLeading = 1.2f,
            Alignment = Element.ALIGN_CENTER
        };
        doc.Add(pDepartment);
        writer.ViewerPreferences = PdfWriter.PageModeUseNone + PdfWriter.CenterWindow + PdfWriter.PageLayoutSinglePage;
        doc.Close();
    }
    return filepath;
}

谢谢你的帮助。:)

在图像背景上覆盖文本并转换为PDF

iTextSharp是一个非常好用的库,非常简单和直观:

var doc = new Document();
using (var stream = File.Create("output.pdf"))
{
    var writer = PdfWriter.GetInstance(doc, stream);
    doc.Open();
    doc.Add(Image.GetInstance(@"c:'foo'test.png"));
    var cb = writer.DirectContent;
    cb.BeginText();
    cb.SetTextMatrix(100, 220);
    var font = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, false);
    cb.SetFontAndSize(font, 12);
    cb.ShowText("Hello World");
    cb.EndText();
    cb.BeginText();
    cb.SetTextMatrix(100, 250);
    cb.ShowText("Some other text");
    cb.EndText();
    doc.Close();
}

使用iTextSharp。免费的。

@binaryhowl -你可以试试Syncfusion PDF。这是一个很好的组件,有很好的支持

http://asp.syncfusion.com/sfaspnetsamplebrowser/9.1.0.20/Web/Pdf.Web/samples/4.0/