0

リッチ テキスト ボックスを PDF ファイルとして保存したいと考えています。ファイルを保存するたびに、Adobe Reader でファイルを開くことができません。

private void button3_Click(object sender, EventArgs e)
{
   SaveFileDialog MyFiles = new SaveFileDialog();
   MyFiles.Filter = "PDF Files|*.pdf";
   MyFiles.Title = "Save As...";
   MyFiles.DefaultExt = "*.pdf";

   if (MyFiles.ShowDialog() == DialogResult.OK) 
   {
      richTextBox1.SaveFile(MyFiles.FileName, RichTextBoxStreamType.PlainText);
      richTextBox3.SaveFile(MyFiles.FileName, RichTextBoxStreamType.PlainText);
      richTextBox4.SaveFile(MyFiles.FileName, RichTextBoxStreamType.PlainText);
      richTextBox5.SaveFile(MyFiles.FileName, RichTextBoxStreamType.PlainText);
   }
}

添付ファイル付きのメールを送信するための送信ボタンも作成しましたが、問題はメールを送信できないことです:

        MailMessage MyMail = new MailMessage(richTextBox1.Text, richTextBox4.Text);
        MyMail.To.Add(new MailAddress(richTextBox4.Text));
        MailAddress mail = new MailAddress(richTextBox1.Text);
        MyMail.From = mail;
        MyMail.Subject = richTextBox5.Text;
        MyMail.Body = richTextBox3.Text;
        MyMail.Attachments.Add(new Attachment(richTextBox2.Text));
        SmtpClient MySmtp = new SmtpClient(TheServer.Text);
        MySmtp.UseDefaultCredentials = true;
        MySmtp.EnableSsl = true;
        MySmtp.Port = Convert.ToInt32(ThePort.Text);
        MySmtp.Send(MyMail);            
4

4 に答える 4

0

誰もが言っているように、RTF を保存して拡張子を変更して PDF にすることはできません。これらは互換性のない形式です。利用可能な多くの商用コンポーネントの中で、AbcPdf を使用すると、RTF で読み取り、出力を PDF として保存できます: http://www.websupergoo.com/abcpdf-11.htm#note

于 2012-08-30T14:01:21.913 に答える
0

問題は、このメソッドを使用すると、RichTextBox のコンテンツを PDF 形式で保存できないことです。

ここでは、現在使用できるストリーム形式の種類を見つけることができます: http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextboxstreamtype.aspx .

ご覧のとおり、サポートされている主なタイプは RTF (Rich Text Format) で、プレーンテキストのマルチプラットフォーム形式です。これは PDF とは大きく異なります。ここここを見てください。

編集:私は質問者のコメントに答えて、いくつかの支援コードを求めています:

// This method opens a dialog and save the content of the passed RichTextBox
private bool ShowRichTextBoxSaveDialog(RichTextBox richTextBox)
{
    SaveFileDialog newFileDialog = new SaveFileDialog();
    newFileDialog.Filter = "PDF Files|*.pdf";
    newFileDialog.Title = "Save As...";
    newFileDialog.Filter = "*.pdf";

    // If the user confirm the dialog window...
    if (newFileDialog.ShowDialog() == DialogResult.OK)
    {
        try
        {
            richTextBox.SaveFile(newFileDialog.FileName, RichTextBoxStreamType.PlainText);

            // Success!
            return true;
        }
        catch(Exception e)
        {
            // Error during saving!
            MessageBox.Show(String.Concat("Error during saving: ", e.Message));

            return false;
        }
    }
    else
            // Aborted by the user!
            return false;
}

private void button3_Click(object sender, EventArgs e)
{
   // NEXT WILL SHOW UP 4 DIALOGS, FOR ASKING THE USER 4 FILES TO SAVE!
   this.ShowRichTextBoxSaveDialog(richTextBox1);
   this.ShowRichTextBoxSaveDialog(richTextBox3);
   this.ShowRichTextBoxSaveDialog(richTextBox4);

   // HERE I ALSO CHECK IF THE SAVING IS SUCCESSFUL..
   if (this.ShowRichTextBoxSaveDialog(richTextBox5))
       MessageBox.Show("Success in saving :)");
   else
       MessageBox.Show("Failure in saving :(");
}
于 2012-08-28T06:49:36.240 に答える
0

C#でPDFとMS Wordファイルを保存すると役立つ場合があります!!!! iTextSharpを使用しています

于 2012-08-28T06:49:47.677 に答える
0

これまたはこのライブラリを使用すると役立ちます。@JleruOHeP がコメントで述べたように、ファイルの名前を変更するだけでは機能しません。

于 2012-08-28T06:49:47.810 に答える