zoukankan      html  css  js  c++  java
  • c#pdf查看器

    Free Spire.PDF for .NET is a Community Edition of the Spire.PDF for .NET, which is a totally free PDF component for commercial and personal use. As a standalone C#/VB.NET component, Free Spire.PDF for .NET enables developers to create, write, edit, convert, print, handle and read PDF files on any .NET applications.

    本篇文章将介绍用e-iceblue插件开发简单的pdf查看器。

    e-iceblue提供包括处理office在内的所有插件,地址:http://www.e-iceblue.com/

    http://www.e-iceblue.com/Introduce/free-pdf-component.html下载免费版的pdf插件安装完成后,就可以看到下面的demo窗体。该窗体展示了所有操作pdf的样例和代码,你也可以直接运行demo

    该pdf插件将处理附件、标注、导出、打开、分页、打印、存储等相关pdf操作。

    新建vs2012 winform程序,将C:Program Files (x86)e-iceblueSpire.PdfViewer-FEBin下的相应版本dll导入vs2012工具栏,

     

    将PfdViewer控件拖至新建窗体上,Spire.PdfViewer的引用就算完成了。

    this.pdfDocumentViewer1.LoadFromFile函数是加载一个pdf文件,参数是文件路径。

    this.pdfDocumentViewer1.Print函数是打印当前文档。

    下面是获取注解和转到注解的代码

    /// <summary>
            /// 获取pdf注解
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnAttachmentAnnotation_Click(object sender, EventArgs e)
            {
                this.tableLayoutPanel1.SetRowSpan(this.pdfDocumentViewer1, 1);
                this.m_isAttachmentAnnotation = true;
                this.listView1.Visible = true;
                this.listView1.Items.Clear();
                this.listView1.Columns.Clear();
                if (this.pdfDocumentViewer1.IsDocumentLoaded && this.pdfDocumentViewer1.PageCount > 0)
                {
                    this.listView1.View = View.Details;
                    this.listView1.Columns.Add("注解",200);
                    this.listView1.Columns.Add("内容",180);
                    this.listView1.Columns.Add("页码",80);
                    this.listView1.Columns.Add("位置",160);
                    //获取pdf注解列表
                    PdfDocumentAttachmentAnnotation[] annotations = this.pdfDocumentViewer1.GetAttachmentAnnotaions();
                    if (annotations != null && annotations.Length > 0)
                    {
                        //注解属性
                        for (int i = 0; i < annotations.Length; i++)
                        {
                            PdfDocumentAttachmentAnnotation annotation = annotations[i];
                            ListViewItem item = new ListViewItem(annotation.FileName);
                            item.SubItems.Add(annotation.Text);
                            item.SubItems.Add(annotation.PageIndex.ToString());
                            item.SubItems.Add(annotation.Location.ToString());
                            item.Tag = annotation;
                            this.listView1.Items.Add(item);
                        }
                    }
    
                }
            }
            /// <summary>
            /// 转到注解
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void listView1_Click(object sender, EventArgs e)
            {
                if (this.m_isAttachmentAnnotation)
                {
                    PdfDocumentAttachmentAnnotation annotation = (PdfDocumentAttachmentAnnotation)this.listView1.SelectedItems[0].Tag;
                    this.pdfDocumentViewer1.GotoAttachmentAnnotation(annotation);
                }
            }

    最后的效果:

    缺点:经过无数个文档加载测试发现某些pdf文档加载问题,如下

    某pdf软件加载某文档

    Spire.PdfViewer加载的某文档

    源码下载:http://download.csdn.net/detail/oyipiantian/8683459

  • 相关阅读:
    [ACM] POJ 3258 River Hopscotch (二分,最大化最小值)
    c语言全局变量和局部变量问题汇总
    surfaceDestroyed什么时候被调用
    JDBC连接MySQL数据库及演示样例
    30天自制操作系统之第11天 制作窗体
    bugFree与zentao
    java实现第七届蓝桥杯生日蜡烛
    java实现第七届蓝桥杯生日蜡烛
    java实现第七届蓝桥杯生日蜡烛
    java实现第七届蓝桥杯生日蜡烛
  • 原文地址:https://www.cnblogs.com/liuxiaobo93/p/4492407.html
Copyright © 2011-2022 走看看