I understand that you can’t ask much for a lightweight software, but I miss the ability to add more bookmarks, rename them, or change hotkey. Why can’t these features be implemented?
Home / Why does Sumatra lack many basic features?
Bookmarks are imbedded in the document (PDF) and would require an editor function to modify the whole document SumatraPDF has always been a reader. You can add “favourite” locations (stored outside the documents) which have a similar function also they can be renamed. Hotkeys is a “hot” topic that will never please all users. At the outset many keys were aimed to fit with some other applications, and many users change them with AutoHotKey scripts (but at their own risk). Some of the keys are very language specific and to provide an additional external resource based on lookup tables would not be impossible (probably helping to reduce the size of the main executable) but someone would need to change all the code and translations to achieve that.
I see. So the engine of a reader and an editor are different, is that correct? Why is changing hotkey with AutoHotKey can be risky? And why is adding a lookup table can make it less lightweight?
SumatraPDF can add PDF header and tail to an image (that’s easy) via save as. It can do similar for images inside a comic book (only a little harder). In the pre-release it can do the fairly simple math needed to append highlight areas, but it goes no further. The calculations for changing the body (and getting it right) are much greater. So unless someone develops all the necessary math it stays a “Viewer/Reader”.
Using AutoHotKey itself is not risky, but badly reassigned keys is a fairly common complaint in other applications where its the norm. So when SumatraPDF recently changed (at request) the H and L keys to match other apps it caused some consternation. I suggested the main program could be more lightweight since users could delete the languages they did not want.
I too want customizable hotkeys and toolbar, as well as many other features besides. I have open requests on GitHub that have been pending for years. However when you ask, “Why can’t these features be implemented?”, you perhaps miss the most important point. It’s not that the sole developer is strictly opposed to many suggestions made by numerous Sumatra PDF-loving users (including me) - it’s just that he’s not in a position (for whatever reason) to implement them all himself. Remember that he has a day job and Sumatra doesn’t pay the bills. So it’s not a question of “Why can’t these features be implemented?” as much as “Who will implement all these feature requests?”
Keep in mind that the dev has generously made the program open source and so no-one’s stopping you or anyone else who can code from modifying it to their heart’s content. Bug fixes and new features useful to all can even be (and are) merged back from forked versions into the official app by the dev. So if you can help out with the coding, why not give a hand?
Unfortunately this is far from the only program whose active development has stagnated a bit due to lack of resources, motivation, help etc. There’s only so much one person can do after all (and here Krzysztof has done a lot), especially when other contributors like Zeniko have left the project. So till the day (we earnestly hope) that active development of new features starts again, all we can do is use what’s available or look for alternatives. Your choice.
It’s not that I don’t want to help, it’s just that I don’t know how to help. (In fact, I’m starting to know more about Windows software development, but there is still many thing to learn before I can read the code comfortably). The reason I ask “why” is because I think these features are basic for an average reader, and implementing them is a piece of cake. So when Krzysztof wrote Sumatra he should have thought about adding them. Because he didn’t, I thought that there must be a reason behind this, rather than just lacking of resource.
I didn’t know that adding bookmarks can be that complicate. Yes it must require more effort, but I have thought that there are built-in engine or API or command that make this a piece of cake?
There are command line tools that can easily extract bookmarks and it would be easy to edit the output but putting it back is more difficult, tools that spring to mind are pdfill (export and import xml files) and others listed on https://superuser.com/questions/276311/how-to-import-export-and-edit-bookmarks-of-a-pdf-file
Naturally I can’t second-guess as to why he didn’t add certain features. Perhaps they didn’t fit his vision (then), or he left them for later and never found the time, or whatever. What I can say however is that I don’t think it’s as easy as people make it out to be sometimes. Lots of people (including non-technical managers!) will say things along the lines of, “Oh, the feature XYZ that I want is trivial and will take barely any effort to add”, but only the dev who knows all the internals has a clue just how easy or tough things are. Things that outsiders believe should involve minimal effort might have inter-dependencies or knock-on effects that we never even thought about, and perhaps are revealed even to the dev only when he actually starts tinkering with the code. Internally things may be structured a certain (quick-n-dirty) way that works fine, but also makes changing or adding specific features difficult. I’m not saying that’s necessarily the case with Sumatra of course, but just in general.
Anyway, this is beginning to sound like a lecture so I’m gonna stop now. I hope as a budding developer yourself you will one day give back and contribute to open source projects like Sumatra that you have benefited from. All the best!
I see, thanks.
I really want to learn to help, but don’t know where to start. Do you know any good introductory resource?
For VC++? Ivor Horton’s book (the latest edition is titled “Beginning C++17: From Novice to Professional”) seems to be recommended by lots of people. For more I’d recommend asking on StackOverflow, be it about book/resource recommendations or programming queries.
I found a very simple work around to this, I just leave the tabs of the books that have been opened up, on top instead of closing them out when I close Sumatra.When I come back, click on whatever tab, I am back where I left off. And it doesn’t seem to slow the thing down. Damn, Sumatra is Fast!
Do you know any other ways beside learning a new language? I mean a more systematically approach rather than learning individual one. Perhaps it would explain the strengths and weaknesses of each language, framework, the structure of Windows, etc.
I’m failed to see how that relates to adding bookmarks. Can you explain more?
Well, I did say it was simple, it just helps me to to instantly get back to where I left off, with a book when Sumatra is reopened again. I tend to read at least 6 books at a time, often more. It just works for me.
I recall when using software that didn’t have bookmark capability, highlighting a phrase or chapter heading, then scrolling through later to find what I want. With Sumutra you might have to save it.
It’s just an easy way till you learn code!
No, I’ll defer to the experts on StackOverflow and elsewhere when it comes to such a broad-based approach as you seem to be interested in.