how to read an specific page into pdf document?
Ken Ray
kray at sonsothunder.com
Wed Oct 19 10:24:19 EDT 2011
On Oct 19, 2011, at 8:44 AM, Peter M. Brigham, MD wrote:
> On Oct 18, 2011, at 3:47 PM, Francis Nugent Dixon wrote:
>
>> Hi from beautiful Brittany,
>>
>> Graham wrote :
>>
>>> Where does the PDF page appear? I mean is it in a stack window,
>>
>>> and could it be manipulated by a LiveCode program ?
>>
>> The answer is YES !
>>
>> I may be a little late on this thread, 'cos I've been trying
>> to solve the problem myself. I appear to have made progress
>> - to whit : pick up a page of a pdf file and get it as text
>> into a stack. Save it on an external file, then read it back
>> into the stack - Long-winded but effective.
>>
>> Don't ask me what happens to non-text data in the page - I
>> haven't got that far, YET !
>>
>> After playing about with Skim, and scanning all examples
>> available on the net, I think you can do just about anything
>> with Skim and AppleScript.
>>
>> Of course, my example was developed on a MAC.
>>
>> File "SkimTest1.pdf" contains text ONLY.
>> "MyPagesC" is a field containing the required page number.
>> "MySkim" is the reception field in my stack
>>
>> TestStack available on request (save you coding it all up)
>>
>> Be careful of line wraps.
>>
>> Best Regards
>>
>> -Francis
>>
>>
>> put "tell application " & quote & "Skim" & quote into line 1 of GVMasterScript
>> put "set " & LVDeskTop & " to path to desktop as string" into line 2 of GVMasterScript
>> put "open (" & LVDeskTop & " & " & quote & "SkimTest1.pdf" & quote & ")" into line 3 of GVMasterScript
>> put "tell document 1" into line 4 of GVMasterScript
>> put char 1 to 3 of field "MyPagesC" into GVPage
>> put "go to page " & GVPage into line 5 of GVMasterScript
>> put "set " & GVTextData & " to (get text for page " & GVPage & ")" into line 6 of GVMasterScript
>> put "tell application " & quote & "TextEdit" & quote into line 7 of GVMasterScript
>> put "activate" into line 8 of GVMasterScript
>> put "make new document" into line 9 of GVMasterScript
>> put "set text of document 1 to GVTextData as text" into line 10 of GVMasterScript
>> put "save document 1 in (LVDeskTop " & " & " & quote & "SkimOut.txt" & quote & ")" into line 11 of GVMasterScript
>> put "end tell" into line 12 of GVMasterScript
>> put "end tell" into line 13 of GVMasterScript
>> put "activate" into line 14 of GVMasterScript
>> put "end tell" into line 15 of GVMasterScript
>> --
>> -- AppleScript is now complete. So execute it !
>> --
>> do GVMasterScript as AppleScript
>> put GVDeskTop & "/" & "SkimOut.txt" into LVSkimName
>> if there is a file LVSkimName then
>> open file LVSkimName
>> put 0 into LVSkimLines
>> repeat forever
>> read from file LVSkimName until return
>> put it into LVInputArea
>> if LVInputArea is empty then exit repeat
>> add 1 to LVSkimLines
>> put LVInputArea into line LVSkimLines of field MySkim
>> end repeat
>> close file LVSkimName
>> show field "MySkim"
>> end if
>
> Can you not just return GVTextData as the result from your AppleScript and then put that into your field directly? Do you have to go through writing it to a file then getting it from the file?
Right, you should be able to do this (untested):
put char 1 to 3 of field "MyPagesC" into GVPage
put "tell app " & quote & "Skim" & quote & cr & \
"set " & LVDeskTop & " to path to desktop as string" & cr & \
"open (" & LVDeskTop & " & " & quote & "SkimTest1.pdf" & quote & ")" & cr & \
"tell document 1" & cr & "go to page " & GVPage & cr & \
"set result to (get text for page " & GVPage & ")" & cr & \
"end tell" & cr & "end tell" into GVMasterScript
do GVMasterScript as AppleScript
put the result into field "MySkim"
show field "MySkim"
Ken Ray
Sons of Thunder Software, Inc.
Email: kray at sonsothunder.com
Web Site: http://www.sonsothunder.com/
More information about the use-livecode
mailing list