From: Henri M. <hen...@gm...> - 2020-08-21 05:48:03
|
On 20/08/20, 21:31, Ethan A Merritt wrote: > On Thursday, 20 August 2020 20:17:44 PDT Henri Menke wrote: > > On 20/08/20, 20:01, Ethan A Merritt wrote: > > > On Thursday, 20 August 2020 18:34:54 PDT Henri Menke wrote: > > > > Currently the cairolatex terminal does not respect transparency options > > > > given in the terminal setting. In this minimal example the > > > > notransparent option is ignored: > > > > > > > > set terminal cairolatex png notransparent > > > > set output "test.tex" > > > > plot sin(x) > > > > > > > > Running this through gnuplot and then using `file' reveals that the > > > > alpha channel is still present: > > > > > > > > $ gnuplot test.gnuplot && file test.png > > > > test.png: PNG image data, 1500 x 900, 8-bit/color RGBA, non-interlace > > > > > > I think the raionale for the current code is that the png image created for > > > inclusion in a LaTeX document must have a transparent background in order > > > to support the "back" and "behind" attributes for text elements, since they > > > will be drawn by the latex engine and then covered by inclusion of the > > > graphics image. The structure of the latex processing is: > > > > > > render text elements that are "behind" or "back" > > > \includegraphics{gnuplot_figure} > > > render text elements that are "front" > > > > > > If you use a solid color background in the graphics image, it will hide > > > any previously rendered text elements. > > > > The reason why I'm looking into this is that currently it is impossible > > to generate PDF/A when using plots generated by gnuplot. PDF/A doesn't > > allow transparency, so I'm trying to remove all of it (or at least make > > it optional). As noted in the patch, the default behaviour of using > > transparency remains, so this is entirely optional. > > I am researching this as I type, so please bear with me. > > From Wikipedia I see > Transparent objects and layers (Optional Content Groups) are > forbidden in PDF/A-1, but are allowed in PDF/A-2. > PDF/A-1 was published in 2005; PDF/A-2 in 2011; PDF/A-3 in 2012; > So maybe this is no longer a limitation? > > From my own knowledge, there are commonly available tools that > render the transparency in a PDF document once, then save the result > as an embedded image that no longer contains transparency. > For example if you use gnuplot to create a PostScript file directly it cannot > use transparency because PostScript itself does not support transparency. > But if you use gnuplot to create a PDF file with transparency and then > convert it > pdf2ps input.pdf output.ps > you get a PostScript file in which the transparency is "baked in" rather > than interpreted. Logically then you could take that PostScript file > and convert it back to PDF, keeping the pre-rendered image that no > longer uses an alpha channel. > ps2pdf output.ps new.pdf > Whether that particular pair of tools produces a PDF/A compliant > file I do not know. This is actually a pretty good proposal. In my actual plot I now have added set terminal cairolatex pdf standalone header '\usepackage[a-1b]{pdfx}' set output "test.tex" # ... unset output !pdf2ps test-inc.pdf test-inc.ps !ps2pdf -dPDFA=1 test-inc.ps test-inc.pdf !pdflatex --interaction=nonstopmode test.tex and the resulting document validates correctly with VeraPDF. It's a bit ugly and I don't know whether the ghostscript roundtrip would correctly preserve fonts, but since the background image doesn't contain fonts, I don't care. Note that adding the -dPDFA=1 flag will make the PDF structurally PDF/A compliant, but will not add metadata or color profiles, so test-inc.pdf does not validate. These extras are handled by the pdfx LaTeX package. To get my plots with PNG background compliant I use the patch from this thread together with your suggestion `set tics front'. Another option would be to run mogrify to remove the transparency. set terminal cairolatex png standalone header '\usepackage[a-1b]{pdfx}' set output "test.tex" # ... unset output !mogrify -alpha remove test-inc.png !pdflatex --interaction=nonstopmode test.tex So bottomlined my thesis now validates as PDF/A-1b, which is really nice. Cheers, Henri > > best, > > Ethan > > > > > Kind regards, > > Henri > > > > > > > > Ethan > > > > > > > > > > > With this patch the transparency setting will be honoured. The current > > > > default setting of implicitly assuming transparency is unaltered. > > > > --- > > > > term/cairo.trm | 2 +- > > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > > > diff --git a/term/cairo.trm b/term/cairo.trm > > > > index ee748dfe2..3ef76ecc6 100644 > > > > --- a/term/cairo.trm > > > > +++ b/term/cairo.trm > > > > @@ -849,7 +849,7 @@ void cairotrm_graphics() > > > > plot.background.g = cairo_params->background.g; > > > > plot.background.b = cairo_params->background.b; > > > > gp_cairo_set_background(cairo_params->background); > > > > - if (ISCAIROLATEX || cairo_params->transparent) > > > > + if (cairo_params->transparent) > > > > gp_cairo_clear_background(&plot); > > > > else > > > > gp_cairo_solid_background(&plot); > > > > > > > > > > > > > > > > > > > |