gettalong

Joined 18 years ago

Karma
23
Submissions
49
Member since
Nov 28
Author of the kramdown Markdown-superset converter (https://kramdown.gettalong.org) and of the HexaPDF PDF manipulation library (https://hexapdf.gettalong.org)
View on Hacker News

Recent submissions

Comment · 3 months ago
Zero-trust architecture is a bit of a misnomer: When you use a browser based tool you are always at risk that the data gets out. So indeed you have to trust the site you are using which invalidates the zero-trust claim.

By just using a local application you will avoid all the problems and most probably have a more performant and capable tool at hand.

Comment · 4 months ago
Why is it that everyone now duplicates/vibe-codes PDF tool websites? It seems that there is one new each week for about half a year now with none providing any outstanding features over the others.
Comment · 4 months ago
If it can only be viewed with your web application, it won't be useful for the general public.
Comment · 4 months ago
PDF already has the notion of portable collections (PDF 2.0 section 12.3.5). As far as I can determine this is very similar to what you do except that your pdfx format won't be supported by (major) PDF viewers/libraries.
Comment · 4 months ago
I usually use pdfpc (https://pdfpc.github.io/) for this which works like a charm. No internet access needed, content stays on the computer.
Comment · 9 months ago
Regarding "Important Notice on Third-Party Components": You are including AGPL components in your project which itself is AGPL.

Even if you distribute your part of the code under the commercial license, the components make - depending on how they are integrated into BentoPDF - the whole project AGPL again. So it might be possible that all your commercial customers are breaking the AGPL of the included components. For example, if your code directly calls code in the components, the integration is tight and AGPL would most certainly apply. If all you do is call the components as external binaries, then it is fine.

Comment · 9 months ago
Comment · 2 years ago
Yes, creating a binary and calling that would circumvent the AGPL. But then everything will be more complex and slower.

Also, doing this extra work and developing the binary is probably more expensive than just buying a commercial license.

Comment · 2 years ago
I'm not a lawyer but I think you mistaken in this regard. One indication for this is that otherwise some major companies would have problems.

For example, the GPL FAQ has the following part in the FAQ item title "What is the difference between an 'aggregate' and other kinds of 'modified versions'?" (https://www.gnu.org/licenses/gpl-faq.en.html#MereAggregation):

> If the modules are included in the same executable file, they are definitely combined in one program. If modules are designed to run linked together in a shared address space, that almost surely means combining them into one program.

A combined work needs to be distributed under the AGPL, an aggregated work does not. Since Ruby is interpreted the code of HexaPDF loaded from the application would run in the same address space and thus it would be a combined work.

The following two links are also relevant: https://opensource.stackexchange.com/questions/5003/agplv3-s... and https://opensource.stackexchange.com/questions/5010/can-i-us...

Comment · 2 years ago
The library is dual-licensed as AGPL plus a commercial license. So everything is in the open and can be tested and tried out under the AGPL. Once the library is used in a commercial context, you nearly always need to buy the commercial licenses to stay compliant. This is how it generally works.

What the commercial license does is a different thing. You could charge once OR once and for every upgrade to an (arbitrarily defined) new major version OR each year via a subscription OR ... It is really up to you and how you want to handle this.

Comment · 2 years ago
Thanks and corrected!
Comment · 2 years ago
Comment · 2 years ago
You can get a long way with only implementing the most basic things of the PDF specification, like section 7. And even there you don't need everything. For example, there is no need to implement the CCITTFaxDecode, JBIG2Decode, DCTDecode or JPXDecode filters if you don't want to get at the raw pixels of the images.

Once you have parsing and writing of a simple PDF file going (sections 7.2, 7.3, 7.4, 7.5, 7.7), add in support for encryption (section 7.6). Now you are able to handle to at least parse and write nearly all PDF files.

Then implement all the things you need gradually For example:

* Need support for parsing or creating the contents of a page? -> sections 7.8, 8, and 9. Mind you, start out with only supporting the built-in PDF fonts for creating text and later add support for TrueType (easier) and OpenType (harder if you need to implement the font parser yourself).

* Need support for annotations? -> section 12.5

And so on.

If you just need to store the metadata in the PDF, you only need support for parsing and writing a PDF because this usually also entails that you can modify the PDF object tree which is needed for storing the metadata. However, if you need to store that metadata in a way that is usable for other PDF processors, you would need to store it as an XMP file and creating that is yet another deep dive if you don't have an XMP library available. See section 14.3.2 in the PDF spec for this (btw. the latest PDF spec is available at no cost at https://pdfa.org/resource/iso-32000-2/).

Comment · 2 years ago
Many PDF viewers and library do not fully follow the PDF standard or have subtle bugs. This leads to problems later on.

My guess is this all started many years ago when Adobe Reader was the standard PDF reader and it was (and still is) very lenient when it comes to PDFs that aren't exactly following the specification.

So what did everyone else? They followed Adobe's lead because "But, but, ... it works in Adobe Reader!"

Comment · 2 years ago
Thanks - that helps!

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton