| <<<Back 1 day (to 2015/05/20) | 20150521 |
rayjj | is ghostbot working, or has it really been that quiet ? | 13:44.30 |
kens | Its been that quiet | 13:44.37 |
rayjj | morning, kens | 13:44.44 |
kens | Morning rayjj | 13:44.50 |
rayjj | I hesitated before commenting to jogux about the icon artwork. Now that you have jumped in as well, we are both in jeopardy of being sucked into the SOT black hole. | 13:45.53 |
kens | Only as far as a .ai file | 13:46.05 |
rayjj | kens: I hadn't read your reply to joseph, but I agree that AFAIK, PDF is how AI stores the graphics. | 13:47.07 |
kens | Actually it does (or can) store the Illustrator file int eh PDF in addition to a PDF representation of the content | 13:47.43 |
| Which is one reason that if you run it through GS+pdfwrite, the resulting PDF is a lot smaller.... | 13:48.07 |
Robin_Watts | Windows users may be interested in: http://mridgers.github.io/clink/ | 14:35.50 |
mvrhel_laptop | cool | 14:45.51 |
kens | rayjj form a conversation I just had on SO its clear that Illustartor still doesn't use PDF as its real file format. It stores the real file inside the PDF, and if you open a PDF saved by Illutrator is uses that as the actual file it opens. While it can open PDF files, it is not 100% accurate about it. | 16:06.18 |
bkboggy | Do any of you guys know if I am able to use ghostscript in a .NET application without installing it on the client machine? | 16:35.29 |
rayjj | kens: I guess I'm not surprised | 16:35.38 |
| bkboggy: I doubt it. You'd need a server SaaS ghostscript running somewhere and the client machine would (of course) have to be online to access the cloud service. Note that using Ghostscript on a cloud based server is still restricted by the AGPL | 16:37.29 |
Robin_Watts | bkboggy: What do you mean by "the client machine" ? | 16:38.05 |
rayjj | bkboggy: and sending data up to gs on the cloud and getting results back could be cumbersome | 16:38.07 |
bkboggy | Robin_Watts, exactly that, client machine. | 16:38.16 |
| rayjj, I don't have cloud environment in my mind. | 16:38.45 |
Robin_Watts | bkboggy: You want the .net application to run on the client machine ? | 16:38.57 |
bkboggy | More of, I need to distribute a .NET application, I want to use ghostscript for pdf printing... can't install it on client. | 16:39.00 |
| Hmm, found Ghostscript.NET... see if that works.. | 16:40.00 |
Robin_Watts | bkboggy: So you've got a .net application that you want to call gs. You want to distribute that to people for them to run on their machines. You want that to call gs, but you don't want to have to have gs on the client machine? | 16:40.14 |
bkboggy | Robin_Watts, not in a traditional installed manner, no. | 16:40.34 |
Robin_Watts | Ah, you mean you want a portable gs? | 16:40.46 |
bkboggy | Correct. | 16:40.53 |
Robin_Watts | It is certainly possible to have gs work without being installed. | 16:41.06 |
rayjj | bkboggy: the Ghostscript.NET requires the gsdll##.dll | 16:41.13 |
Robin_Watts | BUT... the big problem you have there is licensing. | 16:41.13 |
bkboggy | What's the issue? | 16:41.21 |
rayjj | where ## is 32 or 64 | 16:41.25 |
Robin_Watts | bkboggy: We supply gs under 2 licenses. | 16:41.39 |
| The first one is the GNU AGPL. | 16:41.45 |
bkboggy | Shouldn't that be fine? | 16:41.51 |
| It's for an in-house enterprise application, so I'm not redistributing it commercially. | 16:42.52 |
Robin_Watts | Ah. In the absence of distribution, the AGPL is fine. | 16:43.27 |
rayjj | bkboggy: it depends on what you mean by 'installed'. For the .NET app, the DLL needs to be somewhere on the client machine that can be accessed by the .NET app | 16:43.33 |
bkboggy | rayjj, right, dll is fine. | 16:43.50 |
| That's portable. | 16:43.54 |
Robin_Watts | bkboggy: If you are using gs as part of your enterprise application, you should probably consider a support contract from Artifex. | 16:44.27 |
bkboggy | Robin_Watts, if I had the funds. | 16:44.52 |
rayjj | bkboggy: so all you want to skip is the .exe 'installation' ? That doesn't do a whole lot more than put the DLL and other files on the client machine, which you will have to do anyway] | 16:45.20 |
bkboggy | Robin_Watts, you mentioned a portable library, do you know of one? I'm eyeballing GS.NET, after I finish my food. | 16:45.23 |
| rayjj, well, some setups also register in the registry and add global path values... I'm trying to avoid all that. | 16:45.57 |
rayjj | bkboggy: GS.NET is not from us (Artifex). Where are you looking ? | 16:46.04 |
chrisl | rayjj: the installer fusses with the registry, which is probably the issue | 16:46.10 |
bkboggy | rayjj, https://ghostscriptnet.codeplex.com/ | 16:46.39 |
Robin_Watts | bkboggy: The development and maintenance of gs is paid for by commercial licenses, or support contracts. If you don't have funds, then you are absolutely entitled to use GS under the GNU AGPL. | 16:46.57 |
chrisl | bkboggy: you'd be better asking the developer of ghostscript.net | 16:47.15 |
rayjj | the Artifex installer doesn't add to the path, afaik, but it does put keys in the registry and add to the programs list (so it can be uninstalled) | 16:47.21 |
Robin_Watts | You'll find that the developers here (whose livelihoods depend on such income) are slightly less keen on supporting people who choose not to support them :) | 16:47.41 |
bkboggy | Robin_Watts, I definitely understand. I'm not in the position to allocate any funds anywhere... For the past two years I've been working as the developer here I either had to find a free solution or make it myself. Zero funds were invested beyond my paycheck. | 16:47.47 |
| chrisl, I just came across it, while asking questions here/. | 16:48.04 |
Robin_Watts | bkboggy: Sure. Good luck. | 16:48.12 |
bkboggy | Didn't look at it yet. | 16:48.12 |
chrisl | bkboggy: the developer of ghostscript.NET is a helpful guy | 16:49.21 |
bkboggy | chrisl, awesome! I didn't know these two were separate (I thought they wrapped around your library). | 16:49.56 |
chrisl | bkboggy: it is exactly that, a .NET layer over Ghostscript, but it wasn't developed by us | 16:50.25 |
bkboggy | chrisl, gotcha. | 16:50.41 |
chrisl | FWIW, I believe you should be able to use just the Ghostscript DLL, as long as you make sure the .NET stuff knows where to find it, but I don't know for sure | 16:51.25 |
rayjj | bkboggy: that .NET example doesn't include gsdll##.DLL, so you'd need to install it yourself where your .NET can find it. Sprcifically, from looking at the XML, you need to have it where <param name="dllPath">Ghostscript native library path.</param> says it is. | 16:51.28 |
bkboggy | I wish we'd live 5-10 years from now, so that I don't even have to use any libraries. Some of our printers support Direct Print PDF and some don't, so... yep. | 16:51.41 |
| chrisl, thanks, I'll give that a try. | 16:52.09 |
rayjj | bkboggy: yeah, we are working to get gs or mupdf into more printers so they can print PDF directly. | 16:52.27 |
bkboggy | rayjj, oh, thanks for the heads up. | 16:52.38 |
rayjj | (and so we can make $$$ on the license) :-) | 16:52.44 |
bkboggy | rayjj, really? gs into printers? wow | 16:52.51 |
chrisl | FWIW, I do have an update to the installer which, amongst other things, includes an "extract only" type "install", but it's still a work in progress | 16:52.56 |
| bkboggy: well, how do you think printers handle Postscript and PDF?? | 16:53.14 |
bkboggy | chrisl, nice. That's definitely a good option for developers. | 16:53.17 |
| chrisl, no idea. I'm new to the world of printing. | 16:53.29 |
| Interesting fact though.. | 16:53.34 |
Robin_Watts | chrisl: I think the standard build will look at GS_LIB and the registry entries. | 16:53.43 |
bkboggy | My wife's uncle invented the spooling system. | 16:53.43 |
| He's insainly rich. | 16:53.50 |
chrisl | Robin_Watts: So? | 16:53.58 |
Robin_Watts | so it's not portable. | 16:54.04 |
chrisl | It doesn't collapse in a heap if those values aren't there | 16:54.31 |
Robin_Watts | If someone installs GS onto the system or resets variables etc, the bundled gsdll will start to behave differently. | 16:54.32 |
chrisl | Well, that's tough..... | 16:54.44 |
rayjj | bkboggy: yeah, it's the PDF interpreter on all Kyocera printers and a few others: see: http://artifex.com/page/printer-products.html | 16:54.59 |
Robin_Watts | portable is not just "doesn't need variables set" it's "should behave the same when such values are set to different values". | 16:55.10 |
bkboggy | rayjj, nice | 16:55.23 |
| rayjj, all printers should have that sort of capability... heck, the hardware can easily support it. | 16:55.47 |
rayjj | bkboggy: not all of those use our PDF or PS. At least one just uses our PCL6 | 16:55.48 |
bkboggy | My $300 brother office printer directly prints everything I've sent to it thus far. | 16:55.58 |
chrisl | Robin_Watts: there's only so much we can do with a binary distro | 16:56.05 |
rayjj | bkboggy: actually, shoehorning a PDF renderer into a low end inkjet can be problematic. For higher end printers, I agree | 16:56.29 |
| bkboggy: $300 is not low end anymore. $49 is the low-end for inkjets, and a $99 inkjet is often a 'multifunction' with a scanner | 16:58.03 |
bkboggy | rayjj, ah, mine is laser | 16:58.22 |
| high output, etc | 16:58.32 |
rayjj | bkboggy: Monochrome, right ? | 16:58.44 |
bkboggy | no | 16:58.50 |
| color | 16:58.51 |
| HL-4570CDW | 16:59.21 |
rayjj | Oh, I didn't know brother made a color laser in that price range. I have a Samsung color laser that was about $250 | 16:59.36 |
| and it has PS + PDF + PCL6 | 16:59.56 |
bkboggy | Yeah, this printer is pretty sweet... WiFi, direct prints everything thus far... no issues after 3 years of heavy use. | 17:00.20 |
Robin_Watts | Interesting. At some point I'm going to have to replace my aging HP5L. | 17:00.31 |
bkboggy | It's a large machine, by home office standards... but I don't mind. | 17:01.11 |
rayjj | Robin_Watts: yeah, send it to henry for PCL compatibilty testing :-) | 17:01.14 |
| The Samsung is fairly compact -- not much larger than the Epson Workforce multifunction inkjet I used to have | 17:01.57 |
bkboggy | Alright fellas, I'll see you later. Have to go to a meeting. :/ | 17:02.05 |
Robin_Watts | rayjj: This thing is 20 years old. I think it deserves a viking funeral. | 17:02.07 |
sebras | tor8: if I opt to render all the frames in a gif then there is no longer any option of using an indexed colorspace, unless I combine the global color table and each frame's color table. | 18:38.03 |
| tor8: and translate the color indicies for each pixel for all frames except the first one. | 18:38.38 |
Robin_Watts | sebras: eh? If you're creating a gif, then you only ever get to use an indexed colorspace. | 18:38.52 |
| gifs have a 256 color palette. | 18:39.03 |
sebras | Robin_Watts: no, gifs have a 256 color palette per frame (and possibly a global one) | 18:39.21 |
| Robin_Watts: https://en.wikipedia.org/wiki/GIF#True_color | 18:39.46 |
Robin_Watts | Right, so they have (potentially) a different image palette per frame. | 18:40.00 |
sebras | Robin_Watts: exactly. | 18:40.08 |
| Robin_Watts: so _yes_ it would technically still be indexed but the palette indicies would be all wrong. | 18:40.28 |
| Robin_Watts: which would require translation and supporting this true color hack seems unnecessary for epub. | 18:41.02 |
Robin_Watts | sebras: Right. | 18:41.08 |
| sebras: Actually, it's easy for us to do, I think. | 18:41.24 |
sebras | Robin_Watts: I have a commit sitting on sebras/master where I have gif support. | 18:41.54 |
Robin_Watts | Any gif with more than 1 palette would have to be a truecolor one. i.e. we'd decode to 888 rather than to an indexed color space. | 18:42.19 |
| which is what you said to start with. Right :) | 18:42.31 |
sebras | Robin_Watts: I'm aiming to clean it up, but today I attended a family funeral. | 18:42.33 |
| Robin_Watts: so I'll get back to it and fix it at some later point. | 18:48.09 |
Robin_Watts | sebras: Tor is off on sabbatical from next friday. | 18:50.55 |
| So if you don't get it in before then, prod me and I'll look at it. | 18:51.15 |
sebras | Robin_Watts: (or pester tor8 to make a single commit while on sabbatical..... >;-) ) | 18:51.51 |
Robin_Watts | yeah, I'm sure he'll be doing some stuff. | 18:52.22 |
sebras | Robin_Watts: I'll make sure it gets merged at some point. | 18:52.25 |
Robin_Watts | sounds like a useful addition. | 18:52.37 |
bkboggy | guys, i can't find -empty switch @http://ghostscript.com/doc/7.07/Use.htm#X_device_parameters what does it mean? | 22:37.28 |
rayjj | bkboggy: 7.07 is some REALLY OLD obsolete version. | 23:38.27 |
bkboggy | oh.. didn't notice that | 23:39.22 |
| can't find it in 9.16 either | 23:40.04 |
rayjj | The current X11 options (such as they are) would be in http://www.ghostscript.com/doc/current/Devices.htm#x11_devices | 23:40.09 |
bkboggy | -empty is not there | 23:40.31 |
rayjj | some time ago we re-organized the docs to put device specific stuff (mostly, prone to human frailty) in that | 23:40.45 |
bkboggy | do you know what empty is? | 23:41.01 |
rayjj | bkboggy: never heard of -empty and I've been working with gs for > 20 years | 23:41.15 |
bkboggy | it's one of the switches used during printing in the code snippet i found all over the web | 23:41.18 |
| sec | 23:41.26 |
rayjj | it's probably (just a guess) a switch/option for some gs pre-processor | 23:41.51 |
bkboggy | hmm, you know what, that's ghostscript.net snippet | 23:42.46 |
| maybe you're right, it's probably something for the wrapper | 23:42.54 |
| https://github.com/jhabjan/Ghostscript.NET/blob/master/Ghostscript.NET.Samples/Samples/SendToPrinterSample.cs | 23:43.42 |
| first switch | 23:43.44 |
rayjj | bkboggy: you'd have to know what processor.StartProcessing is | 23:46.43 |
| bkboggy: if you send that to Ghostscript, you would get: Unknown switch -empty - ignoring | 23:47.53 |
| (see psi/imainarg.c for the option switch processing) | 23:48.23 |
bkboggy | So it ignores a switch if unknown? | 23:48.29 |
| Without exception? | 23:48.37 |
rayjj | there is -E but that enables error logging (and gs switches are case sensitive) | 23:49.54 |
sebras | bkboggy: why are you asking about the -empty switch? is there some behaviour that is causing problems for you? or are you just trying to understand how Ghostscript.NET works and stumbled upon this switch which you cannot find in the help..? | 23:50.54 |
rayjj | bkboggy: if it's actually unknown, yes, AFAIK. swproc in imainarg.c returns 1 for the default case, then the caller (gs_main_init_with_args) does: | 23:52.54 |
| code = swproc(minst, arg, &args); | 23:52.55 |
| if (code < 0) | 23:52.57 |
| return code; | 23:52.58 |
| if (code > 0) | 23:53.00 |
| outprintf(minst->heap, "Unknown switch %s - ignoring\n", arg); | 23:53.01 |
| and proceeds to the next switch/option, if any | 23:53.03 |
bkboggy | sebras, just trying to understand why it's there. That's all. It works fine. | 23:53.30 |
| rayjj, kewl, thx | 23:53.53 |
rayjj | bkboggy: depending on what processor.StartProcessing actually does, it may do something. What I have no idea | 23:54.25 |
| (based on your pastebin snippet) | 23:54.57 |
| (github, sorry) | 23:55.17 |
sebras | rayjj: I browsed throught the github code quickly and couldn't see that it parses the flag at all. and git blame didn't give any indication as to why it was introduced either. | 23:55.33 |
bkboggy | I'll probably just ask a question from the creator of gs.NET to see why it was included there. | 23:57.14 |
rayjj | bkboggy: jhaban has been here a few times, iirc, so he should be responsive to your questions if you contact him | 23:58.12 |
bkboggy | Not a huge deal... I'm just ocd. | 23:58.15 |
| lol | 23:58.15 |
rayjj | bkboggy: OCD is good in writing software. Computers aren't very flexible, either | 23:59.02 |
bkboggy | :) | 23:59.17 |
| Forward 1 day (to 2015/05/22)>>> | |