octave-maintainers
[Top][All Lists]
Advanced

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

Re: fltk printing


From: Ben Abbott
Subject: Re: fltk printing
Date: Sat, 07 Aug 2010 14:26:19 -0400

On Aug 7, 2010, at 2:08 PM, Shai Ayal wrote:

> On Sat, Aug 7, 2010 at 8:45 PM, Ben Abbott <address@hidden> wrote:
>> 
>> On Aug 6, 2010, at 10:02 PM, Michael D Godfrey wrote:
>> 
>>> On 08/06/2010 06:53 PM, Ben Abbott wrote:
>>>> 
>>> 
>>>> On Aug 6, 2010, at 6:30 PM, Michael D Godfrey wrote:
>>>> 
>>>>> On 06 Aug, 2010,at 04:29 PM, bpabbott <address@hidden> wrote:
>>>>> 
>>>>>> On 06 Aug, 2010,at 12:43 PM, Michael D Godfrey <address@hidden> wrote:
>>>>>> 
>>>>>>> The last changeset mainly works well, but I got the following:
>>>>>>> 
>>>>>>> octave:3> print test.pdf
>>>>>>> GPL Ghostscript 8.71: Unrecoverable error, exit code 1
>>>>>>> warning: print.m: ghostscript failed to convert output to file 
>>>>>>> 'test.pdf'.
>>>>>>> No such file or directory
>>>>>>> warning: print.m: failed to delete temporay file, '/tmp/oct-v6IZoF.eps'.
>>>>>>> octave:4> refresh
>>>>>>> octave:5> print('test.pdf', '-color');
>>>>>>> octave:6> quit
>>>>>>> ========================
>>>>>>> The print('test.pdf','-color');  produced correct output, but the output
>>>>>>> from print test.pdf was a blank page.  Previously,
>>>>>>> print test.pdf  (or test.ps, since before the latest updates pdf was
>>>>>>> not implemented)  worked as expected.  Now, print test.ps also
>>>>>>> fails just like print test.pdf
>>>>>>> 
>>>>>>> Also, as an even more minor point, in the line:
>>>>>>> warning: print.m: failed to delete temporay file, '/tmp/oct-v6IZoF.eps'
>>>>>>> 
>>>>>>> temporay should be temporary.
>>>>>>> 
>>>>>>> Michael
>>>>>> 
>>>>>> I'm not able to reproduce your result. Please try the example below. 
>>>>>> I've attached the resulting pdf.
>>>>>> 
>>>>>> octave:84> close all
>>>>>> octave:85> plot (1:10)
>>>>>> octave:86> print test.pdf -debug
>>>>>> ---- begin /var/tmp/oct-UhqG3X.ps ----
>>>>>> %!PS-Adobe-3.0
>>>>>> << /Margins [0 0] /.HWMargins [0 0 0 0] /PageOffset [18 180] >> 
>>>>>> setpagedevice
>>>>>> %EOF
>>>>>> ----- end /var/tmp/oct-UhqG3X.ps -----
>>>>>> Ghostscript command: /sw/bin/gs -dQUIET -dNOPAUSE -dBATCH -dSAFER 
>>>>>> -sDEVICE=pdfwrite -dEmbedAllFonts=true -dOptimize=true 
>>>>>> -sPAPERSIZE=letter -dFIXEDMEDIA -sOutputFile=test.pdf 
>>>>>> /var/tmp/oct-UhqG3X.ps /var/tmp/oct-XcT2VQeps
>>>>>> 
>>>>>> My ghostscript version is ...
>>>>>> 
>>>>>> $ gs -v
>>>>>> GPL Ghostscript 8.61 (2007-11-21)
>>>>>> Copyright (C) 2007 Artifex Software, Inc.  All rights reserved.
>>>>>> 
>>>>>> Ben
>>>>>> 
>>>>> Ben,
>>>>> 
>>>>> You asked for:
>>>>> 
>>>>> [qss:octave] gs -v
>>>>> GPL Ghostscript 8.71 (2010-02-10)
>>>>> Copyright (C) 2010 Artifex Software, Inc.  All rights reserved.
>>>>> 
>>>>> octave:1> plot(1:10)
>>>>> octave:2> print test.pdf -debug
>>>>> GPL Ghostscript 8.71: Unrecoverable error, exit code 1
>>>>> ---- begin /tmp/oct-q2Hi98.ps ----
>>>>> %!PS-Adobe-3.0
>>>>> << /Margins [0 0] /.HWMargins [0 0 0 0] /PageOffset [18 180] >> 
>>>>> setpagedevice
>>>>> %EOF
>>>>> ----- end /tmp/oct-q2Hi98.ps -----
>>>>> Ghostscript command: /usr/bin/gs -dQUIET -dNOPAUSE -dBATCH -dSAFER 
>>>>> -sDEVICE=pdfwrite -dEmbedAllFonts=true -dOptimize=true -sPAPERSIZE=letter 
>>>>> -dFIXEDMEDIA -sOutputFile=test.pdf /tmp/oct-q2Hi98.ps /tmp/oct-qAirIj.eps
>>>>> warning: print.m: ghostscript failed to convert output to file 'test.pdf'.
>>>>> No such file or directory
>>>>> warning: print.m: failed to delete temporay file, '/tmp/oct-qAirIj.eps'.
>>>>> octave:3>
>>>>> But, in /tmp are:
>>>>> -rw-rw-r-- 1 godfrey godfrey   97 Aug  6 15:03 /tmp/oct-q2Hi98.ps
>>>>> -rw-rw-r-- 1 godfrey godfrey 6308 Aug  6 15:03 /tmp/oct-qAirIj.eps
>>>>> 
>>>>> And, if I run the gs command after exiting Octave, it runs and produces 
>>>>> the intended test.pdf.
>>>>> And, the file Aug  6 15:03 /tmp/oct-qAirIj.eps is still in /tmp.
>>>>> 
>>>>> And, in Octave, I tried:
>>>>> octave:2> system('gs -dQUIET -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pdfwrite 
>>>>> -dEmbedAllFonts=true -dOptimize=true -sPAPERSIZE=letter -dFIXEDMEDIA 
>>>>> -sOutputFile=test.pdf /tmp/oct-q2Hi98.ps /tmp/oct-qAirIj.eps')
>>>>> ans = 0
>>>>> And, the expected test.pdf was created.
>>>>> 
>>>>> So, I do not know what has gone wrong.  Remember also that 
>>>>> print('test.pdf') works fine.
>>>>> 
>>>>> Anything more I can provide?
>>>>> 
>>>>> Michael
>>>> 
>>>> It looks like the eps file isn't recognized as existing when ghostscript 
>>>> is called ... and still isn't recognized when unlinked.
>>>> 
>>>> Please check that the file is present by adding "dir 
>>>> (opts.ghostscript.source)" to __fltk_print__.m in the position indicated 
>>>> below.
>>>> 
>>>>  case {"ps", "ps2", "psc", "psc2", "pdf"}
>>>>    opts.ghostscript.source = strcat (tmpnam (), ".eps");
>>>>    file2unlink = opts.ghostscript.source;
>>>>    if (strcmp (opts.devopt, "pdf"))
>>>>      opts.ghostscript.device = "pdfwrite";
>>>>    else
>>>>      opts.ghostscript.device = "pswrite";
>>>>    endif
>>>>    opts.ghostscript.output = opts.name;
>>>>    drawnow ("eps", opts.ghostscript.source);
>>>>    dir (opts.ghostscript.source)
>>>>    if (opts.tight_flag)
>>>>      __tight_eps_bbox__ (opts, opts.ghostscript.source);
>>>>    endif
>>>> 
>>>> Now if you try "print test.pdf", does the dir() command indicate the eps 
>>>> file exists?
>>>> 
>>>> Ben
>>> 
>>> This is likely an important point.  I think that (system(...) returns when 
>>> the call (gs)
>>> thinks it is done.  That is not the same as the files have actually been 
>>> written.  My systems
>>> NFS mount from a server, so files actually showing up can be delayed.
>>> 
>>> I will try your suggestion when I can.  In any case, it will likely be a 
>>> good idea to wait
>>> until the files generated by gs actually show up before trying to use them.
>>> 
>>> Think a bit about why, under the same conditions, print('test.pdf'),  
>>> always works.
>>> 
>>> Michael
>> 
>> Michael, I'm surprised the temp files are on a server? Does tmpnam() 
>> actually return a file to be opened on a server?
>> 
>> In either event, it does appear to be a synchronization / timing problem.
>> 
>> Reading through the Matlab docs, if new files are created programmatically 
>> they will not be seen by Matlab until the next command prompt. To overcome 
>> this "rehash()" should be run. I'm not familiar with what Octave does in 
>> this case, but it looks quite similar.
>> 
>> Explicitly updating the path looks like a better solution than using a 
>> while-loop and waiting until Octave sees the file.
>> 
>> Shai, Is "rehash" implicit when "drawnow ("eps", opts.name)" is called? .,, 
>> should it be?
> 
> Are you sure rehash is the correct command to use? from the help text
> it "Reinitializes Octave's load path directory cache". Why is this
> connected to the file appearing in octave?
> 
> Shai

The texinfo for rehash didn't help me understand much. So, I checked the ML 
documentation ... I assumed that the Octave and ML command are compatible.

>> help rehash
 REHASH  Refresh function and file system caches.
    REHASH with no inputs performs the same refresh operations that are done
    each time the MATLAB prompt is displayed--namely, for any non-toolbox
    directories on the path, the list of known files is updated, the list of
    known classes is revised, and the timestamps of loaded functions are
    checked against the files on disk.  The only time one should need to use
    this form is when writing out files programmatically and expecting
    MATLAB to find them before reaching the next MATLAB prompt.

Ben



reply via email to

[Prev in Thread] Current Thread [Next in Thread]