[poppler] Generating lovely pen plotter output from Poppler: Pull request
jonh.poppler at jonh.net
jonh.poppler at jonh.net
Fri Dec 18 19:15:00 UTC 2020
Hi Oliver,
I've done so, and gone on a journey of discovery, deepening my
relationship with the CI infrastructure. :v) That cleaned up a number of
minor issues.
Thanks for your reply. The PR is in.
--Jon
On 2020-12-17 02:51, Oliver Sander wrote:
> Hi Jon,
>
> thanks for reaching out---what you have sounds like an interesting
> project.
>
> In order to get your code reviewed for inclusion into poppler you need
> to get
> an account for the freedesktop/poppler GitLab instance:
>
> https://gitlab.freedesktop.org/poppler/poppler
>
> Afterwards please open a merge request with your proposed changes.
>
> Best regards,
> Oliver
>
> On 17.12.20 08:58, jonh.poppler at jonh.net wrote:
>> Howdy team Poppler,
>>
>> I've been on a decades-long quest for the best way to get cool output
>> onto my 1985 HP 7585B pen plotter. There are dozens of tools for
>> generating HPGL from various formats around the Internet, and they all
>> stink. This tool is the HPGL conversion tool to end all HPGL
>> conversion tools -- a motto that rolls off the tongue!
>>
>> I'd greatly appreciate it if someone on the team could *guide me
>> through getting these changes into Poppler*. Below i give a brief
>> description of the changes, quick-start instructions to try it out,
>> and specific requests for feedback and guidance.
>>
>> Thank you!
>>
>>
>> What's in the tin
>>
>> Please find my branch here:
>>
>> https://github.com/jonhnet/plotler
>> <https://github.com/jonhnet/plotler>
>>
>> It consists of:
>>
>> * A first commit that refactors SplashOutputDev to put a part of its
>> functionality into a weaker superclass VectorOutputDev. This is to
>> prepare for code sharing without "subclass-by-deletion". This commit
>> also exposes a couple of methods in SplashPath as public. It also
>> moves some supporting code that used to be in SplashOutputDev into a
>> pair of new files VectorFonts and VectorDynamicPatters; just an
>> overdue cleanup. (4dec008eddea2329c0e8277398803cb9022b15cc)
>>
>> * Then the rest of plotler as new files: A new StrokeOutputDev that
>> inherits from VectorOutputDev to capture stroke and drawChar commands
>> and flatten them down to simple strokes. A new utils/plotler.cc CLI
>> that invokes it. It relies on:
>>
>> - Plot, PlotClip, and PlotEmit for manipulating pen paths.
>>
>> - HersheyFont, HersheyDirectory, and HersheyUnicodeSubstitutions for
>> manipulating Hershey fonts.
>>
>>
>> Try it out
>>
>> # standard poppler build
>> git clone https://github.com/jonhnet/plotler
>> <https://github.com/jonhnet/plotler>
>> mkdir poppler-install
>> cd plotler
>> mkdir build; cd build;
>> INSTALLDIR=`(cd ../../poppler-install; pwd)`
>> cmake .. -DCMAKE_INSTALL_PREFIX=$INSTALLDIR
>> -DCMAKE_BUILD_TYPE=debugfull
>> make -j4
>> make install
>>
>> # and now try plotler
>> ./utils/plotler -i ../test/plotler/brake-diagram.pdf -o proof.svg &&
>> eog proof.svg
>> ./utils/plotler -i ../test/plotler/verikv-osdi2020-final.pdf -n 9 -o
>> proof2.svg && eog proof2.svg
>>
>>
>> Feedback requested
>>
>> - Community code standards. Guidance welcome.
>>
>> - I have written zero tests. Guidance on meeting appropriate standards
>> would be helpful.
>>
>> - My commit includes a bunch of PDF test files I used to guide
>> development. Should these be removed or included in the proposed
>> change?
>>
>> - Utility name. Plotler maybe is too clever? I considered "pdftohpgl",
>> but the thing can already emit SVG, and I could imagine growth to
>> support more formats.
>>
>>
>> Background
>>
>> After finding other tools wanting, I wrote my own Python SVG->HPGL
>> extension a decade ago. It sucked, because it required me to interpret
>> so much of SVG. Then I thought, hey, I/nkscape/ knows how to interpret
>> SVG! So I hacked a converter into inkscape 0.42 -- and it served me
>> well for years, long after modern distros couldn't build that version
>> of Inkscape. But it wasn't super flexible, and there was no reasonable
>> way to share it. A couple years ago I thought, maybe it's time to try
>> again with a general vector graphics engine designed for library
>> access, so I sat down with Ghostscript. I aged three years that
>> weekend.
>>
>> It finally struck me that I should find a /modern/ vector graphics
>> toolkit. And if I start with PDF, I'm basically building a printer
>> driver. Poppler was the perfect fit -- nicely organized & modularized
>> code, and already set up to build a set of conversion utilities, so
>> plotler fits right in.
>>
>> I think it would be fun to write a CUPS backend based on Plotler, so I
>> can just click "Print" in any application and have it pop out on a pen
>> plotter.
>>
>>
>> _______________________________________________
>> poppler mailing list
>> poppler at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/poppler
>>
More information about the poppler
mailing list