| <<<Back 1 day (to 2016/08/29) | 20160830 |
sebras | tor8 (for the logs): why does ffi_PDF_Object_readStream() call pdf_get_indirect_document()? pdf_get_bound_document() ought to do, no..? | 05:18.24 |
| tor8 (for the logs): why does it call pdf_is_stream()? if the object is a dict without any stream it throws "object is not a stream" because stm_offs == 0. and if ffi_...() were to check the value from pdf_get_indirect_document() it would handle the case where the object is not an indirect object too. | 05:24.19 |
| tor8: if we do it that way we let the underlying layers determine if the stream has the right type or not. | 05:29.55 |
| tor8: on github/master there is a few commits that I think are ready. on github/wip there are a few more commits illustrating the direction I'm proceeding in. | 05:37.28 |
tor8 | sebras: just before my vacation I started doing some API cleanups, changing the use of object numbers into using indirect reference objects | 10:22.35 |
| reducing the amount of pdf_to_num calls you have to do explicitly | 10:22.45 |
| I never got around to doing that for the PDF stream opening/reading functions | 10:23.02 |
| anyway, the difference between pdf_get_indirect_document and pdf_get_bound_document is subtle | 10:24.44 |
| pdf_get_indirect_document gets the pdf_document, but only iff the object is an indirect reference | 10:25.02 |
| pdf_get_bound_document also works for dictionaries and arrays | 10:25.19 |
| PDFObject_readStream should only work with an indirect reference object as its argument | 10:25.47 |
| why we do the pdf_is_stream call there rather than in pdf_open_stream ... I need to investigate | 10:28.23 |
| it doesn't look like we do the proper error checking at that level, so the error messages could come out funky and that's why we do it | 10:28.44 |
| you're right in that we ought to just call pdf_load_stream in PDFObject_readStream without the pdf_is_stream sanity check | 10:29.13 |
sebras | tor8: why only indirect refs? | 11:11.29 |
| For streams that is. | 11:11.46 |
tor8 | sebras: you need the object number to open a stream. indirect references are how you have an object number. | 11:57.17 |
sebras | tor8: Hm... But a stream also has a dict with /Length and /Filter. Why couldn't I point to that object directly? | 12:05.09 |
sebras | has a slight feeling he forgot something very basic. | 12:05.31 |
kens | The dict is part of the stream, it has no separate object number | 12:05.47 |
sunil_ | Hello.. | 13:49.31 |
| is there any one online? | 13:49.40 |
| Could you please tell me what was the solution for following issue, http://bugs.ghostscript.com/show_bug.cgi?id=696284 | 13:49.54 |
kens | Upgrade ot the current source | 13:50.11 |
| Or apply the commit listed in the report | 13:50.22 |
sunil_ | i am using mupdf 1.8.1 | 13:50.31 |
| could you please share if you have any demo for digital signature on pdf | 13:51.08 |
kens | You keep on asking for demo code, teh demo code is in the git archive, if its not there, we don;t have it | 13:51.48 |
sunil_ | actually i didn't get how to use methods in mupdf 1.9 | 13:52.37 |
kens | Can't help you with that. | 13:52.55 |
sunil_ | fz_context *ctx; pdf_document *doc; fz_rect rect = {0, 0, 300, 500}; pdf_page *page; pdf_widget *widget; fz_write_options opts = {0}; opts.do_incremental = 1; ctx = fz_new_context (NULL, NULL, 0); doc = pdf_open_document (ctx, filePath); /* Add a new page and create a signature form. */ page = pdf_create_page (ctx, doc, rect, 0, 0); pdf_insert_page (ctx, doc, page, INT | 13:53.13 |
| signing not happening | 13:53.27 |
HenryStiles | yeah paul had something working on ios, signing is definitely part of fred's work on mupdf so we'll have something complete and tested probably q4 sometime. | 13:55.13 |
| oh he left | 13:55.45 |
sunil_ | is there any mupdf developer? | 13:57.19 |
kens | sunil_ : are you a commercial cusotmer or ahaveyou a support contract ? | 13:58.00 |
| s/cusotmer/customer/ | 13:58.14 |
sunil_ | open source developer | 13:58.54 |
kens | Well, MuPDF is supplied 'as is' without support. | 13:59.13 |
| If yo uhave a bug then we will fix it. | 13:59.36 |
| If you have a question other than 'write the code for me' we will try to asnswer it as time permits | 13:59.52 |
| As I said above, the example code is checked into our Git reporsitory, if its nto there, we don't have any. | 14:00.34 |
HenryStiles | sunil_: what your email address's domain in says emudhra, are you not working for them and using mupdf? | 14:00.45 |
sunil_ | i am dying here buddies.. | 14:44.13 |
| no one is helping :( | 14:44.23 |
| just i want simple demo for signature | 14:44.36 |
HenryStiles | sunil_: you didn't answer my question | 14:44.42 |
sunil_ | i am freelancer and open source developer | 14:45.12 |
| i am ios developer | 14:45.37 |
kens | OK so whats the purpose of your development ? WHy do you want to sign a PDF ? | 14:45.40 |
sunil_ | taking doctors appointment | 14:47.52 |
kens | I don't really see why you need to sign a PDF for that | 14:48.13 |
sunil_ | error: No font name in default appearance uncaught exception: No font name in default appearance | 14:50.27 |
Keshava | can you any1 help on mupdf | 14:52.46 |
| for digital signing PDF | 14:52.55 |
kens | : What another one ? | 14:53.01 |
| If you have a question, please go ahead and ask it | 14:53.48 |
Keshava | i'm not able to sign pdf using mupdf... so can i get some sample code | 14:54.34 |
kens | As I just finished telling sunil_, the example code is in the Git repository, if you want example code that isn't there, then it doesn't exist | 14:55.51 |
sunil_ | hi | 14:58.13 |
ghostbot | Welcome to #ghostscript, the channel for Ghostscript and MuPDF. If you have a question, please ask it, don't ask to ask it. Do be prepared to wait for a reply as devs will check the logs and reply when they come on line. | 14:58.13 |
sunil_ | Hello kens | 14:58.43 |
ray_laptop | sunil_: maybe you and Keshava can help each other :-) | 14:58.52 |
sunil_ | kens is there any subscription modle for getting complete support | 14:59.53 |
ray_laptop | sunil_: Keshava: if you develop sample code for digital signing for a particular platform, we'll be glad to consider adding it to our examples | 15:00.14 |
kens | sunil_ : We do support contracts for commercial customers, you'd have to contact sales@artifex.com. However, if you are an opensource developer I suspect that will be outside your budget. | 15:00.38 |
ray_laptop | sunil_: we offer support contracts to some customers, but it is for bugs, not for development | 15:01.03 |
| sunil_: sometimes we also take on NRE (paid development) contracts, particularly if the development is something we eventually want to do and a customer wants to accelerate the schedule | 15:02.25 |
sunil_ | we are looking for IOS platform, where we are facing in creation of digital signing. | 15:02.52 |
ray_laptop | sunil_: for NRE or other contract issues, please contact sales@artifex.com and describe your needs | 15:03.29 |
HenryStiles | so you are doing an open source project as a consultant for this company: http://www.e-mudhra.com/? Is that correct? | 15:03.48 |
tor8 | how does that even work, open source development for iOS when you don't own the copyright to the whole code base? | 15:06.06 |
| I thought the apple terms of license were incompatible with GPL | 15:06.23 |
ray_laptop | tor8: you can still use GPL code on an iOS device internal to your company, but putting it on the Apple store doesn't work, AIUI | 15:07.47 |
sunil_ | no it is only for our internal purpose... I wanted to know how exactly these licensing part works for IOS platform | 15:09.46 |
sebras | sunil_: so... why does e-mudhra need an open source ios app for signing your doctors appointment? | 15:14.48 |
sunil_ | its actually for employee appointment | 15:20.27 |
kens | Then why do you need to sign the PDF ? | 15:20.41 |
sunil_ | on form 16 | 15:20.57 |
| to go paper less | 15:21.20 |
kens | I'm afraid form 16 doesn't mean anything to us | 15:21.27 |
| If the whole thing is internal I can't see why you need to sign the PDF | 15:21.50 |
sunil_ | these appointment forms and appraisal forms where issued in the form of physical copy to employees.. in order to overcome we wanted to use digital signing | 15:23.29 |
| so that physical papers will not be wasted | 15:23.41 |
| since any digitally signed documents are legally valid | 15:24.05 |
sebras | sunil_: if you are doing consultancy work for a company (or work for the company itself) then I'm sure the company can negotiate a commercial license with sales@artifex.com to have mupdf devs help you. if you are an open source developer I think you need to spend more effort in trying to resolve this yourself. and please adhere to the license. | 15:28.37 |
sunil_ | if a take commercial license can I publish modified IOS app to app store | 15:30.36 |
| If I a take commercial license can I publish modified IOS app to app store | 15:31.02 |
sebras | sunil_: I believe so, but please ask that question to sales@artifex.com. I'm not an expert on licensing. | 15:31.33 |
tor8 | sunil_: the android app has pdf signing code, so that's where you'll need to look for an example. | 15:38.02 |
ray_laptop | sunil_: Our commercial license generally does allow the resulting product to be put on the Apple store without the need to provide source. Since Artifex owns the copyright to muPDF, we are able to also offer a commercial license as an alternative to the AGPL | 15:39.48 |
tor8 | sebras: no good reason. | 15:40.11 |
sebras | tor8: ok, because I was confused when trying to rewrite the JNI code earlier today. the two big fz_try()s... | 15:40.52 |
tor8 | yeah. the whole annotation loading/iteration thing could be reworked if it's too cumbersome | 15:41.11 |
| the thing is, we want to be robust in terms of creating and deleting annotations, which is why we opted for an iterator rather than 'load' | 15:41.40 |
sebras | tor8: no, no. I managed to sort it out in the end, but I was just puzzled as to what was fundamentally different between links and annotations. | 15:42.02 |
tor8 | fz_links are read-only, loaded when you want them. annotations are an integral part of a page, loaded along with the page. | 15:42.29 |
| since annotations are needed to render the page | 15:42.35 |
| we should remove the fz_link structure though, but that's for much later. | 15:43.00 |
| since it duplicates what annotations already do, so there's a bit of confusion and possibility of getting things messed up when editing. | 15:43.27 |
sebras | tor8: ok, so you want to guard against iterating annotations and creating/deleting them in parallel? | 15:43.52 |
| tor8: right.\ | 15:44.00 |
tor8 | sebras: and now, the JNI binding getAnnotations() has thrown everything into disarray | 15:46.39 |
sebras | tor8: yes, because basically it returns a list of refs to each annotation on the page. | 15:48.31 |
| tor8: re: reviwing, do you need it? I want it. :) | 15:48.48 |
tor8 | sebras: I've reviewed all but the last on sebras-gh/master, they LGTM | 15:51.33 |
| will look at sebras/wip tomorrow | 15:51.39 |
sebras | tor8: ok, I have changed a few according to comments and changes that became apparent at a later stage. | 15:52.21 |
| tor8: on sebras-gh/master. | 15:52.31 |
| tor8: just so you know that that branch is a moving target. | 15:52.42 |
| tor8: but I really want to get them merged. :) | 15:53.03 |
| tor8: I'll take a look at tor/master tomorrow as ty. | 15:56.50 |
sebras | sleeps. | 15:56.58 |
fredross-perry | tor8: in PDFAnnotation, why have enumerated types, and getType()? Are you trying to avoid the caller having to downcast (xxx instance of type) ? | 16:47.54 |
| tor8: I like where this is going. Should we have an intermediate class for markup annotations? When I read "common to all...", sounds like a class to me. | 16:58.22 |
tor8 | fredross-perry: 'markup annotations' are a special class of annotations, and yes, should probably add an intermediate subclass there too | 20:20.06 |
| but 90% of the annotations are 'markup' annotations | 20:20.19 |
| fredross-perry: we can probably get away with not exposing the getType | 20:20.58 |
fredross-perry | That's cool. Thanks. | 20:21.24 |
| Forward 1 day (to 2016/08/31)>>> | |