应该在保存的文件模板中放置文件的位置?

时间:2014-08-13 18:50:51

标签: c# winforms visual-studio save itextsharp

我正在发布一个Windows表单应用程序,它允许用户保存他们输入的信息的PDF。 PDF包含2张图片(logo.png& name.png)。我目前正将这些图片存储在我的bin> Debug文件夹中。

我的问题是,如果我发布该程序,PDF是否仍然可以访问这些图像,还是需要将它们放在另一个文件夹中才能正确生成PDF?

private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
{
    SaveFileDialog dlg = new SaveFileDialog();

    dlg.Filter = "New (*.pdf)|*.pdf|All Files (*.*|*.*";
    dlg.AddExtension = true;
    dlg.DefaultExt = ".pdf";
    dlg.FilterIndex = 1;

    if (dlg.ShowDialog() == DialogResult.OK)
    {
        Document doc = new Document(iTextSharp.text.PageSize.LETTER, 10, 10, 42, 35);
        PdfWriter wri = PdfWriter.GetInstance(doc, new FileStream(dlg.FileName.ToString(), FileMode.Create));
        doc.Open();//Open Document to write

        iTextSharp.text.Image logo = iTextSharp.text.Image.GetInstance("logo.png");
        logo.ScalePercent(45f);
        logo.SetAbsolutePosition(doc.PageSize.Width - 105f - 72f, doc.PageSize.Height - -15f - 216.6f);
        doc.Add(logo);
        iTextSharp.text.Image name = iTextSharp.text.Image.GetInstance("name.png");
        name.ScalePercent(95f);
        name.SetAbsolutePosition(doc.PageSize.Width - 500f - 72f, doc.PageSize.Height - -55f - 216.6f);
        doc.Add(name);

        var titleFont = FontFactory.GetFont("Times New Roman", 24);
        var headerFont = FontFactory.GetFont("Times New Roman", 20);
        var bodyFont = FontFactory.GetFont("Times New Roman", 16);
        var fineFont = FontFactory.GetFont("Times New Roman", 8);

        //Write pdf content

        doc.Close();//Close document

1 个答案:

答案 0 :(得分:2)

我只是将图像作为资源添加到项目中,这会将其烘焙到DLL / EXE本身。右键单击项目,选择“属性”,然后单击“资源”。单击添加资源,然后单击添加现有文件。选择您的图像并选择重命名。然后在您的代码中,您可以使用其完全限定名称访问它:

var img = WindowsFormsApplication1.Properties.Resources.logo;
var logo = iTextSharp.text.Image.GetInstance(img, BaseColor.WHITE);
doc.Add(logo);

WindowsFormsApplication1替换为您为项目设置的任何命名空间。