#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. jquery操作表格 合并单元格

    jquery操作table,合并单元格,合并相同的行 合并的方法 $("#tableid").mergeCell({ cols:[X,X] ///参数为要合并的列}) /** * ...

  2. touchstart,touchmove,touchend事件 写法

    jQuery写法: $('#id').on('touchstart',function(e) { var _touch = e.originalEvent.targetTouches[0]; var ...

  3. javascript 练习示例(一)

    confirm 点确定返回true,点取消返回false prompt 点确定返回用户输入的字符串,点取消返回null 判断奇偶性 var isOdd = prompt('请输入你得的数字'); if ...

  4. iOS 对模型对象进行归档

    归档是指一种形式的序列化,专门编写用于保存数据的任何对象都应该支持归档.使用对模型对象进行归档的技术可以轻松将复杂的对象写入文件,然后再从中读取它们. 只要在类中实现的每个属性都是标量或者都是遵循NS ...

  5. Stimulsoft入门视频

    .NET框架下最全面的报表解决方案,支持多种报表导出格式,拥有简单且强大的报表引擎.本系列教程适合Stimulsoft Reports上手入门. 001     Stimulsoft Reports. ...

  6. Android开发案例 - 欢迎界面

    本文详细描述了如何实现如下图中的微信启动界面. 该类启动界面的特点是在整个Application的生命周期里, 它只会出现在第一次进入应用时, 即便按回退键到桌面之后. 使用该类启动界面的应用还有: ...

  7. 读《乔布斯的NeXT和苹果之间,隔了这两个创业常识》

    原文链接:http://wwww.huxiu.com/article/114950/1.html 前言: 当今硅谷风头最劲的风险投资家马克·安德森曾说,硅谷每年大约诞生15-20家真正值得投资的公司. ...

  8. SQL Server 进阶 01 数据库的设计

    SQL Server 进阶 01 数据库的设计 本篇目录 课程内容回顾及介绍 为什么需要规范的数据库设计 设计数据库的步骤 绘制E-R(实体-关系)图 实体-关系模型 如何将E-R图转换为表 数据规范 ...

  9. python快速生成注释文档的方法

    python快速生成注释文档的方法 今天将告诉大家一个简单平时只要注意的小细节,就可以轻松生成注释文档,也可以检查我们写的类方法引用名称是否重复有问题等.一看别人专业的大牛们写的文档多牛多羡慕,不用担 ...

  10. ajax请求成功后打开新开窗口(window.open())被拦截的解决方法

    问题:今天在做项目时需要在ajax请求成功后打开一个新的窗口,此时遇到浏览拦截了新窗口的问题,尝试在ajax 回调函数中模拟执行 click 或者 submit 等用户行为(trigger('clic ...