C# 使用用户输入文件名保存pdf文件(iTextSharp)

C# 使用用户输入文件名保存pdf文件(iTextSharp),c#,winforms,itextsharp,export-to-pdf,C#,Winforms,Itextsharp,Export To Pdf,我想允许用户输入自己的文件名,就像保存文件对话框和流一样(例如:streams=file.Open(sfdPdf.FileName,FileMode.CreateNew) 这是我的密码: private void btnSave_Click(object sender, EventArgs e) { System.Drawing.Rectangle bounds = this.Bounds; using (Bitmap bitmap = new

我想允许用户输入自己的文件名,就像保存文件对话框和流一样(例如:
streams=file.Open(sfdPdf.FileName,FileMode.CreateNew)

这是我的密码:

    private void btnSave_Click(object sender, EventArgs e)
    {

        System.Drawing.Rectangle bounds = this.Bounds;
        using (Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height))
        {
            using (Graphics graphics = Graphics.FromImage(bitmap))
            {
                graphics.CopyFromScreen(new Point(bounds.Left, bounds.Top), Point.Empty, bounds.Size);
            }
            bitmap.Save("Image.jpeg", ImageFormat.Jpeg);
        }

        Document doc = new Document(PageSize.LETTER, bounds.Left, bounds.Right, bounds.Top, bounds.Bottom);
        PdfWriter wri = PdfWriter.GetInstance(doc, new FileStream("ImageTest.pdf", FileMode.Create));
        doc.Open();
        iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance("Image.jpeg");
        doc.Add(image);
        doc.Close();
}
我希望部分“ImageTest.pdf”被命名为用户想要的pdf扩展名(和.pdf文件类型)

PdfWriter writer=PdfWriter.GetInstance(doc,newfilestream(“ImageTest.pdf”,FileMode.Create));

有人能帮忙吗?有没有人能更好地解决我的问题? 我想拍摄我的windows窗体的屏幕截图,并将图像导出到用户输入名称下的pdf文件中

编辑: 使用saveFileDialog(在bitmap.save之后)-接收错误“格式错误:不是PDF或已损坏”


我不是ITextSharp的专家,但我认为您的代码应该是这样的

SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "Pdf File |*.pdf";
if (sfd.ShowDialog() == DialogResult.OK)
{
    Document doc = new Document(PageSize.LETTER, bounds.Left, bounds.Right, bounds.Top, bounds.Bottom);
    PdfWriter wri = PdfWriter.GetInstance(doc, new FileStream(sfd.FileName, FileMode.Create));
    doc.Open();
    iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance("Image.jpeg");
    doc.Add(image);
    doc.Close();
}

换句话说,只需将SaveFileDialog中选择的文件名字符串传递给PdfWriter.GetInstance方法

您知道名为SaveFileDialog和OpenFileDialog的类的存在吗?对这些术语进行一点研究将使您走上正确的道路。是的,正如我在文章(开始)中所写,我知道SaveFileDialog。当我使用“保存文件”对话框和过滤器作为扩展名时,我在尝试打开pdf文件时出错。。说文件已损坏的“保存文件”对话框尝试在“编辑”中添加,当我尝试打开保存的pdf文件时,该代码不起作用。但是如果您不使用“保存文件”对话框,您是否能够打开ImageTest.pdf文件?是的,使用我添加的第一个代码,我可以打开保存的pdf文件正常。这是因为iTextSharp.dll库。是的。就是这样。很抱歉“有点慢”。现在我明白了。非常感谢您指出这一点!没问题,以后再见
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "Pdf File |*.pdf";
if (sfd.ShowDialog() == DialogResult.OK)
{
    Document doc = new Document(PageSize.LETTER, bounds.Left, bounds.Right, bounds.Top, bounds.Bottom);
    PdfWriter wri = PdfWriter.GetInstance(doc, new FileStream(sfd.FileName, FileMode.Create));
    doc.Open();
    iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance("Image.jpeg");
    doc.Add(image);
    doc.Close();
}