C# 保存的文件模板中使用的文件应放置在何处?

C# 保存的文件模板中使用的文件应放置在何处?,c#,winforms,visual-studio,save,itextsharp,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 dl

我正在发布一个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

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

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

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

您可以发布访问图片的代码吗?用户可以在其PC上访问的任何地方,您的应用程序都应该能够访问。除非您看到UAC提示,因为您不是本地管理员,在这种情况下,如果您将图像存储在C:\PDFs下,则需要以管理员身份运行应用程序(右键单击->以管理员身份运行),应用程序才能找到它。最好的选择是让OpenFileDialog的默认位置指向users My Documents目录。这样可以避免任何安全问题。你的程序有安装程序吗?是否希望用户能够更改图像?我的程序没有安装程序,这就是问题所在。我正在使用Visual Studio Express,因此我让其他人为我创建安装程序,我希望在发送之前确保它是正确的。不,我不希望用户能够更改图像。谢谢,这似乎给出了期望的结果!