Do you own a Debenu Quick PDF Library version 7, 8, 9, 10, 11, 12, 13 or iSEDQuickPDF license? Upgrade to Debenu Quick PDF Library 14 today!
Creator, Publisher, ModDate, Createdate |
Post Reply |
Author | |
Darin
Beginner Joined: 01 Feb 07 Status: Offline Points: 11 |
Post Options
Thanks(0)
Posted: 01 Feb 07 at 2:23PM |
Hi
I was wondering if anyone knows whether it's possible to "Set" (or actually clear in my case) these values before saving a PDF file. I seem to be able to set them just fine, but when I save the PDF, QuickPDF puts it's own name in as the Creator and producer, and puts today's date in for the Mod and Create dates, which I need it not to do. Any ideas. Thanks Darin |
|
Ingo
Moderator Group Joined: 29 Oct 05 Status: Offline Points: 3524 |
Post Options
Thanks(0)
|
Hi Darin!
I've never heard that there's a problem. I do it like this: // . . . QP := TiSEDQuickPDF.Create; try Save_Cursor := Screen.Cursor; QP.UnlockKey('MyUnlockKey'); QP.LoadFromFile(Edit1.text); If QP.Encrypted > 0 Then QP.Unencrypt; // . . . QP.SetInformation(0, Copy(Trim(pdf_version.Text),1,3)); //PDF-Version QP.SetInformation(1, pdf_autor.Text); //Autor QP.SetInformation(2, pdf_titel.Text); //Titel QP.SetInformation(3, pdf_subject.Text); //Subject QP.SetInformation(4, pdf_keys.Text); //Keywords QP.SetInformation(5, pdf_creator.Text); //Creator QP.SetInformation(6, pdf_producer.Text); //Producer // . . . QP.SaveToFile(Form1.SaveDialog1.FileName); // . . . finally QP.Free; end; ... and i've no problems. Best regards, Ingo Edited by Ingo - 01 Feb 07 at 4:14PM |
|
Darin
Beginner Joined: 01 Feb 07 Status: Offline Points: 11 |
Post Options
Thanks(0)
|
Hmm, well, when I do essentially that same bit of code, I end up with
<< /Producer (iSEDQuickPDF 5.21 \(www.sedtech.com\)) /Creator (iSEDQuickPDF 5.21 \(www.sedtech.com\)) /CreationDate (D:20070201153335+06'00') /ModDate (D:20070201153335+06'00') >> stuck into the PDF (I pulled it out using a hex editor) My test is putting BLAH in for all these fields for instance.... rQPDF.SetCustomInformation "CreationDate", "BLAH" rQPDF.SetCustomInformation "ModDate", "BLAH" rQPDF.SetInformation 5, "BLAH" rQPDF.SetInformation 6, "BLAH" Eveything else is the same as your snippet. Sure looks like ISED is forcing those fields no matter what you set them to. Note that I don't get any errors, all success return codes, it's just that the final file doesn't contain what I set the props to. Odd. Darin |
|
bogey
Senior Member Joined: 30 Nov 05 Location: United States Status: Offline Points: 50 |
Post Options
Thanks(0)
|
I have never had a problem setting it either. Perhaps this is a bug in version 5.21?
|
|
Darin
Beginner Joined: 01 Feb 07 Status: Offline Points: 11 |
Post Options
Thanks(0)
|
Could be....
I am using 5.21.0.1 I downloaded from this fanclub site. Maybe there's something slightly amiss with the new build? Darin |
|
ukobsa
Senior Member Joined: 29 May 06 Location: Germany Status: Offline Points: 115 |
Post Options
Thanks(0)
|
Darin,
I just did a short test: - set Creator, Producer, CreationDate, ModDate with code: were set fine to 'BLAH'. - Then save it: All changed values are saved but only ModDate is set to the current time! And this is a correct behaviour as saving the changed document must set it's mod date. In detail: every call to Savexyz() sets ModDate to current datetime just a few questions: - are you using a source code version or a compiled dcu version or com interface of QuickPDF? - is this happening also with newly created (empty) pdfs - can you provide a sample pdf together with the values you want to set? greetings, Ulrich |
|
Darin
Beginner Joined: 01 Feb 07 Status: Offline Points: 11 |
Post Options
Thanks(0)
|
I'll put together a small test app like you have and give it a whirl
I'm using the ActiveX version of 5.21.0.1 downloaded from this fan club site. I don't have the source code, although I'm considering getting that version. I noticed there are 2 interfaces in the dll that seem almost if not identical, ised.quickpdf, and ised.quickpdf2 Initially, i was using the quickpdf2 interface, but ran into several odd issues. Switching to the quickpdf interface fixed that. About the MODDATE item, While I understand that normally, that's exactly the behavior you'd want, in this particular case, I actually do need to force the mod date to what I set it to. Maybe it's some fixed date (like 1900-01-01). This is because I'm looking to remove any metadata from the doc that might reflect it's history. Besides, I'd almost argue it's a bug that you can set the moddate but that it doesn't stick on save. If the programmer doesn't set it, the lib should update it on save, if it does get set, that value should be honored, I'd think (or raise an error at the point that it gets set saying something like "This is a read only property". Just my 2c. Overall, this seems like a pretty solid lib and the value is definitely good. I may just have to live with this one issue, assuming I can get the Producer etc to work right. Thanks for trying it though. I'll have a go. Darin |
|
ukobsa
Senior Member Joined: 29 May 06 Location: Germany Status: Offline Points: 115 |
Post Options
Thanks(0)
|
Ok, I hope that I find the time to test it against this version.
about your suggestion: While you can get ModDate using GetInformation(8) you cannot set it using SetInformation. This indicates that it should be handled as a read-only information. But for what you want to do with removing ModDate is perhaps a wrong way: it could corrupt your PDF as ModDate is a required property when working with Page-Piece dictionaries. But I have to study the PDF Spec for this. greetings, Ulrich |
|
Darin
Beginner Joined: 01 Feb 07 Status: Offline Points: 11 |
Post Options
Thanks(0)
|
Ah, well, now if it's really required, that'd change things a bit. I've only just begun to work through the adobe pdf spec so I'm definitely no expert on that.
Maybe the setinfo just needs to apply some validation to make sure that the date you set in is a valid date according to the spec, and not just any old value? As long as the field was really a date, I'd guess the dictionary stuff would be ok, but that's just a guess. Thanks for the response. I'm setting up a VB test proj now. Darin |
|
marian_pascalau
Debenu Quick PDF Library Expert Joined: 28 Mar 06 Location: Germany Status: Offline Points: 278 |
Post Options
Thanks(0)
|
Darin, why don't you use the support@quickpdf.org EMail address to submitt your bug? Are we opening new support groups now?
Hey guys, I have no problem to forward all support emails to you too. But please make your work organized and not behind my back. Otherwise I see no reason way to lose my time improvig this library when everybody does what he wants.
For what reason we spend our time to monitor requests and put bug reports in place when anyway we have a nive Peer2Peer network. I am realy dissapointed guys.
|
|
Darin
Beginner Joined: 01 Feb 07 Status: Offline Points: 11 |
Post Options
Thanks(0)
|
I apologize if I haven't submitted this issue properly. I'm not really even sure it's a "bug" yet (although I suspect the issue with the MODDATE "might" be considered one, but then it might not also).
Once I get a little test app going to make sure I'm seeing what I think I'm seeing, I'd be happy to zip the whole thing up and send it to the support email address. I'm certainly not trying to go behind anyone's back here. I'd love to help any way I can. Thanks Darin |
|
ukobsa
Senior Member Joined: 29 May 06 Location: Germany Status: Offline Points: 115 |
Post Options
Thanks(0)
|
Marian,
??? I really don't understand your problem. It was a question and Ingo, Bogey and I tried to help. Be sure that if it would be a problem that needs some code changes I would have added it to our new Issue tracker (it no other would have done it). If you want, then we can do discussion about support by email. Ulrich |
|
Darin
Beginner Joined: 01 Feb 07 Status: Offline Points: 11 |
Post Options
Thanks(0)
|
Hi All
First, a HUGE thank you to everyone that threw in on this issue. I really appreciate it. I built up a small little test app, tried it and you guys were right, everything got cleaned except the moddate. Ok. So I started trying to narrow down what was different in my main app vs the test. In the end, it turned out that I had forgotten about the second pass of my program. In the first pass, everything worked fine, but in the second pass, I had a conditional that caused the LoadFromFile to get skipped. So, of course, the end result was that I was saving a file that had never been loaded. So then, I thought it was odd that even with that being the case, that the Producer, etc fields were being reset to the ISED text. So I kept digging, and realized that if there is not metadata in the field (for instance if I call GetInformation(5) and get back a blank), I don't even bother calling SETINFORMATION on that field. And THAT appears to be the rub. If you call GETINFORMATION when no file has been loaded, you'll get back a blank string, but if you save the file WITHOUT calling SETINFORMATION, the file ends up with the ISED creator/producer names. So in summary, I don't believe there's really any probs with iSed, other than the setting of the MODDATE. One might argue that if you call getinformation, and then save the pdf, whatever was returned by getinfo should get saved, but nobody would intentionally use the library like that, so I'm not concerned about that issue. About the MODDATE issue, what is the proper way to submit an issue like that? Should I email it to support@quickpdf.org? Again, I'm not sure it's really a bug per se, but it does seem like it's not operating as intuitively as it seems it should. Thanks again for everyone's help with this Darin |
|
marian_pascalau
Debenu Quick PDF Library Expert Joined: 28 Mar 06 Location: Germany Status: Offline Points: 278 |
Post Options
Thanks(0)
|
Ulrich, the problem is that we have to avoid creating parallel support discussions for test cases when something was not confirmed as usage error inside the forum.
Each problem must be monitored whether we want it or not. If someone has or believes that he has a problem he should send a description to support@quickpdf.org where each available DEV-member has access on (if not he may ask for access). Otherwise, the creator of some function have no chance to explain himself and we may close a thread with an inappropriate answer.
Darin, if you believe that your problem is real please (I strongly recommend to) submit your problem to support@quickpdf.org . One more info Darin, the QuickPDF2 coclass is a subclass of QuickPDF. In case that you have problems with one of this type objects you have almoust sure with the second as well.
Best regards, Marian
|
|
Ingo
Moderator Group Joined: 29 Oct 05 Status: Offline Points: 3524 |
Post Options
Thanks(0)
|
Hi Darin!
Only an idea... If you want to remove/reset the ModDate why not creating a new empty pdf-document... then you can copy the pages from the older one into this new document with a new ModDate and the old content ;-) Best regards and good luck! Ingo |
|
Darin
Beginner Joined: 01 Feb 07 Status: Offline Points: 11 |
Post Options
Thanks(0)
|
Hi Ingo
Thanks for the idea. But from what I've seen so far, the moddate is updated to the current date anytime you save the PDF, so whether I copied the pages into a blank PDF or just updated the original PDF, the moddate would seem to end up set to today's date and time. What I'd really like to do is set the mod date to either nothing at all, or to some static date, say, jan 1, 1900. I'm going to keep playing with it and see if there's any way around the "automatic moddate update' that seems to happen when you save a pdf, but I kind of doubt there will be... Still, not the end of the world! Darin |
|
marian_pascalau
Debenu Quick PDF Library Expert Joined: 28 Mar 06 Location: Germany Status: Offline Points: 278 |
Post Options
Thanks(0)
|
Darin, inside the source code (class TiSEDQuickPDF) there is a call to
FSelDoc.SetInfo('ModDate', GetPDFDateTime);
on each call to seve document (SaveToFile; SaveToString). If you believe that this call is not needed (but in reality it make sens to me) and you have license to QuickPDF source code then you should go there and comment out these statements.
If you want this change integrated in our sourcecode you have to sumbit a CR and we will see how we will process your request.
Best regards to everybody,
Marian
|
|
Darin
Beginner Joined: 01 Feb 07 Status: Offline Points: 11 |
Post Options
Thanks(0)
|
Hi Marian
Thanks. i'd figured it was something like that. I'd rather not use a "one off" of the source, because I think a change like this would make the mainline more generally usable and act more like it's documented now. Besides that, I don't even have the lic for the source yet, although I'm seriously considering it just to be able to evaluate what's going on inside. In order to submit a CR, should I just email the comment to support@quickpdf.org? What's the appropriate way to do that? I'm thinking this issue in particular would be a very quick change. though there may be some ramifications I'm unaware of. Thanks again Darin |
|
marian_pascalau
Debenu Quick PDF Library Expert Joined: 28 Mar 06 Location: Germany Status: Offline Points: 278 |
Post Options
Thanks(0)
|
Hi Darin,
first of all, you should submit CR/BUGs only over support email address.
second, this is not really a quick change. This is because the creation of PDF files was not my main concern and I myself I am not aware of all dependencies inside the source code.
One thing is sure. The removal of this "ModDate date reset" is not 100% propper. It make sense to reset the modification date but not this way. First this change will be done inside program when something was changed inside PDF structure. Then you may set the ModDate as you wanted and on save you get what you need.
The second problem is time. You have to accept that at the moment we have other concerns in our priority list. But we may consider your sponsoring to bring some of your needed features direct on our (my) top list. Of course this is optional, otherwise you have to be patient for a while.
Best regards, Marian
|
|
Ingo
Moderator Group Joined: 29 Oct 05 Status: Offline Points: 3524 |
Post Options
Thanks(0)
|
Hi Darin!
What about a workaround to solve this problem without changing the library source? Nearly all programming languages are offering a function to set the system date of the machine... Create ... Unlock ... LoadFromFile ... -> save the system date -> set the system date to the one you want SaveToFile ... (now ModDate will set YOUR date) Free -> set the system date again with the saved date -> change the file date with the saved date Only my thoughts in this case ... It should work. Best regards, Ingo T |
|
Darin
Beginner Joined: 01 Feb 07 Status: Offline Points: 11 |
Post Options
Thanks(0)
|
Hi Ingo,
You know, I've used that trick before, and I completely missed it this time round. Good point! I'll do some experimenting and see how it goes. Thanks for the heads up! Darin |
|
Darin
Beginner Joined: 01 Feb 07 Status: Offline Points: 11 |
Post Options
Thanks(0)
|
Hi Marian
Thanks for you reply. I completely understand about the time issue. I suspect there's many other things that are higher prio that a relatively obscure bit like this. If I'm understanding the first bit, you're saying that the MODDATE handling the way it is now in the source isn't quite right, in that it resets the MODDATE right before save, and what it really needs to do is reset the moddate each time a call is made to the library that does something to change the PDF, and NOT at the point you actually call the SAVE function. I hope I got that right. If that's what you meant, I completely agree and I can definitely see where that would be more work. But I like that approach even more than my original suggestion. Thanks for the reply. If I can license the source, I very well may try to throw in a contribution. Thanks Darin |
|
Post Reply | |
Tweet
|
Forum Jump | Forum Permissions You cannot post new topics in this forum You cannot reply to topics in this forum You cannot delete your posts in this forum You cannot edit your posts in this forum You cannot create polls in this forum You cannot vote in polls in this forum |
Copyright © 2017 Debenu. Debenu Quick PDF Library is a PDF SDK. All rights reserved. About — Contact — Blog — Support — Online Store