我在AIR應用程序中使用xpdf將PDF轉換爲PNG。在轉換之前,我想獲得一個頁面計數,並使用xdf的pdfinfo實用程序打印到stdout
,然後解析該字符串以獲取頁面計數。更智能的方法來隔離未格式化的字符串中的值?
我第一遍的解決方案:通過換行符拆分字符串,測試的結果數組「的頁面:」串等
我的解決方案作品,但感覺笨重和脆弱。我想過替換所有的雙重空格,在「:」上做一個分割,然後構建一個哈希表 - 但是在字符串中有冒號的時間戳可能會導致這種情況發生。
有沒有更好或更聰明的方法來做到這一點?
protected function processPDFinfo(data:String):void
{
var pageCount:Number = 0;
var tmp:Array = data.split("\n");
for (var i:int = 0; i < tmp.length; i++){
var tmpStr:String = tmp[i];
if (tmpStr.indexOf("Pages:") != -1){
var tmpSub:Array = tmpStr.split(":");
if (tmpSub.length){
pageCount = Number(tmpSub[tmpSub.length - 1]);
}
break;
}
}
trace("pageCount", pageCount);
}
Title: Developing Native Extensions
Subject: Adobe Flash Platform
Author: Adobe Systems Incorporated
Creator: FrameMaker 8.0
Producer: Acrobat Distiller Server 8.1.0
CreationDate: Mon Dec 7 05:45:39 2015
ModDate: Mon Dec 7 05:45:39 2015
Tagged: yes
Form: none
Pages: 140
Encrypted: no
Page size: 612 x 783 pts (rotated 0 degrees)
File size: 2505564 bytes
Optimized: yes
PDF version: 1.4
說到笨拙,爲什麼不在As3中進行pdf解析?如果不在'stdout'上拋出字符串,你首先就不會有問題。 – null
@null - ?我正在使用'xpdf'的'pdftopng'功能。這只是通過'pdfinfo'獲取頁面的數量。但是如果你想分享AS3代碼來解析PDF,我很樂意看看它。 –