No problem Marco, it was fun to refresh my C++ knowledge. Please don't forget that
the major work on this library wasn't done by me but by the original authors of Xpdf.
For all the others here is the link: http://rapidshare.com/files/172190796/pdf2text.zip
Make a lib (from C-Code) and get Esgrid!
-
- Addict
- Posts: 1482
- Joined: Tue Feb 22, 2011 1:16 pm
Re:
Anyone got this pdftext.zip file? This link is 404.milan1612 wrote:For all the others here is the link: http://rapidshare.com/files/172190796/pdf2text.zip
Microsoft Visual Basic only lasted 7 short years: 1991 to 1998.
PureBasic: Born in 1998 and still going strong to this very day!
PureBasic: Born in 1998 and still going strong to this very day!
-
- Addict
- Posts: 4791
- Joined: Thu Jun 07, 2007 3:25 pm
- Location: Berlin, Germany
-
- Addict
- Posts: 1482
- Joined: Tue Feb 22, 2011 1:16 pm
Re: Re:
Thanks, LJ. 

Microsoft Visual Basic only lasted 7 short years: 1991 to 1998.
PureBasic: Born in 1998 and still going strong to this very day!
PureBasic: Born in 1998 and still going strong to this very day!
Re: Make a lib (from C-Code) and get Esgrid!
milan1612's pdf2text.zip contains the following code example:Although this code example works it contains a nasty bug which
you will experience if you put the ExtractPdfText function into a
procedure: you will see a crash in the procedure because you have
to use PrototypeC instead of Prototype...
For an explanation take a look into the PureBasic blog:
Code: Select all
Prototype.l ExtractPDFTextProto(PdfFile.s, OutputFile.s)
If OpenLibrary(0, "pdf2text.dll")
Global ExtractPDFText.ExtractPDFTextProto = GetFunction(0, "ExtractPdfText")
Else
End
EndIf
If Not ExtractPDFText("c:\LTB2658_1.pdf", "c:\LTB2658_1.txt")
MessageRequester("Error", "Could not extract pdf text!")
EndIf
you will experience if you put the ExtractPdfText function into a
procedure: you will see a crash in the procedure because you have
to use PrototypeC instead of Prototype...

For an explanation take a look into the PureBasic blog:
freak wrote:Here we get to the reason why it works outside of a procedure and not inside. A call to a procedure stores the address where execution continues after the procedure on the stack as well. If a function call inside the procedure leaves the stack in a mess, then the ProcedureReturn cannot find the address to continue and uses a wrong value instead which leads to a crash. Outside of a procedure, nobody will notice the stack mess, as the stack is only used for function calls.