6 ms·
Actually it just uses ImageMagick and soffice under the hood, so it can do way more than PDF. I've tested it with DOC, DOCX, XLS, and they all seem to work. Ed
by slowenough 7y ago
Actually it just uses ImageMagick and soffice under the hood, so it can do way more than PDF. I've tested it with DOC, DOCX, XLS, and they all seem to work.
Edit: in case anyone wants an example, here's the conversion of tesla-model-s.pdf[0]:
https://secureview.cloudbrowser.xyz/uploads/filekat9.v05lnle.pdf.html https://secureview.cloudbrowser.xyz/uploads/filekat9.v05lnle...
[0]: https://www.tesla.com/sites/default/files/tesla-model-s.pdf https://www.tesla.com/sites/default/files/tesla-model-s.pdf
- FreeHugs 7y agoNice. What is your tech stack to serve it?
- slowenough 7y agoJust a digital ocean droplet running FreeBSD, then PM2 running Node.JS and ImageMagick built with multicore support.
- z92 7y agoImageMagick with "multicore" support won't speed things up the moment number of concurrent requests touches the number of cores you have. And in digital ocean's case you have only one core.
- mlyle 7y agoSure, but if your concurrent number of fully tendered requests at least sometimes dips below the number of cores, it is a big win. (At the possible cost of top-end scale; improving response to normal workload significantly and hurting the top workload reachable somewhat).
- slowenough 7y agoActually I created a Droplet with 6 cores
- Koshkin 7y agoBut remember that multi-threading was shown to improve performance in the era of single-core computers.
- kodablah 7y agoOne wonders if you can WASM-ify ImageMagick and the use a JS FileReader and a canvas or other PNG output approach to do this all client side. Hrmm, I might tackle this myself if I get the time...
- johnsonjo 7y agoLooks like someone has gotten pretty far WASM-ifying ImageMagick already [1]! [1]: https://github.com/KnicKnic/WASM-ImageMagick https://github.com/KnicKnic/WASM-ImageMagick
- dandanio 7y agoGithub? I would love to contribute.
- slowenough 7y agoYep, I just put it up now https://github.com/crislin2046/p2 https://github.com/crislin2046/p2.
- michaelmior 7y agoNote that HN (and probably many others) won't correctly autolink URLs with a period at the end. It's also somewhat confusing. You may want to consider removing it.
- slowenough 7y agoOh! Sorry. Let me change that http://tiny.cc/p2github http://tiny.cc/p2github edit: I like the dot ¯\_(ツ)_/¯
- yegle 7y agoPackage it as a docker image and you can then run it on cloud.run (Might be expensive though). Disclaimer: I work for Google Cloud.
- slowenough 7y agoHey, this is actually atop FreeBSD so it is not as simple as just making a Dockerfile. It should be too much tho, perhaps just making an install_deps.sh script alternative to use apt, and writing a Dockerfile. You're welcome to submit a PR but I might get to it first. Edit: I just made some changes relating to this, including a Dockerfile. I have not tested in Docker, but it now works on Nix (Debian)
- marcus_holmes 7y agowhat's your experience running soffice server-side? I might have to do this soon, and I'm dreading it.
- slowenough 7y agoMy experience is relatively small. The `convert` script of ImageMagick calls soffice by default if the input file is a LibreOffice type. I actually started writing a shell script to detect if it was DOCX etc, and run soffice first, but then I found out that ImageMagick does that automatically, if libreoffice is installed.
- marcus_holmes 7y agohmm, OK, I didn't know that. Thanks that's useful :) Be interesting to see how your demo site holds up under HN front page traffic - I know Imagemagic is used a lot for random web sites, but I worry about scale a lot. Any info would be useful!
- slowenough 7y agono probs. if you want to email me I can let you know once it all quiets down.
- marcus_holmes 7y agosent :)
- ztravis 7y agoIt's actually not too bad. You can run a pool of soffice processes, but unless you really care about the startup time, I'd suggest running individual processes per job, which you can run headless from the command line. For the most part libreoffice does well, although at some point you'll start to discover the quirks in their rendering...
- lixtra 7y ago
- 7777fps 7y agoDoes it support SVG?
- slowenough 7y agoas an output format?
- 7777fps 7y agoI wondered about input format.
- slowenough 7y agoHey, yeah I think it doesn't support fully on the input end, but it does support on the output (if you change the $format variable in the convert script). Input looks a bit weird, for example, https://secureview.cloudbrowser.xyz/uploads/file1tda.4paa65d.svg.html https://secureview.cloudbrowser.xyz/uploads/file1tda.4paa65d... Which is from: https://dev.w3.org/SVG/tools/svgweb/samples/svg-files/AJ_Digital_Camera.svg https://dev.w3.org/SVG/tools/svgweb/samples/svg-files/AJ_Dig...
- slowenough 7y agoSorry, I'm afraid I just cleaned the upload directory. HN, you have converted 1.6G of files. Here's that Tesla example link again: https://secureview.cloudbrowser.xyz/uploads/file5rc5.9nhts2j.pdf.html https://secureview.cloudbrowser.xyz/uploads/file5rc5.9nhts2j...
- slowenough 7y agoForgive me, I've cleaned the uploads directory again. Over 3.5G of files converted. Here's that Tesla link (I'm making it permanent now): https://secureview.cloudbrowser.xyz/uploads/filecp9z.ohbtt6u.pdf.html https://secureview.cloudbrowser.xyz/uploads/filecp9z.ohbtt6u...
- umvi 7y agoSounds like you need to auto-clean your uploads directory