Re: PHP to access shell script to print barcodes

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

 



The problem you're getting is that your web-server interprets the
request as a request for a normal file and just sends it - in effect,
you're not outputting the postscript file, you're just sending the
.php file. Normally, you'll only get your php executed if the file
requested is a .php or .phtml - unless you've changed your server
config.

Try creating a serveps.php that uses the header("Content-Disposition:
attachment; filename: 'serveps.ps'") instead, see if that helps you.

Regards

On 24 March 2010 06:09, Rob Gould <gouldimg@xxxxxx> wrote:
> 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>
>
>



-- 
<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