私のプログラムのこのセクションは、テキストボックスに表示されている私のプログラムの前の部分の読み上げと、このデータの.pdfファイルの作成を担当しています。もともと、これはうまくいきました。しかし、未知の理由により、壊れた.pdfファイルを作成し始めました。ここでiTextSharpは壊れたPDFファイルを作成しています。C#
は私のプログラムのセクションです:
private void SaveToPDF_Click(object sender, EventArgs e)
{
SaveFileDialog SavePDFDialog = new SaveFileDialog();
Stream MyStream;
SavePDFDialog.Filter = "PDF File (*.pdf)|*.pdf|All Files(*.*)|*.*";
SavePDFDialog.FilterIndex = 1;
SavePDFDialog.RestoreDirectory = true;
SavePDFDialog.FileName = ("Report");
if (SavePDFDialog.ShowDialog() == DialogResult.OK)
{
if ((MyStream = SavePDFDialog.OpenFile()) != null)
{
try
{
Document document = new Document();
PdfWriter.GetInstance(document, new FileStream(PDFDirectory, FileMode.Create));
document.Open();
//Paragraph h = new Paragraph("Results from: " + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLocalTime());
Paragraph h = new Paragraph("Results from: " + DateTime.Now.ToLocalTime());
Paragraph p1 = new Paragraph("The Top Scoring student is:" + TopStudentBox.Text);
Paragraph p2 = new Paragraph("The Question answer wrong the most is: " + MissedQuestionBox.Text);
document.Add(h);
document.Add(p1);
document.Add(p2);
document.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
MyStream.Close();
}
}
}
は、事前にありがとうございます。
私はそれはあなたが1つのストリームに書き込むためだと思う:
PdfWriter.GetInstance(document, new FileStream(PDFDirectory, FileMode.Create));
と別のを閉じる:
MyStream.Close();
私は、これは動作するはずと思いますが、あなたがかもしれMKLのコメント@盗む
あなたはより多くの詳細を提供する必要があります。壊れたファイルはどういう意味ですか?生成されたすべてのファイルが壊れているのでしょうか?ちょっとでも、入力が壊れていないものとどのように比較されますか?上記のコードからpdf要素の一部を削除した場合は、それを削除して壊れていない要素を削除しますか? – user5226582
これらの破損したファイルの1つを見るとよいでしょう。 –
iTextSharpのターゲットファイルストリームは、 'new FileStream(PDFDirectory、FileMode.Create)'のように作成します。特に 'SavePDFDialog.OpenFile()'から取得した 'MyStream'は使用しません。 iTextSharpにあなたが書き込みたいストリームを与えないので、ファイルを適切に作成する機会はありません。 – mkl