Member 12425208 Ответов: 2

Как распечатать PDF-файл и ошибка при экспорте в pdf, когда экспортированный pdf-файл открыт


Я хочу распечатать PDF-файл, который экспортируется из datagridview в PDF с помощью кнопки. И есть одна ошибка появляется (необработанное исключение произошло в вашем приложении) при экспорте в PDF-файл во второй раз, когда экспортированный pdf-файл открыт. Как показать уведомление на экране о том, что PDF-файл открыт. Код выглядит следующим образом:

private void pDFəÇıxartToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (dataGridView1.RowCount == 0)
            {
                DialogResult result = MessageBox.Show("Table is empty.", "Export to PDF", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }

            else
            {
                //Full path to the Unicode Arial file
                string ARIALUNI_TFF = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "ARIALUNI.TTF");

                //Create a base font object making sure to specify IDENTITY-H
                BaseFont bf = BaseFont.CreateFont(ARIALUNI_TFF, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

                //Create a specific font object
                iTextSharp.text.Font h = new iTextSharp.text.Font(bf, 20);

                //Create a specific font object
                iTextSharp.text.Font f = new iTextSharp.text.Font(bf, 12);

                //Create a specific font object
                iTextSharp.text.Font g = new iTextSharp.text.Font(bf, 5);

                //Creating iTextSharp Table from the DataTable data
                PdfPTable pdfTable = new PdfPTable(dataGridView1.ColumnCount);
                pdfTable.DefaultCell.Padding = 3;
                pdfTable.SetWidths(new int[6] { 35, 90, 70, 70, 70, 90 });
                pdfTable.TotalWidth = 425;
                pdfTable.LockedWidth = true;
                pdfTable.HorizontalAlignment = Element.ALIGN_LEFT;
                //pdfTable.DefaultCell.BorderWidth = 1;

                //Adding Header row
                foreach (DataGridViewColumn column in dataGridView1.Columns)
                {
                    PdfPCell cell = new PdfPCell(new Phrase(column.HeaderText, f));
                    cell.BackgroundColor = new iTextSharp.text.Color(188, 222, 248);
                    cell.FixedHeight = 18;
                    pdfTable.AddCell(cell);
                }

                //Adding DataRow
                foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                    foreach (DataGridViewCell celli in row.Cells)
                    {
                        try
                        {
                            pdfTable.AddCell(celli.Value.ToString());
                        }
                        catch { }
                    }
                }

                SaveFileDialog sfd = new SaveFileDialog();
                sfd.Filter = "PDF File |*.pdf";
                if (sfd.ShowDialog() == DialogResult.OK)
                {
                    Document pdfDoc = new Document(PageSize.A4, 85f, 10f, 28f, 20f);
                    PdfWriter wri = PdfWriter.GetInstance(pdfDoc, new FileStream(sfd.FileName, FileMode.Create));
                    pdfDoc.Open();
                    Paragraph paragraph = new Paragraph("Kreditin ödəmə planı", h);
                    paragraph.Alignment = Element.ALIGN_LEFT;
                    pdfDoc.Add(paragraph);
                    pdfDoc.Add(new Paragraph(" "));
                    pdfDoc.Add(new Paragraph("Ödəniş metodu:" + " " + comboBox3.Text, f));
                    pdfDoc.Add(new Paragraph("Kreditin məbləği:" + " " + kreditmeblegi.ToString() + " " + comboBox1.Text, f));
                    pdfDoc.Add(new Paragraph("Faiz dərəcəsi:" + " " + illikfaiz.ToString() + "% illik", f));
                    pdfDoc.Add(new Paragraph("Kreditin müddəti:" + " " + Convert.ToDouble(textBox3.Text) + " " + comboBox2.Text, f));
                    pdfDoc.Add(new Paragraph("Verilmə tarixi:" + " " + dateTimePicker1.Text, f));
                    pdfDoc.Add(new Paragraph(" ", g));
                    pdfDoc.Add(new Paragraph("Aylıq ödəniş:" + " " + label9.Text, f));
                    pdfDoc.Add(new Paragraph("Cəmi məbləğ:" + " " + umumiodenis.ToString("N2") + " " + comboBox1.Text, f));
                    pdfDoc.Add(new Paragraph("Ödənilən faiz:" + " " + odenilenfaiz.ToString("N2") + " " + comboBox1.Text + "\n" + "\n", f));
                    pdfDoc.Add(pdfTable);
                    pdfDoc.Close();
                    MessageBox.Show("Table has been exported to PDF", "Export to PDF", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }

private void printToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // How to print?
        } 


Что я уже пробовал:

Ничего.

Mehdi Gholam

Очевидно, что вы не можете перезаписать открытый файл, попробуйте записать его в другое имя файла.

2 Ответов

Рейтинг:
20

#realJSOP

Вы должны обернуть свой код в блок try/catch и правильно обработать исключение таким образом, чтобы представить пользователю разумное сообщение об ошибке.


Member 12425208

Большое спасибо. Это хорошо сработало. Я использовал попробовать поймать. Но как я могу напечатать то, о чем упоминал выше?

Диалоговое окно savefiledialog ЮФО = новое диалоговое окно savefiledialog();
СФО.Filter = " PDF File|*. pdf";
if (sfd. ShowDialog () = = DialogResult.ОК)
{
пробовать
{
Документ pdfDoc = новый документ(PageSize. A4, 85f, 10f, 28f, 20f);
PdfWriter wri = PdfWriter.GetInstance(pdfDoc, new FileStream(sfd. FileName, FileMode.Создавать));
pdfDoc.Открыть();
Абзац абзац = новый абзац("Kreditin ödəmə planı", h);
параграф.Выравнивание = Элемент.ALIGN_LEFT;
pdfDoc.Добавить(пункт);
pdfDoc.Добавить(новый пункт(" "));
pdfDoc.Добавить(новый пункт("Ödəniş методу:" + "" + comboBox3.Текст, Ф));
pdfDoc. Add(новый абзац ("Kreditin məbləği:" + "" + kreditmeblegi.ToString() + "" + comboBox1. Text, f));
pdfDoc.Добавить(новый пункт("Файз dərəcəsi:" + "" + illikfaiz.ToString () + "% illik", f));
pdfDoc.Добавить(новый пункт("Kreditin müddəti:" + "" + преобразование.Метод todouble(textbox3 и.Текст) + "" + comboBox2.Текст, Ф));
pdfDoc.Добавить(новый пункт("Verilmə tarixi:" + "" + dateTimePicker1.Текст, Ф));
pdfDoc.Добавить(новый пункт(" ", г));
pdfDoc.Добавить(новый пункт("Aylıq ödəniş:" + "" + label9.Текст, Ф));
pdfDoc.Добавить(новый пункт("məbləğ Cəmi:" + "" + umumiodenis.ToString("N2") + "" + comboBox1. Text, f));
pdfDoc.Добавить(новый пункт("Ödənilən Фаиз:" + "" + odenilenfaiz.Метод toString("П2") + "" + элемент combobox1.Текст + "\п" + "\п", ф));
pdfDoc. Add(pdfTable);
pdfDoc.Рядом();
Ящик для сообщений.Show ("таблица была экспортирована в PDF"," экспорт в PDF",, MessageBoxButtons.Хорошо, MessageBoxIcon.Информация);
}

ловить
{
Ящик для сообщений.Show ("PDF-файл открыт. "Warning", MessageBoxButtons.Хорошо, MessageBoxIcon.Предупреждение);
}

Рейтинг:
2

Member 12425208

Большое спасибо. Это хорошо сработало. Я использовал попробовать поймать. Но как я могу напечатать то, о чем упоминал выше?

SaveFileDialog sfd = new SaveFileDialog();
                sfd.Filter = "PDF File |*.pdf";
                if (sfd.ShowDialog() == DialogResult.OK)
                {
                    try
                    {
                        Document pdfDoc = new Document(PageSize.A4, 85f, 10f, 28f, 20f);
                        PdfWriter wri = PdfWriter.GetInstance(pdfDoc, new FileStream(sfd.FileName, FileMode.Create));
                        pdfDoc.Open();
                        Paragraph paragraph = new Paragraph("Kreditin ödəmə planı", h);
                        paragraph.Alignment = Element.ALIGN_LEFT;
                        pdfDoc.Add(paragraph);
                        pdfDoc.Add(new Paragraph(" "));
                        pdfDoc.Add(new Paragraph("Ödəniş metodu:" + " " + comboBox3.Text, f));
                        pdfDoc.Add(new Paragraph("Kreditin məbləği:" + " " + kreditmeblegi.ToString() + " " + comboBox1.Text, f));
                        pdfDoc.Add(new Paragraph("Faiz dərəcəsi:" + " " + illikfaiz.ToString() + "% illik", f));
                        pdfDoc.Add(new Paragraph("Kreditin müddəti:" + " " + Convert.ToDouble(textBox3.Text) + " " + comboBox2.Text, f));
                        pdfDoc.Add(new Paragraph("Verilmə tarixi:" + " " + dateTimePicker1.Text, f));
                        pdfDoc.Add(new Paragraph(" ", g));
                        pdfDoc.Add(new Paragraph("Aylıq ödəniş:" + " " + label9.Text, f));
                        pdfDoc.Add(new Paragraph("Cəmi məbləğ:" + " " + umumiodenis.ToString("N2") + " " + comboBox1.Text, f));
                        pdfDoc.Add(new Paragraph("Ödənilən faiz:" + " " + odenilenfaiz.ToString("N2") + " " + comboBox1.Text + "\n" + "\n", f));
                        pdfDoc.Add(pdfTable);
                        pdfDoc.Close();
                        MessageBox.Show("Table has been exported to PDF", "Export to PDF",, MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }

                    catch
                    {
                        MessageBox.Show("PDF file is open."Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }