Re: PHP to access shell script to print barcodes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Well, that did something, and it does sound like it should work.  I've scoured the web and haven't found anyone with code that does what I'm trying to do.

I've got a working, hardcoded Postscript file here:

http://www.winecarepro.com/kiosk/fast/shell/barcodemerge.ps

But I need to somehow serve it with PHP, so I can change some variables in it.  

By putting headers in place with PHP, and then doing an "echo" of the postscript, I get postscript errors (though Preview doesn't tell me what the error is):

http://www.winecarepro.com/kiosk/fast/shell/serverps.ps

Trying to trick the web-browser into thinking it's receiving Postscript from a PHP file is tricky.  I don't know what to do next.

Here's the code I was using in the above url:  http://www.winecarepro.com/kiosk/fast/shell/serveps.php.zip

It's not clear to me if the server is parsing the postscript first and then serving it, or if the server is server the postscript as-is and the browser sends it to Preview which interprets it.

I basically want to replicate the functionality found here:

http://blog.maniac.nl/webbased-pdf-lto-barcode-generator/



On Mar 23, 2010, at 5:37 PM, Peter Lind wrote:

> You can create a .php script that sets a proper header to make the
> browser download the file rather than display it. That also allows you
> to set the filename for the download. What you'd need to do is include
> something like:
> 
> header("Content-Disposition: attachment; filename: 'barcodemerge.ps'");
> 
> That tells the browser to download the file. You can also try setting
> the content-type
> 
> header('Content-type: application/postscript');
> 
> Either of the above might do the trick for you.
> 
> Regards
> Peter
> 
> On 23 March 2010 22:10, Rob Gould <gouldimg@xxxxxx> wrote:
>> I love the idea of using PHP to insert data into Postscript.  I'm just not sure how to make it happen.
>> 
>> The good news is that I've got barcodes drawing just the way I need them:
>> 
>> http://www.winecarepro.com/kiosk/fast/shell/barcodemerge.ps
>> 
>> The bad news is that's all hard-coded Postscript.  I'd like to take your suggestion and use PHP to loop-through and draw the barcodes - - - however, if I put anything that resembles PHP in my .ps file, bad things happen.
>> 
>> Anyone know the secret to creating a postscript .ps file that had PHP code injecting data into it?
>> 
>> Here's the source file that works.  Where PHP would be handy is at the very bottom of the script....
>> 
>> http://www.winecarepro.com/kiosk/fast/shell/barcodemerge.ps.zip
>> 
>> 
>> On Mar 23, 2010, at 7:48 AM, Richard Quadling wrote:
>> 
>>> On 23 March 2010 05:48, Jochem Maas <jochem@xxxxxxxxxxxxx> wrote:
>>>> Op 3/23/10 3:27 AM, Rob Gould schreef:
>>>>> I am trying to replicate the functionality that I see on this site:
>>>>> 
>>>>> http://blog.maniac.nl/webbased-pdf-lto-barcode-generator/
>>>>> 
>>>>> Notice after you hit SUBMIT QUERY, you get a PDF file with a page of barcodes.  That's _exactly_ what I'm after.
>>>>> Fortunately, the author gives step-by-step instructions on how to do this on this page:
>>>>> 
>>>>> http://blog.maniac.nl/2008/05/28/creating-lto-barcodes/
>>>>> 
>>>>> 
>>>>> So I've gotten through all the steps, and have created the "barcode_with_samples.ps" file, and have it hosted here:
>>>>> 
>>>>> http://www.winecarepro.com/kiosk/fast/shell/
>>>>> 
>>>>> Notice how the last few lines contain the shell-script that renders the postscript:
>>>>> 
>>>>> #!/bin/bash
>>>>> 
>>>>> BASE=”100″;
>>>>> NR=$BASE
>>>>> 
>>>>> for hor in 30 220 410
>>>>> do
>>>>> ver=740
>>>>> while [ $ver -ge 40 ];
>>>>> do
>>>>> printf -v FNR “(%06dL3)” $NR
>>>>> echo “$hor $ver moveto $FNR (includetext height=0.55) code39 barcode”
>>>>> let ver=$ver-70
>>>>> let NR=NR+1
>>>>> done
>>>>> done
>>>>> 
>>>>> 
>>>>> I need to somehow create a PHP script that "executes" this shell script.  And after doing some research, it sounds like
>>>>> I need to use the PHP exec command, so I do that with the following file:
>>>>> 
>>>>> http://www.winecarepro.com/kiosk/fast/shell/printbarcodes.php
>>>>> 
>>>>> Which has the following script:
>>>>> 
>>>>> <?php
>>>>> 
>>>>> $command="http://www.winecarepro.com/kiosk/fast/shell/barcode_with_sample.ps";;
>>>>> exec($command, $arr);
>>>>> 
>>>>> echo $arr;
>>>>> 
>>>>> ?>
>>>>> 
>>>>> 
>>>>> And, as you can see, nothing works.  I guess firstly, I'd like to know:
>>>>> 
>>>>> A)  Is this PHP exec call really the way to go with executing this shell script?  Is there a better way?  It seems to me like it's not really executing.
>>>> 
>>>> that's what exec() is for. $command need to contain a *local* path to the command in question, currently your
>>>> trying to pass a url to bash ... which obviously doesn't do much.
>>>> 
>>>> the shell script in question needs to have the executable bit set in order to run (either that or change to command to
>>>> run bash with your script as an argument)
>>>> 
>>>> I'd also suggest putting the shell script outside of your webroot, or at least in a directory that's not accessable
>>>> from the web.
>>>> 
>>>> --
>>>> PHP General Mailing List (http://www.php.net/)
>>>> To unsubscribe, visit: http://www.php.net/unsub.php
>>>> 
>>>> 
>>> 
>>> I think this is a translation of the script to PHP.
>>> 
>>> <?php
>>> $BASE = 100;
>>> $NR   = $BASE;
>>> 
>>> foreach(array(30, 220, 410) as $hor) {
>>>       $ver = 740;
>>>       while ($ver >= 40) {
>>>               printf("$hor $ver moveto (%06dL3) (includetext height=0.55) code39
>>> barcode\n", $NR);
>>>               $ver -= 70;
>>>               ++$NR;
>>>       }
>>> }
>>> 
>>> 
>>> 
>>> It produces output like ...
>>> 
>>> 30 740 moveto (000100L3) (includetext height=0.55) code39 barcode
>>> 30 670 moveto (000101L3) (includetext height=0.55) code39 barcode
>>> 30 600 moveto (000102L3) (includetext height=0.55) code39 barcode
>>> 30 530 moveto (000103L3) (includetext height=0.55) code39 barcode
>>> 30 460 moveto (000104L3) (includetext height=0.55) code39 barcode
>>> 30 390 moveto (000105L3) (includetext height=0.55) code39 barcode
>>> 30 320 moveto (000106L3) (includetext height=0.55) code39 barcode
>>> 30 250 moveto (000107L3) (includetext height=0.55) code39 barcode
>>> 30 180 moveto (000108L3) (includetext height=0.55) code39 barcode
>>> 30 110 moveto (000109L3) (includetext height=0.55) code39 barcode
>>> 30 40 moveto (000110L3) (includetext height=0.55) code39 barcode
>>> 220 740 moveto (000111L3) (includetext height=0.55) code39 barcode
>>> 220 670 moveto (000112L3) (includetext height=0.55) code39 barcode
>>> 220 600 moveto (000113L3) (includetext height=0.55) code39 barcode
>>> 220 530 moveto (000114L3) (includetext height=0.55) code39 barcode
>>> 220 460 moveto (000115L3) (includetext height=0.55) code39 barcode
>>> 220 390 moveto (000116L3) (includetext height=0.55) code39 barcode
>>> 220 320 moveto (000117L3) (includetext height=0.55) code39 barcode
>>> 220 250 moveto (000118L3) (includetext height=0.55) code39 barcode
>>> 220 180 moveto (000119L3) (includetext height=0.55) code39 barcode
>>> 220 110 moveto (000120L3) (includetext height=0.55) code39 barcode
>>> 220 40 moveto (000121L3) (includetext height=0.55) code39 barcode
>>> 410 740 moveto (000122L3) (includetext height=0.55) code39 barcode
>>> 410 670 moveto (000123L3) (includetext height=0.55) code39 barcode
>>> 410 600 moveto (000124L3) (includetext height=0.55) code39 barcode
>>> 410 530 moveto (000125L3) (includetext height=0.55) code39 barcode
>>> 410 460 moveto (000126L3) (includetext height=0.55) code39 barcode
>>> 410 390 moveto (000127L3) (includetext height=0.55) code39 barcode
>>> 410 320 moveto (000128L3) (includetext height=0.55) code39 barcode
>>> 410 250 moveto (000129L3) (includetext height=0.55) code39 barcode
>>> 410 180 moveto (000130L3) (includetext height=0.55) code39 barcode
>>> 410 110 moveto (000131L3) (includetext height=0.55) code39 barcode
>>> 410 40 moveto (000132L3) (includetext height=0.55) code39 barcode
>>> 
>>> 
>>> No idea if that is accurate or not. If you can run the script by hand
>>> once to confirm, then
>>> --
>>> -----
>>> Richard Quadling
>>> "Standing on the shoulders of some very clever giants!"
>>> EE : http://www.experts-exchange.com/M_248814.html
>>> EE4Free : http://www.experts-exchange.com/becomeAnExpert.jsp
>>> Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731
>>> ZOPA : http://uk.zopa.com/member/RQuadling
>> 
>> 
>> --
>> PHP General Mailing List (http://www.php.net/)
>> To unsubscribe, visit: http://www.php.net/unsub.php
>> 
>> 
> 
> 
> 
> -- 
> <hype>
> WWW: http://plphp.dk / http://plind.dk
> LinkedIn: http://www.linkedin.com/in/plind
> Flickr: http://www.flickr.com/photos/fake51
> BeWelcome: Fake51
> Couchsurfing: Fake51
> </hype>


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux