#region 获取PDF文件的页数

        private int BytesLastIndexOf(Byte[] buffer, int length, string Search)
{
if (buffer == null)
return -;
if (buffer.Length <= )
return -;
byte[] SearchBytes = Encoding.Default.GetBytes(Search.ToUpper());
for (int i = length - SearchBytes.Length; i >= ; i--)
{
bool bFound = true;
for (int j = ; j < SearchBytes.Length; j++)
{
if (ByteUpper(buffer[i + j]) != SearchBytes[j])
{
bFound = false;
break;
}
}
if (bFound)
return i;
}
return -;
} private byte ByteUpper(byte byteValue)
{
char charValue = Convert.ToChar(byteValue);
if (charValue < 'a' || charValue > 'z')
return byteValue;
else
return Convert.ToByte(byteValue - );
} /// <summary>
/// 获取pdf文件的页数
/// </summary>
public int GetPDFPageCount(string path) //获取pdf文件的页数
{
path = HttpContext.Current.Server.MapPath(path);
byte[] buffer = File.ReadAllBytes(path);
int length = buffer.Length;
if (buffer == null)
return -;
if (buffer.Length <= )
return -;
try
{
//Sample
// 29 0 obj
// <</Count 9
// Type /Pages
int i = ;
int nPos = BytesLastIndexOf(buffer, length, "/Type/Pages");
if (nPos == -)
return -;
string pageCount = null;
for (i = nPos; i < length - ; i++)
{
if (buffer[i] == '/' && buffer[i + ] == 'C' && buffer[i + ] == 'o' && buffer[i + ] == 'u' && buffer[i + ] == 'n' && buffer[i + ] == 't')
{
int j = i + ;
while (buffer[j] != '/' && buffer[j] != '>')
j++;
pageCount = Encoding.Default.GetString(buffer, i, j - i);
break;
}
}
if (pageCount == null)
return -;
int n = pageCount.IndexOf("Count");
if (n > )
{
pageCount = pageCount.Substring(n + ).Trim();
for (i = pageCount.Length - ; i >= ; i--)
{
if (pageCount[i] >= '' && pageCount[i] <= '')
{
return int.Parse(pageCount.Substring(, i + ));
}
}
}
return -;
}
catch (Exception ex)
{
return -;
}
} #endregion

dotnet获取PDF文件的页数的更多相关文章

  1. SNF开发平台WinForm之十三-单独从服务器上获取PDF文件进行显示-SNF快速开发平台3.3-Spring.Net.Framework

    1运行效果: 2开发实现: 如果需要单独显示PDF文件时用下面代码去实现,指定url地址. 地址: . 获取附件管理的实体对象: List<KeyValuePair<string, obj ...

  2. c#获取pdf文件页数

    引用命名空间:using iTextSharp.text.pdf; string filePath = Server.MapPath("/upload/123.pdf"); //文 ...

  3. itext 生成pdf文件添加页眉页脚

    原文来自:https://www.cnblogs.com/joann/p/5511905.html 我只是记录所有jar版本,由于版本冲突及不兼容很让人头疼的,一共需要5个jar, 其中itextpd ...

  4. OpenOffice将MS docx转换成pdf文件偶数页眉不显示问题解决办法

    OpenOffice版本:4.0(Windows.Linux下测试都出现问题) MS Office版本:2007 问题描述 使用OpenOffice将MS的docx文件转换为pdf文件时,docx文件 ...

  5. java如何实现批量删除pdf指定的页数

    依赖: <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox-app ...

  6. java从远程服务器获取PDF文件并后台打印(使用pdfFox)

    一.java原生方式打印PDF文件 正反面都打印,还未研究出只打印单面的方法,待解决 public static void printFile(String path) throws Exceptio ...

  7. Vue PDF文件预览vue-pdf

       最近做项目,遇到预览PDF这个功能,在网上找了找,大多推荐的是pdf.js,不过在Vue中还是想偷懒直接npm组件,最后找到了一个还不错的Vue-pdf 组件,GitHub地址:https:// ...

  8. Python | 实现pdf文件分页

    不知道大家有没有遇到过这么一种情况,就比如一个pdf格式的电子书,我们经常浏览的是其中的一部分,而这电子书的页数很大,每当需要浏览时,就需要翻到对应的页码,就有点儿繁琐. 还有一些情况,比如,我们想分 ...

  9. 将PDF文件中按页截取,并以流的形势返回给客户端

    #需要用到pyPdf库 from pyPdf import PdfFileWriter,PdfFileReader from django.http import HttpResponse try: ...

随机推荐

  1. ng-option指令使用记录,设置默认值需要注意

    ng-options一般有以下用法: 数组作为数据源: label for value in array select as label for value in array label group ...

  2. Unable to download data from http://ruby.taobao.org/ & don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

    安装cocoapods,记录两个问题! 1.镜像已经替换成了 http://ruby.taobao.org/, 还是不能不能安装cocoapods, 报错:Unable to download dat ...

  3. git基础

    1.新的未跟踪文件 新创建的README文件没有进行任何跟踪 $ git status On branch master Untracked files: (use "git add < ...

  4. bitnami redmine版本由2.3.1升级至3.2.2过程

    环境: 操作系统为ubuntu13.**版本,非长期支持版. 安装目录:/opt/redmine-2.3.1-0/ 所有者用户:root 安装过程: 1. 备份2.3.1数据库 sudo /opt/r ...

  5. gitflow以及git

    git大概只会用常用的那几个命令,自己用的最多的也只是add commit push pull之类的,然后那天电话面试问我版本回退怎么办我都忘记了. 然后又看了看教程,此时想起来做项目的时候师兄说的g ...

  6. 异常处理之“The remote certificate is invalid according to the validation praocedure.”

    参考文章:http://brainof-dave.blogspot.com.au/2008/08/remote-certificate-is-invalid-according.html 参考文章:h ...

  7. 3-EM的安装和使用

    EM的安装和使用 一.EM工具的安装和使用 1.保证数据库启动 2.保证侦听启用 3.通过这个命令可以查看到侦听端口1521的状态信息 4.启动em工具 5.查看em工具是否运行 6.登陆网站并进行操 ...

  8. Linux 关于Transparent Hugepages的介绍

    透明大页介绍 Transparent Huge Pages的一些官方介绍资料: Transparent Huge Pages (THP) are enabled by default in RHEL ...

  9. 学习 shell脚本之前的基础知识

    转载自:http://www.92csz.com/study/linux/12.htm  学习 shell脚本之前的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写sh ...

  10. Python学习实践-----打印日历

    使用python语言实现在控制台打印日历 输入年.月.日 输出对应日历,指定的日数输出为'--' 程序没有做严格的输入验证,故输入整数即可. 以下为没有优化的源码: print_calendar.py ...