FreeSpire.PDF 操作类的使用方式

FreeSpire.PDF 操作类的使用方式

 public static  class PDFPressClass
    {
        public static string PDFCreate(string ModelPath, object obj)
        {
            string FilePath = "";
            if (File.Exists(ModelPath))
            {
                PdfDocument doc = new PdfDocument();
                doc.LoadFromFile(ModelPath);
                //PdfPageBase page = doc.Pages[0];
                PdfFormWidget formWidget = doc.Form as PdfFormWidget;
                PropertyInfo[] properties = obj.GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public);
                List<Image> imageList = new List<Image>();
                List<PdfTextBoxFieldWidget> ImageWidaget = new List<PdfTextBoxFieldWidget>();

                //Bitmap NewPicBitmap = new Bitmap(DemoImage.Width, DemoImage.Height);//创建新图片
                //Graphics NewPic = Graphics.FromImage(NewPicBitmap);
                //Rectangle PlayerPicStangle = new Rectangle(175, 50, 250, 188);//选手照片范围
                //NewPic.DrawImage(PlayerImage, PlayerPicStangle);
                //Rectangle DiejiaPicStangle = new Rectangle(0, 0, NewPicBitmap.Width, NewPicBitmap.Height);//整个两张照片合并
                //NewPic.DrawImage(DemoImage, DiejiaPicStangle);




                foreach (PdfTextBoxFieldWidget field in formWidget.FieldsWidget)
                {
                    PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("微软雅黑", 11f), true);
                    //PdfFont newfont = new PdfFont(PdfFontFamily.TimesRoman, 12f, PdfFontStyle.Italic | PdfFontStyle.Bold);
                    field.Font = (PdfFontBase)font;
                    if (field.Name.Contains("Image"))//放入image的域
                    {
                        ImageWidaget.Add(field);
                        foreach (PropertyInfo pt in properties)
                        {
                            Object temstr = pt.GetValue(obj, null);
                            if (pt.Name == field.Name)
                            { 
                                    Image image = temstr as Image;
                                    imageList.Add(image);
                                
                            }
                        }
                    }
                    else//字符串类型放入下面
                    { 
                        foreach (PropertyInfo pt in properties)
                        {
                            Object temstr = pt.GetValue(obj, null);
                            //string TypeName = pt.GetType().Name;
                            if (pt.Name == field.Name)
                            {
                                //if (pt.PropertyType.Name.Contains("Image"))//将image放入imageList中
                                //{

                                //    Image image = temstr as Image;
                                //    imageList.Add(image);
                                //}
                                 if (temstr != null)
                                {
                                    field.Text = temstr.ToString(); 
                                } 
                            }
                            //else
                            //{
                                
                            //}
                        }

                    }
                    //field.Flatten = true;
                    // field.ReadOnly = true;
                }
                List<PdfTextBoxFieldWidget> ImageWidagetSetIn = ImageWidaget.OrderBy(x => x.Name).ToList();
                int CountImage = ImageWidagetSetIn.Count >= imageList.Count ? imageList.Count : ImageWidagetSetIn.Count;//选少的那个
                for (int i = 0; i < CountImage; i++)//贴图管理
                {
                    using (MemoryStream stream = new MemoryStream())//使用内存读取则可以少出bug
                    {
                        Bitmap bitmap = new Bitmap(imageList[i]);
                        bitmap.Save(stream, ImageFormat.Jpeg); 
                        PdfImage pdfImage = PdfImage.FromStream(stream);
                        RectangleF pt = ImageWidagetSetIn[i].Bounds;
                        doc.Pages[0].Canvas.DrawImage(pdfImage, pt);
                    }
                }
                string Filename = DateTime.Now.ToShortTimeString().Replace(":", "");
                FilePath = string.Format("{0}\\{1}.pdf", Environment.CurrentDirectory, Filename);
                doc.SaveToFile(FilePath, FileFormat.PDF);
                System.Diagnostics.Process.Start(FilePath);
            }
            //File.Delete(FilePath);//删除临时文件
            return FilePath;
        }
    }

//////image放到对应的RectangleF 中

Free Spire.PDF for .NET 是 Spire.PDF for .NET 的免费版本,无需购买即可用于个人或商业用途。使用该组件,程序员可以 在.NET 程序中创建、读取、写入、编辑和操作 PDF 文档。这个控件能支持的功能十分全面,例如文档安全性设置(电子签名),提取 PDF 文本、附件、图片,PDF 合并和拆分,更新 Metadata,设置 Section,绘制图形、插入图片、表格制作和加工、导入数据等等。除此以外,Spire.PDF 还可以将 TXT 文本、图片、HTML 高质量地转换为 PDF 文件格式。 主要功能如下: 1.高质量的文档转换。Free Spire.PDF for .NET 支持 PDF 到 Word、XPS、SVG、EMF、Text 和图片(EMF、JPG、PNG、BMP、TIFF)的格式转换。也支持从 XML、HTML、RTF、XPS、Text、图片等格式生成 PDF 文档。 2.文档操作及域功能。支持合并、拆分 PDF 文档,在原有的 PDF 文档页添加覆盖页。同时,Spire.PDF 提供导入、邮戳、小册子功能,以及帮助用户从数据库读取数据并填充到域的域填写功能。 3. 安全性设置。用户可以通过设置密码和数字签名来保护 PDF 文档。用户密码和所有者密码可以确定加密的 PDF 文档的可读性、可修改性、是否可打印等有选择性的限制。与此同时,数字签名作为一个更有效的方法,可以应用于维护和对PDF文档进行身份验证。 4.数据提取。支持快速高效地从 PDF 文档提取图片、文本、PDF 分页,以及附件。 5.文件属性设置。支持对 Metadata、文件属性、页面方向、页面大小进行设置。其中文件属性包括文件限制(打印、页面提取、加评论等方面的权限限制)以及文件描述属性(文件名称、作者、主题、关键字等)。使用 Spire.PDF for .NET,用户还可以根据自己阅读喜好设定默认打开页码,分页模式,缩放比例和打印缩放,等等。 6.其他功能。 支持多种语言,支持字体格式、对齐方式设置。 绘制文字,图片,图形。 支持添加图层,透明图像,Color Space,条形码到 PDF。 支持 PDF/A-1b、PDF/x1a:2001 格式。 添加梯状图形和矢量图像到指定位置。 添加并格式化表格。 插入交互元素,例如添加自定义的 Annotation、Action、JavaScript、附件、书签等。
Free Spire.PDFViewer for .NET 是 Spire.PDFViewer for .NET 的免费版本,使用 Free Spire.PDFViewer,程序员可以在 WinForm 程序中加载并查看 PDF 文档。浏览 PDF 时,用户可以自由设置浏览选项,比如:自动适应纸张/自动适应窗口,上一页/下一页,放大/缩小,等等。Free Spire.PDFViewer 支持浏览含多种元素的 PDF,这些元素包括超链接,字体(TrueType, Type 0, Type 1, Type 3, OpenType and CJK font),图形,表格, Device-Dependent Color Spaces, DCT,JPEG2000 等图片格式。 此外,该控件还支持纵向、横向和自动打印文档,支持将 PDF 保存为多种流行的图片格式(.bmp, .png, .jpeg)。作为一款独立的 PDF 查看组件,Free Spire.PDFViewer 的运行不依赖 Adobe Reader 及其他任何第三方软件。 主要功能点: 1.从文件,流,字节数组读取文档 2.加载浏览加密的 PDF 文档 3.设置浏览选项(页面跳转,缩放,自适应页面大小,旋转,单页或多页显示) 4.显示缩略图 5.识别书签目录及跳转到目标位置 6.存取附件到本地硬盘 7.支持多种打印方式:横向,纵向,自动 8.保存为图片(.bmp, .png, .jpeg) 9.支持多种PDF页面元素(超链接,字体,图形,图片,表格) 技术特点: 1.支持 .NET Framework 2.0, 3.0, 3.5, 4.0 2.仅支持 Windows Form 3.支持ASCIIHex, ASCII85, Flate, LZW, Run Length, CCITT Fax, DCT, JPX 解码 4.控件完全由 C# 代码开发 5.独立组件,无需 Adobe Reader 及其他任何第三方软件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值