IRC Logs

Log of #ghostscript at irc.freenode.net.

Search:
 <<<Back 1 day (to 2016/06/12)20160613 
psmlbhor Hello. If I use Flate filter for encoding an image data, then is there any method by which a PS level 2 interpretor can decode it?06:00.57 
kens psmlbhor : Of course you can use Flate in a level 2 PostScript program. Since PostScript is a programming language, all you need to do is write a Flate decompressor in (level 2) PostScript.06:54.36 
  Its a simple matter of programming06:54.48 
psmlbhor kens, ok. That seems fair enough but a lot of work to do06:55.59 
kens Yes, and probably it won't be very fast either.06:56.17 
psmlbhor yes you are right. Thanks06:56.36 
Gaiseric_ Hello everyone - first time joining this channel! Two quick questions: I'm using gs with "-sDEVICE=pdfwrite" and "-dPDFA=2" with a few PDFs as input (one for each invokation of gs). (1) does "-dPDFA=2" guarantee PDF/A compliance, or it needs anything else? I'm using a few other options, is it possible that they would create non-compliant documents? Or would gs complain?07:11.51 
kens PDFA-2 does not guarantee a valid PDF/A file. Read the documentation in VectorDevices.htm for more detail07:12.31 
Gaiseric_ And (2) Sometimes gs fails to process its input. Can I convince gs to automatically delete those files? They are often missing pages etc. The failure doesn't bother me so much, as long as I don't end up with incomplete files and accidentally delete the originals!07:14.14 
kens Using other command line switches should not cause a problem, as any incompatible controls are disabled07:14.14 
Gaiseric_ kens: Thanks!07:14.19 
kens In answer to question 2, no, not without considerable work. You would eiother need to write some non-trivial code in PostScript or write some code to interface hrough the API and not use the default Ghostscript executable.07:16.15 
  If you set -dPDFSTOPONERROR and the input is PDF then you should not get an output file if an error occurs. The default for the PDF interpreter is to continue processing after an error, in order to miic the behaviour of Adobe Acrobat07:17.42 
Gaiseric_ I'm already using a Bash script, I guess I could check the return code and delete the file myself? I'll also try -dPDFSTOPONERROR, looks very useful.07:19.48 
  I'm already using a Bash script, I guess I could check the return code and delete the file myself? I'll also try -dPDFSTOPONERROR, looks very useful.07:20.09 
  BTW, the line I'm using is the following:07:20.42 
  gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite \07:20.44 
  -dPDFA=2 -dCompatibilityLevel=1.6 -dEmbedAllFonts=true -dSubsetFonts=true \07:20.44 
  -dCompressFonts=true -dCompressPages=true -dDetectDuplicateImages=true \07:20.47 
  -sOutputFile="${OUTDIR}/${NEWFILE}.pdf" "${INPUTFILE}"07:20.50 
kens If the input is PDF you will only get an error on sever cases, unless you set -dPDFSTOPONERROR but yes you can delete the files yourself07:20.51 
  You haven't supplied a pdfa_def.ps file, so at the very least you won't have an OLutputICCProfile, which is not legal for PDF/A07:21.28 
Gaiseric_ Yeah, I noticed (was reading the page you pointed me to), but I have no idea regarding ICC. (Not that it would matter in practice, the documents contain no colored images... but yeah)07:23.50 
  But the rest of the options shouldn't hurt, right?07:24.12 
kens No, shouldn't be any problem. But the ICC profile is a requirement of PDF/A07:24.33 
Gaiseric_ I see07:24.39 
kens Most of the options you have set are the default anyway07:24.53 
Gaiseric_ Thanks, you are very helpful :D07:25.23 
kens I think you will need to set a ColorConversionStrategy as well, in order to be certain that any RGB/CMYK data is properly converted to one of RGB or CMYK, and also to set the ProcessColorModel for other spaces07:25.56 
  Note that setting ColorConversionStrategy will set ProcessColorModel for you, you don;t need to do both.07:26.22 
Gaiseric_ This is getting scary, I might just drop PDF/A for now - after all, I got started with gs yesterday just to feed some nice files into my e-ink reader!07:27.59 
  However I've always wanted to know about PDF/A, so what you wrote will definitely be useful in the future :D07:28.49 
kens Its mostly not hard. PDF/A only supports colour dtaa in *either* RGB or CMYK, not both, so you have to decide which you want. Once you decide that, you supply either a CMYK or an RGB ICC Profile and that's pretty much it07:29.07 
  Ghostscript and the pdfwite device will take care of pretty much everything else for you, the only decision we can't make is which colour model to use.07:30.04 
Gaiseric_ I have to say, I'm quite impressed - I looks to be a super-powerful tool (the advantage of using a proper programming language as a format, I guess)07:31.39 
  Very nice project.07:31.48 
kens You are correct, using PostScript gets us some advantages, it does also have some disadvantages :-)07:32.11 
amrx What is the news ? What did I miss.07:32.32 
  PostScript, now I know the news.07:32.57 
Gaiseric_ kens: I'll give the ICC thing a try, and possibly return to bother you some more. Again, thank you very, very much :D07:33.14 
kens No problem07:33.26 
Gaiseric_ is seriously thinking that learning postscript some day would be a nice exposure to a different programming paradigm07:34.05 
halabund Is there anything I could do to make Ghostscript run faster on _very_ small PS or PDF documents (with PDF output)? Currently it runs in 0.08 seconds.08:31.01 
kens That's not really an easy question to answer, but given the time you are talking about, probably not. About the only thing you could do would be to set it up as a job server, so that it doesn't restart between jobs, which is likely to be where your time is going.08:32.00 
halabund I guess this is mostly just the startup time. I’m thinking along the lines of starting up once, and then processing multiple documents on demand. Is this possible at all, perhaps using Ghostscript as a library from C (if this is possible again)?08:32.14 
kens Yes to both08:32.29 
halabund OK, so the keyword to google for is “job server"?08:32.31 
kens It refers to the PostScript job server loop08:33.04 
  Which simply runs round a loop waiting for input, when it gets some it processes it.08:33.20 
  Given the way the pdfwrite device works, you start by setting up some *other* device, then as part of the job you switch to the pdfwrite device and configfure it, and run the job.08:34.11 
  When the job is complete you restore back to the job server loop, which unloads the pdfwrite device, causing it to flush its output.08:34.42 
  I'd suspect you would have to use the Ghostscript API to do this, or at least it would be easier to do so. Offhand I'm not sure how you would do it from the existing Ghostscript binary.08:36.04 
  I feel compelled at this juncture to point out the licence for Ghostscript, which is the AGPL. Creating a new C program which uses the Ghostscritp API will mean definitely you have to make your code available under the terms of the licence, or seek a commercial licence instead.08:37.35 
halabund I have no problem with *wanting* my code AGPL, but there is a little issue about whether I *can*. I must run but I’ll ask later ...08:43.02 
tor8 Robin_Watts: ping?09:09.00 
  regarding the TIFF loading; the xps tiff loader in XPS sets EarlyChange and FirstBitLowOrder for tiff version 5.009:13.35 
  I'm not sure we supported those for our LZW filter, but I know that sebras extended mupdf's LZW to support FirstBitLowOrder (a.k.a. reverse) for GIF support09:14.12 
  this deal with 1024 codes rather than 512; you sure you're not just seeing the effects of EarlyChange?09:15.05 
  because I see now that we don't do the test for tiff version in mupdf's tiff loader09:15.28 
Robin_Watts tor8: Hi.09:19.37 
  No, it's definitely not enough to do early change.09:19.55 
  In TIFF 6.0, you are required to send a CLEAR code as the next code when you hit the end of 12 bit codes.09:20.24 
  I have an example file where they continue to send new codes.09:20.37 
  (though obviously they are not used).09:20.46 
  Running yesterday, I thought of a nicer way of handling it than the 1024 extras.09:21.03 
  I'm going to try that now.09:21.06 
  So, by all means, please look at the commits on robin/master, but the TIFF one is subject to change.09:21.38 
tor8 Robin_Watts: I wonder ... we might be able to tweak our PAM output to be able to do MAXVAL 1 (instead of MAXVAL 255) and strip muraster down to only one output format09:34.44 
Robin_Watts tor8: Lots of pam readers don't support MAXVAL != 25509:35.05 
tor8 though I suspect the usefulness will drop radically, I wouldn't count on 1-bpc PAM support existing in any readers09:35.14 
  given how thin PAM support is in general09:35.24 
jogux welcome back tor8. not urgent but could you give an opinion on http://git.ghostscript.com/?p=user/joseph/mupdf.git;a=commitdiff;h=ea173763a01a64f082378bd319e549cff5693d52 when you have time please? the --gc-sections upset the OS X linker.09:40.46 
Robin_Watts Yeah, there is a bug open about that.09:42.40 
  (opened over the weekend by a user)09:42.51 
jogux Robin_Watts: ah, ta. I've updated the commit message to reference the bug number then: http://git.ghostscript.com/?p=user/joseph/mupdf.git;a=commitdiff;h=2777fb92d7f4a6617ba5d83868d8597b7bac346509:47.42 
tor8 jogux: LGTM09:48.27 
jogux great, thanks tor8!09:48.44 
daren hi everyone! may i ask you for some help? i've just downloaded a MuPDF from http://git.ghostscript.com/?p=user/robin/mupdf.git;a=tree and opened a Visual Studio project, that is included. the problem is - it won't build. i read a readme file, that had a note abound thirdparty libs, that should be present. i assume, this is the problem, why i get linker errors. but could anyone please clearify, if i should try and find things like 09:49.54 
  i've done something wrong already09:50.03 
Robin_Watts daren: You've used the 'snapshot' option there?09:50.19 
daren thank you in advance for you time09:50.19 
  yes09:50.24 
Robin_Watts That doesn't give you the thirdparty libs, which are git submodules.09:50.35 
  Instead, use git.09:50.44 
  git clone --recursive git://git.ghostscript.com/mupdf.git09:51.08 
kens On Windows, you will need to install Git first09:51.10 
daren Robin_Watts: ok, thanks09:51.11 
  yeah, i've used git before09:51.26 
kens Ah, No problem then09:51.33 
halabund kens: Regarding AGPL: What if my code compiles to a shared library which then gets loaded by a closed source application as a sort of “plugin”? I have no problem making my own code AGPL. But the closed source program is not mine and I have no control over it.10:15.11 
kens But, they would be required to abide by the AGPL (its viral in that sense)10:15.47 
  So they would have to publish their code, or get a commercial licence from us, *and* from you10:16.06 
halabund kens: To clarify: I am working on an (open source) Mathematica package. Mathematica is a closed source programming language. This would introduce a binary component into my package (which so far is pure interpreted Mathematica code and calls Ghostscript as a separate process).10:17.40 
  I don’t interact with the makers of Mathematica. I just made a package for personal use, which I then published as open source so others can use it, and now I’m trying to improve performance.10:18.23 
kens OK so in order to use GS you need to put your code under AGPL10:18.43 
halabund That’s not problem. It’s now MIT-licensed, it might as well be AGPL.10:19.02 
kens Now, if your code isd then called as a process by another application, that's 'probably' OK (caveat , I am not a lawyer, if in doubt you *must* seek expert legal opinion)10:19.32 
  If the other package links to your package (ie its not a process bu, sy10:19.48 
  say a shared object10:19.54 
  Then the package doing the linking must also be AGPL, or use a commercial licence10:20.18 
halabund Even if the other program is not distributed together with mine?10:20.31 
kens Well clearly the publishers of that package aren't resposible for what you add10:21.15 
Robin_Watts halabund: You'd clearly be fine if it was the LGPL.10:21.27 
kens But if anyone distributes the code, they havce to abide by the AGPL10:21.28 
  It sounds to me, in this case, that you are 'probably' OK, but I'm no expert10:22.05 
Robin_Watts And AIUI, the AGPL vs GPL differences make no odds in your case.10:22.07 
kens True10:22.13 
Robin_Watts So the question is is the GPL OK with your usage.10:22.17 
tor8 linking GPL code as a plugin to closed source applications is a bit of a gray area10:22.47 
  gnu.org makes the distinction between fork/exec type plugins (which they state is okay) and dynamically loaded code (which they state is not okay)10:23.53 
Robin_Watts so by that reckoning halabund is OK.10:24.14 
halabund Well, mine would be dynamically loaded …10:24.44 
tor8 halabund: since the ghostscript binary (which is what is covered by the GPL) is called by fork/exec all should be good. to play "nice" with the GPL, having *your* code be open source as well would be a nice display of good faith, IMO10:25.51 
Robin_Watts So not as a separate process then, as you said before?10:25.52 
halabund The host application has another API, so I have the option to make my “plugin” run in a separate process. But then the “plugin” would have to rely on a closed source shared library again. This shared library would never be distributed together with the plugin. It would be expected to be present on the users’ system. But it would definitely be required.10:25.54 
kens If you can make your code run as a process, then I believe there is no problem, if it is a .so then I think that could be problematic10:26.59 
tor8 halabund: gs <-(fork/exec)-> your plugin code <-(shared library)-> Mathematica is the architecture, as I understand it. correct me if I'm wrong.10:27.07 
  if it's gs <-(shared library)-10:27.24 
Robin_Watts tor8: AIUI, it's perfectly fine to have a bit of code as the plugin (either closed or open source), as long as all that does is call ghostscript as a separate process.10:27.27 
tor8 if it's libgs.so -(shared library)- your plugin + mathematica closed source library -(fork/exec)- mathematica, then that would not be okay10:28.08 
  Robin_Watts: yes, exactly.10:28.47 
  as long as 'gs' is in its own process, you're safe10:28.54 
Robin_Watts tor8: Updated commits on line.10:31.21 
halabund Right now I’m calling gs as a separate process. Earlier today I asked here if there is any way to reduce the latency of calls. Right now it takes 0.08 s, which seems short, but adds up … kens suggested to set Ghostscript up as a job server. My understanding was that this would require using it as a shared library, but it’s not clear yet10:31.33 
Robin_Watts halabund: No, you can still do that as a process.10:31.57 
halabund tor8: Are you the guy who made Gargoyle, the interactive fiction player? I had a lot of fun with that program many years ago :)10:32.01 
kens It ought to be possible to start a GS job servere process, send jobs to it, and shut it down, all from external input. But not (I htink) with the standard executable.10:33.09 
  The inter-process communication is the tricky part there, along with setting up the server loop, and configuring GS for each job10:33.57 
Robin_Watts kens: So driving it via stdin and stdout is not enough ?10:34.37 
tor8 halabund: yes, that was me! glad you enjoyed it :)10:34.53 
kens Robin_Watts : you would need some way to kill it, and to reconfigure it, because pdfwrite doesn't flush at the end of job10:35.30 
Robin_Watts kens: Can it be made to flush by feeding it appropriate PS commands ?10:35.58 
kens I guess you ocould do it with stdin, it would mean sending a deal of PostScript statup for each job10:36.14 
tor8 Robin_Watts: all but the TIFF stuff LGTM10:36.30 
kens You can close GS by sending 'quit'10:36.34 
tor8 Robin_Watts: the sgi stuff, is that from gs?10:36.39 
  Robin_Watts: there are some libmupdf.vcproj changes in the TIFF SGI LUV commit10:37.02 
Robin_Watts tor8: Yeah, stolen from libtiff (and bent into shape)10:37.06 
kens However, there is no way for a PostScript interpreter to know when a program finishes10:37.08 
  finishes input that is10:37.13 
  SO you need an EOJ token10:37.20 
Robin_Watts tor8: Yeah, 2 files swap order in the xml for some reason.10:37.20 
kens Normally that's a controlD (0x04) but I'm not certain if we actually process that.10:37.42 
tor8 Robin_Watts: I probably put them in the wrong alphabetic order when doing the original commit10:37.46 
kens Ray is the expert on running GS as a job server10:37.51 
tor8 Robin_Watts: it's got weird stuff with floating point constants10:38.13 
Robin_Watts tor8: Yeah, lifted from libtiff.10:38.27 
tor8 (float)0.228352 in the table ought to be 0.228352f10:38.29 
  and all the double constants should be 'f' suffixed10:38.38 
Robin_Watts ok.10:38.41 
tor8 at least that's what we do everywhere else to avoid double precision floating point math10:39.05 
kens OK according to the docs, if you specify -dJOBSERVER then you cna use 0x04 (control-D0 to start a new encapsulated job10:39.43 
tor8 Robin_Watts: the gxps code loads 5.0 tiffs with earlychange and reverse-bits but the muxps code doesn't ... or I'm being confused10:40.22 
Robin_Watts The gxps code loads 5.0 tiffs with early change and reverse-bits.10:40.53 
  This is enough to make 'some' 5.0 tiffs work.10:41.02 
  I have an example of a 5.0 tiff that this is not enough for.10:41.12 
  So I have just committed a fix to the gs code inspired by the code in libtiff to solve that.10:41.40 
tor8 Robin_Watts: okay. and libtiff uses this old_tiff flag hack?10:42.00 
kens SO what you woudl do is start GS with -dJOBSERVER then send each job to stdin,starting with PostScript to configure the device, and ending with a 0x04 to terminate it. To shut GS down you would send a 'quit', pssibly that would need to be preceded by 'serverdict begin 0 exitserver' to terminate the job server loop I beleive that should all work with the standard executable, at least on Lnux though I can't see a reason why it wo10:42.06 
  uldn't work on Windows. According to the docs, if you use -dJOBSERVER you *must* use stdin10:42.06 
Robin_Watts The same change, along with the earlychange/reversebits stuff is now in my commits for mupdf.10:42.12 
  No. libtiff doesn't differentiate between old and new style schemes.10:42.36 
tor8 Robin_Watts: ah, yes. now I see where you moved the old_style flag to fz_open_lzwd10:42.49 
Robin_Watts But I REALLY don't want to change the behaviour of lzw streams for PS/PDF etc.10:43.05 
tor8 s/old_style/old_tiff/ to stay consistent?10:43.17 
Robin_Watts hence I have a specific 'old_tiffs' flag to adjust behaviour.10:43.20 
tor8 otherwise, LGTM10:43.22 
Robin_Watts Sure.10:43.30 
tor8 Robin_Watts: yeah, changing slzwd for gs would be scary...10:44.03 
Robin_Watts tor8: I've just done that, but behaviour should be identical when that flag isn't set.10:44.42 
tor8 for mupdf we could change the behaviour and test and see; but going with the extra flag is probably safer10:44.44 
Robin_Watts For gs, you could write a postscript program that relied on the behaviour of the failure being in spec.10:49.00 
  tor8: Updated tiff commits to address your concerns.11:21.42 
  tor8: I want to do some more work on muraster.12:12.55 
  I'd like to remove a load of command line flags.12:13.07 
  and have more #defines.12:13.18 
  If you're setting up a printer, you probably don't want to be able to define stuff on the command line.12:13.43 
  I'd like to have #defines for: 1) the maximum amount of memory in your system (which will be used to set the max store size).12:14.34 
  2) The number of cores in your CPU (which will be used for render threads).12:14.45 
  3) The minimum number of rows to use for banding (the number of nozzles in your ink head).12:15.11 
  Then have the code try to print as best it can based on those variables.12:16.22 
  oh, and also 4) The maximum resolution to use, 5) the maximum printable width supported.12:17.04 
  We'd calculate band sizes to be a multiple of the minimum size.12:17.34 
  We'd aim for (say) 1/8th of the memory to be used for band buffers (divided between render threads).12:18.04 
  then if we run out of memory drop back to single threaded rendering, then smaller band buffers, then reinterpreting the file to minimal buffers to avoid the display list overhead as required.12:18.51 
tor8 Robin_Watts: okay. can we make the #defines use functions that return actual true values on linux/windows?12:22.13 
  and pick a reasonably large defaults for 3, 4, and 512:22.44 
Robin_Watts Possibly. Not sure how I'd implement that.12:22.48 
  The point of muraster is to give potential customers something they can just 'configure and go'.12:23.11 
tor8 on linux there's /proc/cpuinfo and /proc/meminfo12:23.16 
Robin_Watts Right, except if I was building a printer based on linux, I might miss out /proc from the kernel for space reasons - you can do that, right?12:24.07 
  but yes, in the absence of a #define I could read from there.12:24.56 
tor8 Robin_Watts: not sure, I think a lot of system tools depend on /proc/* stuff being there12:25.34 
  of course, on *BSD I wouldn't count on /proc12:25.53 
malc_ Robin_Watts: man 3 get_nprocs (that said the get_nprocs implementation might itself depend on presence of procfs)12:30.52 
tor8 Robin_Watts: malc_: in the absence of procfs, it's perfectly possible for an integrator to just put a text file with the desired values in /proc/cpuinf12:33.37 
malc_ tor8: yes, you are in a lucky position of actually having some sort of control of the installation site12:36.17 
Robin_Watts I still reckon I prefer the idea of allowing integrators to tune it directly.12:37.37 
tor8 Robin_Watts: of course. #ifndef MURASTER_CPU_COUNT etc12:38.41 
ts1690 hey again peeps, am trying to compile mupdf in windows 7 64 bit in vs 2012. any suggestions, getting a number of warnings which should be ok eg size_t to int but specifically getting final link errors relating to no libfonts.lib, so i looked and it hasnt created an x64 platform for that project but has for the rest except also jni too. any ideas?13:04.23 
  ok think have sorted it. it wouldnt let me add x64 to project becase 'create new platform' was ticked too13:15.50 
  @ Robin & ray: some things I had to do to make it compile x64 on windows vs2012: 13:37.07 
  1. libfonts and jni didnt have x64 platform options so i added them under build configuration also generated was set to win32 so changed it to x64. 13:37.16 
  2. mutool couldn't find mujs.h because it needed additiona include directory ;..\..\thirdparty\mujs13:37.19 
Robin_Watts jni doesn't matter. Nor does generated.13:37.34 
  nor does libfonts.13:37.40 
  mutool change is required though, thanks.13:37.56 
ts1690 oki was just fyi13:37.59 
  ;)13:38.04 
Robin_Watts Appreciated.13:38.09 
ts1690 please thanks for writing the best pdf lib out there!13:38.29 
  pleasure*13:38.36 
  ciao for now13:38.43 
  \o13:38.45 
rayjj Robin_Watts: muraster doesn't need to pre-define the band size when creating the display list, right? (as gs does)15:03.24 
Robin_Watts rayjj: Indeed not.15:03.37 
  In mupdf the display list is resolution independent.15:03.58 
rayjj so why limit the band size to 1/8 the memory -- that seems like it would lead to small bands15:03.59 
Robin_Watts rayjj: Well, the competing things for memory are:15:04.19 
  1) The file itself.15:04.25 
  2) The structure of the file that we load into mupdf.15:04.49 
  3) The resources (images/fonts/etc) that we decode from that file.15:05.06 
  4) The display lists.15:05.12 
  5) The rendered bands.15:05.26 
rayjj and for a "real" printer, it would be nice to be able to tell muraster the available memory when starting a job, since diskless printers may have the PDF in RAM (which varies the amount left for muraster)15:05.28 
  Robin_Watts: so the biggest rather unpredictable thing is fonts or images that get loaded from the file whilst processing into a band15:06.43 
Robin_Watts 6) Transparency buffers.15:06.59 
  Yes.15:07.05 
rayjj oh, yeah -- transparency buffers are a big "gotcha"15:07.22 
Robin_Watts Hence I'm trying to aim for a system that falls back gracefully to smaller and smaller bands, and will eventually abandon bgprint/num render threads and even display lists in order to get a print out.15:08.15 
rayjj I assume you don't pre-scan for transparency buffer depth or colorspace15:08.56 
Robin_Watts It's all very well us telling customers "Sure, MuPDF can cope, you just need to drive it cleverly". The aim here is to give them something that has the cleverness in, and that should be close to being what they need.15:09.31 
  In muPDF all transparency is rgb.15:09.47 
rayjj Robin_Watts: I'd recommend falling back from multiple render threads BEFORE changing band size since the band you need next might fit15:09.48 
Robin_Watts rayjj: Yeah.15:10.03 
  I plan to drop bgprint first, then num render threads, then shrink the band height. And only if the band height hits the minimum will I ditch the display list.15:10.53 
rayjj Robin_Watts: yes, more like gs that hides some of the complexity (falling back on band size and multiple threads). Of course, gs is somewhat more predictable during rendering15:11.38 
Robin_Watts gs is more predictable for things like images because it (by and large) decodes them line by line.15:12.17 
rayjj ditch the display list and render into a minimal band directly from the input file, rihgt15:12.22 
Robin_Watts but for stuff like jpx it doesn't.15:12.25 
  And even then predictability goes out the window if you set flatness down and start stroking wide curves.15:13.13 
rayjj but rendering stage from the display list is never from the original (compressed) image, so JPX/JPEG etc. is during parsing15:13.23 
Robin_Watts so no solution is perfect.15:13.30 
  rayjj: jpx images never make it into the clist?15:13.57 
rayjj compared to transparency buffers, paths are not a proble,15:14.02 
  Robin_Watts: right -- gs clist has simple images, not the original15:14.31 
Robin_Watts rayjj: Right, so clists can be huge then.15:14.57 
rayjj Robin_Watts: yeah, but we can dynamically fall back to compressing the clist15:15.40 
Robin_Watts losslessly recompressing jpegs will never get you the space back.15:16.06 
rayjj and then if the compressed clist fails, we can fall back to banding from the input PDF15:16.07 
Robin_Watts rayjj: Right, but gs doesn't currently do that fallback, right?15:16.22 
  Like I say, no single approach here is perfect in all circumstances.15:16.38 
rayjj (that last is *not* in standard code, but a big printer customer uses what I wrote for them to do that)15:16.49 
  cust 532 (we aren't on #artifex)15:17.14 
  I should probably put "pdfband.ps" into lib with a write up on using it15:18.03 
  Robin_Watts: it is hard to anticipate all needs, but it sounds like you have a reasonable set of "automagic" features15:19.16 
  ISTM that pre-scanning to see if the PDF uses transparency (as gs does) would be fairly easy and helpful in guessing the band size15:20.19 
Robin_Watts We have a function to do that.15:22.12 
  I think gs divides the bandheight by 3 or something ?15:22.30 
  (in the presence of transparency)15:22.46 
  rayjj: I'm not imagining that I'll get this perfect first time, so we can tweak it.15:23.12 
 Forward 1 day (to 2016/06/14)>>> 
ghostscript.com
Search: