我使用iTextSharp
写在C#中的PDF文件。 我创建了一个ClassLibrary
项目并在windows应用程序中引用。 的dll实际上创建了一个名为时,一个PDF文件,但是当我打开PDF文件,查看它说There was an error opening this document. The file is damaged and could not be repaired.
C#DLL生成的PDF文件被损坏
这里是我的DLL的代码来创建PDF文件
public class Class1
{
public void CreatePDF()
{
// Orignal
string filename = "Desktop\\TEST_" + DateTime.Now.ToString("yyyyMMddhhmm") + ".pdf";
FileStream fs = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.None);
Document doc = new Document(PageSize.A4, 10, 10, 10, 10);
doc.SetMargins(10, 10, 10, 10);
PdfWriter writer = PdfWriter.GetInstance(doc, fs);
doc.Open();
doc.NewPage();
BaseFont bfTimes = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, false);
iTextSharp.text.Font times = new iTextSharp.text.Font(bfTimes, 9, iTextSharp.text.Font.ITALIC, iTextSharp.text.BaseColor.RED);
iTextSharp.text.Font font = FontFactory.GetFont(FontFactory.HELVETICA, 9, BaseColor.BLACK);
iTextSharp.text.Font fontSmall = FontFactory.GetFont(FontFactory.HELVETICA, 2, BaseColor.BLACK);
iTextSharp.text.Font fontBold = FontFactory.GetFont(FontFactory.HELVETICA_BOLD, 9, BaseColor.BLACK);
Paragraph ClientName = new Paragraph("Client Name :" + " " + "Client", font);
Paragraph Date = new Paragraph("Date :" + " " + DateTime.Today.ToShortTimeString(), font);
doc.Add(ClientName);
doc.Add(Date);
LineSeparator ls = new LineSeparator();
ls.LineWidth = 7f;
doc.Add(new Chunk(ls, font.IsBold()));
Paragraph some= new Paragraph("Some Data", fontBold);
doc.Add(some);
doc.Add(new Chunk(ls, font.IsBold()));
DmtxImageEncoder encoder = new DmtxImageEncoder();
DmtxImageEncoderOptions options = new DmtxImageEncoderOptions();
options.SizeIdx = DmtxSymbolSize.DmtxSymbol18x18;
options.Scheme = DmtxScheme.DmtxSchemeC40;
Bitmap qrbitmap = encoder.EncodeImage("123456789", options);
iTextSharp.text.Image qrpic = iTextSharp.text.Image.GetInstance(qrbitmap, System.Drawing.Imaging.ImageFormat.Jpeg);
qrpic.ScalePercent(15f);
doc.Add(qrpic);
doc.Close();
//System.Diagnostics.Process.Start(filename);
}
}
,这是我如何打电话它在Windows应用程序
Testdll.Class1 m = new Testdll.Class1();
m.CreatePDF();
MessageBox.Show("Done");
它创建PDF文件,但损坏。请让我知道我做错了什么,以及如何修复我的代码。
你有生成PDF - 或者你可以用word文档的工作呢?编辑:同样在大多数情况下,iTextSharp允许您使用'using'语句正确处理您的对象。 – confusedandamused
是的,因为我必须生成一个'QR码'和text/csv文件不支持。 –
我通常发现在MS Word中编写/生成文档然后转换为PDF更容易。你有完成文件的例子吗? – confusedandamused