<HTML><BODY>Hello! <br>Operation Tr in PDF with parameter 3 in accordance with the specification<br><a href="https://wwwimages2.adobe.com/content/dam/acom/en/devnet/pdf/PDF32000_2008.pdf">https://wwwimages2.adobe.com/content/dam/acom/en/devnet/pdf/PDF32000_2008.pdf</a>    PAGE 246<br>should make the text invisible, but the result is a black rectangle<br><br>My patch - Gfx.cc<br><p style="margin-bottom: 6px; padding: 0px; outline: 0px; white-space: pre-wrap; font-family: EmojiFont, TensorFont; font-size: 14px; background-color: #f0f5fb;" data-mce-style="margin-bottom: 6px; padding: 0px; outline: 0px; white-space: pre-wrap; font-family: EmojiFont, TensorFont; font-size: 14px; background-color: #f0f5fb;">void Gfx::doShowText(GooString *s) {<br style="margin: 0px; padding: 0px; outline: 0px;" data-mce-style="margin: 0px; padding: 0px; outline: 0px;"> GfxFont *font;<br style="margin: 0px; padding: 0px; outline: 0px;" data-mce-style="margin: 0px; padding: 0px; outline: 0px;"> int wMode;<br style="margin: 0px; padding: 0px; outline: 0px;" data-mce-style="margin: 0px; padding: 0px; outline: 0px;"> double riseX, riseY;<br style="margin: 0px; padding: 0px; outline: 0px;" data-mce-style="margin: 0px; padding: 0px; outline: 0px;"> CharCode code;<br style="margin: 0px; padding: 0px; outline: 0px;" data-mce-style="margin: 0px; padding: 0px; outline: 0px;"> Unicode *u = NULL;<br style="margin: 0px; padding: 0px; outline: 0px;" data-mce-style="margin: 0px; padding: 0px; outline: 0px;"> double x, y, dx, dy, dx2, dy2, curX, curY, tdx, tdy, ddx, ddy;<br style="margin: 0px; padding: 0px; outline: 0px;" data-mce-style="margin: 0px; padding: 0px; outline: 0px;"> double originX, originY, tOriginX, tOriginY;<br style="margin: 0px; padding: 0px; outline: 0px;" data-mce-style="margin: 0px; padding: 0px; outline: 0px;"> double x0, y0, x1, y1;<br style="margin: 0px; padding: 0px; outline: 0px;" data-mce-style="margin: 0px; padding: 0px; outline: 0px;"> double oldCTM[6], newCTM[6];<br style="margin: 0px; padding: 0px; outline: 0px;" data-mce-style="margin: 0px; padding: 0px; outline: 0px;"> double *mat;<br style="margin: 0px; padding: 0px; outline: 0px;" data-mce-style="margin: 0px; padding: 0px; outline: 0px;"> Object charProc;<br style="margin: 0px; padding: 0px; outline: 0px;" data-mce-style="margin: 0px; padding: 0px; outline: 0px;"> Dict *resDict;<br style="margin: 0px; padding: 0px; outline: 0px;" data-mce-style="margin: 0px; padding: 0px; outline: 0px;"> Parser *oldParser;<br style="margin: 0px; padding: 0px; outline: 0px;" data-mce-style="margin: 0px; padding: 0px; outline: 0px;"> GfxState *savedState;<br style="margin: 0px; padding: 0px; outline: 0px;" data-mce-style="margin: 0px; padding: 0px; outline: 0px;"> char *p;<br style="margin: 0px; padding: 0px; outline: 0px;" data-mce-style="margin: 0px; padding: 0px; outline: 0px;"> int render;<br style="margin: 0px; padding: 0px; outline: 0px;" data-mce-style="margin: 0px; padding: 0px; outline: 0px;"> GBool patternFill;<br style="margin: 0px; padding: 0px; outline: 0px;" data-mce-style="margin: 0px; padding: 0px; outline: 0px;"> int len, n, uLen, nChars, nSpaces, i;</p><p style="margin-bottom: 6px; padding: 0px; outline: 0px; white-space: pre-wrap; font-family: EmojiFont, TensorFont; font-size: 14px; background-color: #f0f5fb;" data-mce-style="margin-bottom: 6px; padding: 0px; outline: 0px; white-space: pre-wrap; font-family: EmojiFont, TensorFont; font-size: 14px; background-color: #f0f5fb;">font = state->getFont();<br style="margin: 0px; padding: 0px; outline: 0px;" data-mce-style="margin: 0px; padding: 0px; outline: 0px;"> wMode = font->getWMode();</p><p style="margin-bottom: 6px; padding: 0px; outline: 0px; white-space: pre-wrap; font-family: EmojiFont, TensorFont; font-size: 14px; background-color: #f0f5fb;" data-mce-style="margin-bottom: 6px; padding: 0px; outline: 0px; white-space: pre-wrap; font-family: EmojiFont, TensorFont; font-size: 14px; background-color: #f0f5fb;">if (out->useDrawChar()) {<br style="margin: 0px; padding: 0px; outline: 0px;" data-mce-style="margin: 0px; padding: 0px; outline: 0px;"> out->beginString(state, s);<br style="margin: 0px; padding: 0px; outline: 0px;" data-mce-style="margin: 0px; padding: 0px; outline: 0px;"> }</p><p style="margin-bottom: 6px; padding: 0px; outline: 0px; white-space: pre-wrap; font-family: EmojiFont, TensorFont; font-size: 14px; background-color: #f0f5fb;" data-mce-style="margin-bottom: 6px; padding: 0px; outline: 0px; white-space: pre-wrap; font-family: EmojiFont, TensorFont; font-size: 14px; background-color: #f0f5fb;">// if we're doing a pattern fill, set up clipping<br style="margin: 0px; padding: 0px; outline: 0px;" data-mce-style="margin: 0px; padding: 0px; outline: 0px;"> render = state->getRender();</p><p style="padding: 0px; outline: 0px; white-space: pre-wrap; font-family: EmojiFont, TensorFont; font-size: 14px; background-color: #f0f5fb; margin-bottom: 0px !important;" data-mce-style="padding: 0px; outline: 0px; white-space: pre-wrap; font-family: EmojiFont, TensorFont; font-size: 14px; background-color: #f0f5fb; margin-bottom: 0px !important;"><strong> // My patch </strong><br style="margin: 0px; padding: 0px; outline: 0px;" data-mce-style="margin: 0px; padding: 0px; outline: 0px;"><strong> if( render == 3 )</strong><br style="margin: 0px; padding: 0px; outline: 0px;" data-mce-style="margin: 0px; padding: 0px; outline: 0px;"><strong> return;</strong></p><br>.......<br><br><br>-----<br>Alexey</BODY></HTML>