dotnet获取PDF文件的页数
生活随笔
收集整理的這篇文章主要介紹了
dotnet获取PDF文件的页数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#region 獲取PDF文件的頁數private int BytesLastIndexOf(Byte[] buffer, int length, string Search){if (buffer == null)return -1;if (buffer.Length <= 0)return -1;byte[] SearchBytes = Encoding.Default.GetBytes(Search.ToUpper());for (int i = length - SearchBytes.Length; i >= 0; i--){bool bFound = true;for (int j = 0; j < SearchBytes.Length; j++){if (ByteUpper(buffer[i + j]) != SearchBytes[j]){bFound = false;break;}}if (bFound)return i;}return -1;}private byte ByteUpper(byte byteValue){char charValue = Convert.ToChar(byteValue);if (charValue < 'a' || charValue > 'z')return byteValue;elsereturn Convert.ToByte(byteValue - 32);}/// <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 -1;if (buffer.Length <= 0)return -1;try{//Sample// 29 0 obj// <</Count 9// Type /Pagesint i = 0;int nPos = BytesLastIndexOf(buffer, length, "/Type/Pages");if (nPos == -1)return -1;string pageCount = null;for (i = nPos; i < length - 10; i++){if (buffer[i] == '/' && buffer[i + 1] == 'C' && buffer[i + 2] == 'o' && buffer[i + 3] == 'u' && buffer[i + 4] == 'n' && buffer[i + 5] == 't'){int j = i + 3;while (buffer[j] != '/' && buffer[j] != '>')j++;pageCount = Encoding.Default.GetString(buffer, i, j - i);break;}}if (pageCount == null)return -1;int n = pageCount.IndexOf("Count");if (n > 0){pageCount = pageCount.Substring(n + 5).Trim();for (i = pageCount.Length - 1; i >= 0; i--){if (pageCount[i] >= '0' && pageCount[i] <= '9'){return int.Parse(pageCount.Substring(0, i + 1));}}}return -1;}catch (Exception ex){return -1;}}#endregion
?
總結
以上是生活随笔為你收集整理的dotnet获取PDF文件的页数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Bzoj1269 [AHOI2006]文
- 下一篇: 微信小程序:一把瑞士军刀