Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Pagecount PDF
Message
General information
Forum:
Visual FoxPro
Category:
ActiveX controls in VFP
Title:
Environment versions
Visual FoxPro:
VFP 8 SP1
OS:
Windows 2000 SP4
Network:
Windows 2000 Server
Database:
Oracle
Miscellaneous
Thread ID:
01030995
Message ID:
01032294
Views:
27
Thanks Sergey,
It made me started and solved my current problem. In the time, I did some findings and managed to write few lines.
Could you please glance it over. This code worked with all my files but possibly wont work for all PDF versions. Any ideas?
Lparameter tcPdfFileName
lcPdf = Filetostr(tcPdfFileName)
Do Case
Case Left(lcPdf,8) = "%PDF-1.2"
	lnPos = At("/Count", lcPdf)
	lPageCount=Substr(lcPdf,lnPos+6,10)
	lPageCount=Val(lPageCount)
Case Left(lcPdf,8) = "%PDF-1.4" Or Left(lcPdf,8) = "%PDF-1.5"
	lPageCount=Occurs('/Page/',lcPdf)
Otherwise
	lPageCount=0
Endcase
Return lPageCount
>You can use a free utility from http://www.appligent.com/products/ap_get_page_count/ap_get_page_count.php or write something using algorithm from http://www.users.on.net/~johnson/delphitips/. Below's a VFP solution based on http://lists.runrev.com/pipermail/use-revolution/2005-April/055538.html that I put together quickly. I didn't do much testing so use it on your own risk. It dosn't have any error checking either.
FUNCTION PdfPageCount
>LPARAMETERS tcPdfFileName
>LOCAL lnPageCount, lcPdf, lnPos, lcStr, lnPosStart, ;
>      lcLine, lcObgPages, lnPosPages, lcPageCount
>lnPageCount = Null
>
>lcPdf = FILETOSTR(tcPdfFileName)
>lnPos = AT("/Type /Catalog", lcPdf)
>
>IF LEFT(lcPdf,8) = "%PDF-1.2"
>	* The previous line has Pages object ref #
>	lcStr = SUBSTR(lcPdf, lnPos-128, 128)
>	lnPosStart = RAT(CHR(13), lcStr, 2)
>	lcLine = STREXTRACT(SUBSTR(lcStr, lnPosStart), CHR(13), CHR(13))
>ELSE
>	* The next line has Pages object ref #
>	lcLine = STREXTRACT(SUBSTR(lcPdf, lnPos, 256), CHR(13), CHR(13))
>ENDIF
>
>* The 2nd word is the pages object ref #
>lcObgPages = GETWORDNUM(lcLine,2)
>* Find Pages object and extract page count
>lnPosPages = AT(CHR(13) + lcObgPages + " 0 obj", lcPdf)
>lcStr = SUBSTR(lcPdf, lnPosPages+1, 512)
>lcPageCount = STREXTRACT(lcStr, "/Count ", " ")
>lnPageCount = INT(VAL(lcPageCount))
>
>RETURN lnPageCount
>
>
>>
>>Need a free component to count no of pages in PDF.
--
--
Aashish Sharma
Tele Nos: +1-201-490-5405
Mobile: +91-9821053938
E-Mail:
aashish@aashishsharma.com
write2aashish@gmail.com

You better believe in yourself... if you don't, who else will ?
TODAY is a gift, that's why it's called PRESENT
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform