我尝试使用 PDFClown 0.1.2.0 使用 C# 创建一个包含图像的 pdf 文件。
但我无法让它工作。
我得到的错误是:
An attempt was made to move the file pointer before the beginning of the file.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.SeekCore(Int64 offset, SeekOrigin origin)
at System.IO.FileStream.Seek(Int64 offset, SeekOrigin origin)
at org.pdfclown.documents.contents.entities.JpegImage.Load()
at org.pdfclown.documents.contents.entities.Image.Get(Stream stream)
at org.pdfclown.documents.contents.entities.Image.Get(String path)
at TestPdf.MainForm.createPDF() in c:\Users\Demo\Documents\SharpDevelop Projects\TestPdf\TestPdf\MainForm.cs:line 43
我得到这个错误的代码行是:
org.pdfclown.documents.contents.entities.Image image = org.pdfclown.documents.contents.entities.Image.Get("test.jpg");
我正在使用的代码是:
public void createPDF()
{
try {
org.pdfclown.files.File file = new org.pdfclown.files.File();
org.pdfclown.documents.Document document = file.Document;
org.pdfclown.documents.Page page = new org.pdfclown.documents.Page(document);
document.Pages.Add(page);
org.pdfclown.documents.contents.composition.PrimitiveComposer composer = new org.pdfclown.documents.contents.composition.PrimitiveComposer(page);
composer.SetFont(new org.pdfclown.documents.contents.fonts.StandardType1Font(document, org.pdfclown.documents.contents.fonts.StandardType1Font.FamilyEnum.Courier, true, false), 32);
composer.ShowText("Hello World!", new System.Drawing.PointF(32, 48));
org.pdfclown.documents.contents.entities.Image image = org.pdfclown.documents.contents.entities.Image.Get("test.jpg");
org.pdfclown.documents.contents.xObjects.XObject imageXObject = image.ToXObject(document);
composer.ShowXObject(imageXObject, new System.Drawing.PointF(32, 80));
composer.Flush();
file.Save("test.pdf", org.pdfclown.files.SerializationModeEnum.Incremental);
System.Diagnostics.Process.Start("explorer", System.IO.Directory.GetParent(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName).ToString());
} catch (System.Exception e) {
System.Windows.Forms.MessageBox.Show(e.Message + "\r\n" + e.StackTrace);
}
}
我究竟做错了什么?