2010-12-03 19 views
7

Ana formumda SavePDFDocument() adında bir yöntemim var:Bir kullanıcıyı bir dosyayı kaydetmek için bir konum seçmesini nasıl isteyebilirim?

private void SavePDFDocument() 
{ 
    PDFWrapper pdfWrapper = new PDFWrapper(); 
    pdfWrapper.CreatePDF(horizontalPictureScroller1.GetPictures(), "pdfDocument.pdf"); 
} 

Gördüğünüz gibi, şu anda dosya için bir isim yazıyordum. Kullanıcının nereye kaydedileceğini ve hangi isim verileceğini seçmesini rica ediyorum.

Yukarıda kullandığım CreatePDF() yöntemi:

public void CreatePDF(List<System.Drawing.Image> images, string filename) 
{ 
    if (images.Count >= 1) 
    { 
     Document document = new Document(PageSize.LETTER); 
     try 
     { 

      // step 2: 
      // we create a writer that listens to the document 
      // and directs a PDF-stream to a file 

      PdfWriter.GetInstance(document, new FileStream(filename, FileMode.Create)); 

      // step 3: we open the document 
      document.Open(); 

      foreach (var image in images) 
      { 
       iTextSharp.text.Image pic = iTextSharp.text.Image.GetInstance(image, System.Drawing.Imaging.ImageFormat.Jpeg); 

       if (pic.Height > pic.Width) 
       { 
        //Maximum height is 800 pixels. 
        float percentage = 0.0f; 
        percentage = 700/pic.Height; 
        pic.ScalePercent(percentage * 100); 
       } 
       else 
       { 
        //Maximum width is 600 pixels. 
        float percentage = 0.0f; 
        percentage = 540/pic.Width; 
        pic.ScalePercent(percentage * 100); 
       } 

       pic.Border = iTextSharp.text.Rectangle.BOX; 
       pic.BorderColor = iTextSharp.text.BaseColor.BLACK; 
       pic.BorderWidth = 3f; 
       document.Add(pic); 
       document.NewPage(); 
      } 
     } 
     catch (DocumentException de) 
     { 
      Console.Error.WriteLine(de.Message); 
     } 
     catch (IOException ioe) 
     { 
      Console.Error.WriteLine(ioe.Message); 
     } 

     // step 5: we close the document 
     document.Close(); 
    } 
} 

Herhangi bir öneriniz var mı?

cevap

4

Aradığınız açıklar?

private void button1_Click(object sender, System.EventArgs e) 
{ 
    Stream myStream ; 
    SaveFileDialog saveFileDialog1 = new SaveFileDialog(); 

    saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" ; 
    saveFileDialog1.FilterIndex = 2 ; 
    saveFileDialog1.RestoreDirectory = true ; 

    if(saveFileDialog1.ShowDialog() == DialogResult.OK) 
    { 
     if((myStream = saveFileDialog1.OpenFile()) != null) 
     { 
      // Code to write the stream goes here. 
      myStream.Close(); 
     } 
    } 
} 
+4

Ben üst düzey 'System.Windows.Forms.SaveFileDialog' bu durumda daha uygun olduğunu düşünüyorum. Farkın ne olduğunu bilen var mı? MSDN'e baktıktan sonra belli değil. –

+0

Teşekkürler, soru daha zor olsa da. Bu SaveFieldDialog işlevini yukarıdaki kodumla nasıl bütünleştirebilirim? Dikkat Yeni FileStream() kullanıyorum. Baska öneri? –

+0

@Serg cevabımda yazdığım örnek koda bakın; bir Stream nesnesini ele alıyor. –

İlgili konular