private void exportPDFProcess(string filename, FPDFSave dialog) { org.pdfclown.files.File file = new org.pdfclown.files.File(); org.pdfclown.documents.Document document = file.Document; Page page; Stream stream; org.pdfclown.documents.contents.entities.JpegImage currentImage; int i = 1; foreach (CScannedImage img in images.Values) { ThreadStart setstatus = delegate { dialog.SetStatus(i, images.Count); }; dialog.Invoke(setstatus); Size pageSize = new Size((int)(img.BaseImage.Width / img.BaseImage.HorizontalResolution * 72), (int)(img.BaseImage.Height / img.BaseImage.VerticalResolution * 72)); PointF point = new PointF(0, 0); Resources resources = new Resources(document); //page = new Page(document,pageSize,resources); page = new Page(document); document.Pages.Add(page); stream = new MemoryStream(); img.BaseImage.Save(stream, ImageFormat.Jpeg); PrimitiveComposer composer = new PrimitiveComposer(page); currentImage = new org.pdfclown.documents.contents.entities.JpegImage(stream); composer.ShowXObject(currentImage.ToXObject(document), point, pageSize); stream.Flush(); composer.Flush(); i++; } file.Save(filename, SerializationModeEnum.Standard); dialog.Invoke(new ThreadStart(dialog.Close)); }
private void exportPDF(string filename) { FPDFSave pdfdialog = new FPDFSave(); ThreadStart starter = delegate { exportPDFProcess(filename, pdfdialog); }; new Thread(starter).Start(); pdfdialog.ShowDialog(this); }