RE: Font names using multi-byte strings
Joao Andre Goncalves <[email protected]> Thu, 29 Jan 2026 00:28:13 +0000
| Newsgroups | gmane.text.xml.fop.user |
|---|---|
| Message-ID | <AS8PR04MB7942704DF28C191FF7109323DD9EA@AS8PR04MB7942.eurprd04.prod.outlook.com> |
--_000_AS8PR04MB7942704DF28C191FF7109323DD9EAAS8PR04MB7942eurp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable I tried that earlier but while the PDF is valid, the font name would not ma= tch the original PDF. I did find the following on the ISO document: c) Any character that is not a regular character shall be written using its= 2-digit hexadecimal code, preceded by the NUMBER SIGN only. FOP probably has this restriction because we can't display a char with an i= ndex over 255 with just 2 digits. Still, the original PDF does have that fi= eld with chars over 255 so it has to be possible. I'll keep looking for an = alternative. Thanks From: Luca Bellonda <[email protected]> Sent: 28 January 2026 07:20 To: [email protected] Subject: Re: Font names using multi-byte strings You don't often get email from [email protected]<mailto:[email protected]= om>. Learn why this is important<https://aka.ms/LearnAboutSenderIdentificat= ion> The ISO 32000-1 standard for PDF 1.7 (available free of charge from Adobe) = in paragraph 7.3.5, page 18, states that the Name object, in some situation= s, can interpret numeric bytes as part of a UTF-8 string. There is also a n= ote on Unicode normalization. Accepting all non-illegal characters and converting them to a UTF-8 sequenc= e would likely be correct, even without generating warnings. Il Mar 27 Gen 2026, 22:23 Joao Andre Goncalves <JGoncalves@smartcommunicati= ons.com<mailto:[email protected]>> ha scritto: I was able to get a valid PDF by removing the 8-bit restriction, but the fo= nt name becomes gibberish. I spent some time looking for why we have such r= estriction and the only thing I found was the following: https://api.itextpdf.com/iText5/java/5.5.11/index.html?com/itextpdf= /text/pdf/PdfName.html#:~:text=3DClass%20PdfName&text=3DPdfName%20is%20an%2= 0object%20that,(page%2056-58) When I went into the Manual mentioned I did not manage to find a reason for= the restriction. I also tried to create a font with the same font name as = the one in your PDF but FontForge had a similar restriction to FOP (ASCII c= haracters only and not the escaped characters). I'm not sure if we should be changing FOP until we determine how the origin= al font was created. If we do change FOP, we could change the exception to = a warning but I'm not sure what else could be impacted by this change. Thanks -----Original Message----- From: Mark Gibson <[email protected]<mailto:mark.gibson@staf= f.bluematrix.com>> Sent: 23 January 2026 09:03 To: [email protected]<mailto:[email protected]= g> Subject: RE: Font names using multi-byte strings Thanks Chris. Attached is the only example we have, and have knowingly seen. And we've b= een working with Japanese clients for years now. Mark -----Original Message----- From: Chris Bowditch <[email protected]<mailto:bowditch_chris@hotm= ail.com>> Sent: 23 January 2026 14:44 To: [email protected]<mailto:[email protected]= g> Subject: Re: Font names using multi-byte strings [EXTERNAL] Hi Mark, Are you able to attach your PDF so we can replicate this? Thanks, Chris On 15/01/2026 17:09, Mark Gibson wrote: > > Hi, > > I thought I'd just poll the community on this one, as I can't see it > reported anywhere. > > We have a PDF that lists its fonts using Japanese characters (in this > case, it's MS Gothic and MS PGothic, where "Gothic" actually is in > Japanese characters). > > When trying to import that image using fo:external-graphic > (fop-pdf-images.jar), we get an exception with the message "Only 8-bit > characters allowed by this implementation". > > In reviewing FOP code, org.apache.fop.pdf.PDFName.toHex() throws this > exception if the character id is > 256. > > Does this mean FOP cannot handle cases where the names of PDF records > are not in simple ascii range? > > Caused by: java.lang.IllegalArgumentException: Only 8-bit characters > allowed by this implementation > > at org.apache.fop.pdf.PDFName.toHex(PDFName.java:78) > > at org.apache.fop.pdf.PDFName.escapeName(PDFName.java:64) > > at org.apache.fop.pdf.PDFName.<init>(PDFName.java:42) > > at > org.apache.fop.render.pdf.pdfbox.PDFCloner.cloneForNewDocument(PDFClon > er.java:106) > > at > org.apache.fop.render.pdf.pdfbox.PDFCloner.readCOSDictionary(PDFCloner > .java:154) > > at > org.apache.fop.render.pdf.pdfbox.PDFCloner.cloneForNewDocument(PDFClon > er.java:104) > > at > org.apache.fop.render.pdf.pdfbox.PDFCloner.readCOSObject(PDFCloner.jav > a:134) > > at > org.apache.fop.render.pdf.pdfbox.PDFCloner.cloneForNewDocument(PDFClon > er.java:84) > > at > org.apache.fop.render.pdf.pdfbox.PDFCloner.readCOSDictionary(PDFCloner > .java:154) > > at > org.apache.fop.render.pdf.pdfbox.PDFCloner.cloneForNewDocument(PDFClon > er.java:104) > > at > org.apache.fop.render.pdf.pdfbox.PDFCloner.readCOSDictionary(PDFCloner > .java:154) > > at > org.apache.fop.render.pdf.pdfbox.PDFCloner.cloneForNewDocument(PDFClon > er.java:104) > > at > org.apache.fop.render.pdf.pdfbox.PDFBoxAdapter.cloneForNewDocument(PDF > BoxAdapter.java:141) > > at > org.apache.fop.render.pdf.pdfbox.PDFBoxAdapter.createStreamFromPDFBoxP > age(PDFBoxAdapter.java:212) > > at > org.apache.fop.render.pdf.pdfbox.AbstractPDFBoxHandler.createStreamFor > PDF(AbstractPDFBoxHandler.java:111) > > at > org.apache.fop.render.pdf.pdfbox.PDFBoxImageHandler.handleImage(PDFBox > ImageHandler.java:77) > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected]<mailto= :[email protected]> For additional commands, e-mail: [email protected]<mail= to:[email protected]> ________________________________ Joao Andre Goncalves Customer Developer t | m 07733161880 [email protected]<mailto:[email protected]= m> smartcommunications.com<http://smartcommunications.com/><https://www.smartc= ommunications.com/> [https://www.smartcommunications.com/wp-content/uploads/025_Trends2026-450x= 160_v1.jpg]<https://scale.smartcommunications.com/2026-Trends-White-Paper.h= tml?utm_source=3Doutlook&utm_medium=3Demail&utm_campaign=3Dwc-global-2026-w= hite-paper-2026-trends> Explore the new era of AI-powered customer engagement. Get your copy of the= 2026 Trends Report now.<https://scale.smartcommunications.com/2026-Trends-= White-Paper.html?utm_source=3Doutlook&utm_medium=3Demail&utm_campaign=3Dwc-= global-2026-white-paper-2026-trends> Smart Communications is a trading name= of SmartComms SC Limited which is registered in England under No. 4303041 = whose registered office is at Suite 23, LCLB, 95 Mortimer Street, London, W= 1W 7GB. Please consider the environment before printing. The contents of th= is e-mail are intended for the named addressee only. It contains confidenti= al information. Unless you are the named addressee or an authorized designe= e, you may not copy or use it, or disclose it to anyone else. If you receiv= ed it in error please notify us immediately and then destroy it. Smart Comm= unications will process your data as described in the Smart Communications'= External Privacy Policy.<https://www.smartcommunications.com/external-priv= acy-policy/> Follow us on LinkedIn,<https://www.linkedin.com/company/15166060/admin/> Yo= uTube,<https://www.youtube.com/@Smart_Communications/> and X.<https://x.com= /ccminnovators?lang=3Den> --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected]<mailto= :[email protected]> For additional commands, e-mail: [email protected]<mail= to:[email protected]> --_000_AS8PR04MB7942704DF28C191FF7109323DD9EAAS8PR04MB7942eurp_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable <html xmlns:o=3D"urn:schemas-microsoft-com:office:office" xmlns:w=3D"urn:sc= hemas-microsoft-com:office:word" xmlns:m=3D"http://schemas.microsoft.com/of= fice/2004/12/omml" xmlns=3D"http://www.w3.org/TR/REC-html40"> <head> <meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"= > <meta name=3D"Generator" content=3D"Microsoft Word 15 (filtered medium)"> <style><!-- /* Font Definitions */ @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4;} @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4;} @font-face {font-family:Aptos;} @font-face {font-family:"Segoe UI"; panose-1:2 11 5 2 4 2 4 2 2 3;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {margin:0cm; font-size:12.0pt; font-family:"Aptos",sans-serif;} a:link, span.MsoHyperlink {mso-style-priority:99; color:blue; text-decoration:underline;} span.EmailStyle20 {mso-style-type:personal-compose; font-family:"Aptos",sans-serif; color:windowtext;} .MsoChpDefault {mso-style-type:export-only; font-size:10.0pt; mso-ligatures:none;} @page WordSection1 {size:612.0pt 792.0pt; margin:72.0pt 72.0pt 72.0pt 72.0pt;} div.WordSection1 {page:WordSection1;} --></style> </head> <body lang=3D"EN-GB" link=3D"blue" vlink=3D"purple" style=3D"word-wrap:brea= k-word"> <div class=3D"WordSection1"> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;mso-fareast-language= :EN-US">I tried that earlier but while the PDF is valid, the font name woul= d not match the original PDF. I did find the following on the ISO document:= <br> <br> <o:p></o:p></span></p> <p class=3D"MsoNormal" style=3D"margin-left:36.0pt"><span style=3D"font-siz= e:11.0pt;mso-fareast-language:EN-US">c) Any character that is not a regular= character shall be written using its 2-digit hexadecimal code, preceded by= the NUMBER SIGN only. <br> <br> <o:p></o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;mso-fareast-language= :EN-US">FOP probably has this restriction because we can’t display a = char with an index over 255 with just 2 digits. Still, the original PDF doe= s have that field with chars over 255 so it has to be possible. I’ll keep looking for an alternative.<br> <br> Thanks<o:p></o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-size:11.0pt;mso-fareast-language= :EN-US"><o:p> </o:p></span></p> <div> <div style=3D"border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm = 0cm 0cm"> <p class=3D"MsoNormal"><b><span lang=3D"EN-US" style=3D"font-size:11.0pt;fo= nt-family:"Calibri",sans-serif">From:</span></b><span lang=3D"EN-= US" style=3D"font-size:11.0pt;font-family:"Calibri",sans-serif"> = Luca Bellonda <[email protected]> <br> <b>Sent:</b> 28 January 2026 07:20<br> <b>To:</b> [email protected]<br> <b>Subject:</b> Re: Font names using multi-byte strings<o:p></o:p></span></= p> </div> </div> <p class=3D"MsoNormal"><o:p> </o:p></p> <table class=3D"MsoNormalTable" border=3D"0" cellspacing=3D"0" cellpadding= =3D"0" align=3D"left" width=3D"100%" style=3D"width:100.0%"> <tbody> <tr> <td width=3D"0" style=3D"width:.3pt;background:#A6A6A6;padding:5.25pt 1.5pt= 5.25pt 1.5pt"> </td> <td width=3D"100%" style=3D"width:100.0%;background:#EAEAEA;padding:5.25pt = 3.75pt 5.25pt 11.25pt;aspect-ratio: revert !important;background:revert !im= portant;block-size: revert !important;border:revert !important;bottom: reve= rt !important;color:revert !important;color-scheme: revert !important;conte= nt-visibility: revert !important;cursor:revert !important;direction:revert = !important;display:revert !important;font-size:revert !important;height:rev= ert !important;hyphens: revert !important;letter-spacing:revert !important;= line-height:revert !important;margin:revert !important;opacity: revert !imp= ortant;order: revert !important;outline: revert !important;overflow:revert = !important;padding:revert !important;position:revert !important;resize: rev= ert !important;rotate: revert !important;scale: revert !important;tab-size:= revert !important;table-layout:revert !important;text-align:revert !import= ant;text-indent:revert !important;text-orientation: revert !important;text-= overflow: revert !important;text-shadow:revert !important;text-transform:re= vert !important;text-wrap: revert !important;top:revert !important;transiti= on: revert !important;user-select: revert !important;vertical-align:revert = !important;visibility:revert !important;white-space:revert !important;width= :revert !important;word-break:revert !important;word-spacing:revert !import= ant;writing-mode:revert !important;zoom: revert !important"> <div> <p class=3D"MsoNormal" style=3D"mso-element:frame;mso-element-frame-hspace:= 2.25pt;mso-element-wrap:around;mso-element-anchor-vertical:paragraph;mso-el= ement-anchor-horizontal:column;mso-height-rule:exactly"> <span style=3D"font-size:9.0pt;font-family:"Segoe UI",sans-serif;= color:#212121">You don't often get email from <a href=3D"mailto:[email protected]">[email protected]</a>. <a href=3D"= https://aka.ms/LearnAboutSenderIdentification"> Learn why this is important</a> <o:p></o:p></span></p> </div> </td> <td width=3D"75" style=3D"width:56.25pt;background:#EAEAEA;padding:5.25pt 3= .75pt 5.25pt 3.75pt;aspect-ratio: revert !important;background:revert !impo= rtant;block-size: revert !important;border:revert !important;bottom: revert= !important;color:revert !important;color-scheme: revert !important;content= -visibility: revert !important;cursor:revert !important;direction:revert !i= mportant;display:revert !important;font-size:revert !important;height:rever= t !important;hyphens: revert !important;letter-spacing:revert !important;li= ne-height:revert !important;margin:revert !important;opacity: revert !impor= tant;order: revert !important;outline: revert !important;overflow:revert !i= mportant;padding:revert !important;position:revert !important;resize: rever= t !important;rotate: revert !important;scale: revert !important;tab-size: r= evert !important;table-layout:revert !important;text-align:revert !importan= t;text-indent:revert !important;text-orientation: revert !important;text-ov= erflow: revert !important;text-shadow:revert !important;text-transform:reve= rt !important;text-wrap: revert !important;top:revert !important;transition= : revert !important;user-select: revert !important;vertical-align:revert !i= mportant;visibility:revert !important;white-space:revert !important;width:r= evert !important;word-break:revert !important;word-spacing:revert !importan= t;writing-mode:revert !important;zoom: revert !important;align: left !impor= tant"> </td> </tr> </tbody> </table> <div> <div> <div> <p class=3D"MsoNormal">The ISO 32000-1 standard for PDF 1.7 (available free= of charge from Adobe) in paragraph 7.3.5, page 18, states that the Name ob= ject, in some situations, can interpret numeric bytes as part of a UTF-8 st= ring. There is also a note on Unicode normalization.<o:p></o:p></p> </div> <div> <p class=3D"MsoNormal"><o:p> </o:p></p> </div> <div> <p class=3D"MsoNormal">Accepting all non-illegal characters and converting = them to a UTF-8 sequence would likely be correct, even without generating w= arnings. <o:p></o:p></p> </div> </div> <p class=3D"MsoNormal"><o:p> </o:p></p> <div> <div> <p class=3D"MsoNormal">Il Mar 27 Gen 2026, 22:23 Joao Andre Goncalves <<= a href=3D"mailto:[email protected]">JGoncalves@smartcommun= ications.com</a>> ha scritto:<o:p></o:p></p> </div> <blockquote style=3D"border:none;border-left:solid #CCCCCC 1.0pt;padding:0c= m 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm"> <p class=3D"MsoNormal">I was able to get a valid PDF by removing the 8-bit = restriction, but the font name becomes gibberish. I spent some time looking= for why we have such restriction and the only thing I found was the follow= ing:<br> <a href=3D"https://api.itextpdf.com/iText5/java= /5.5.11/index.html?com/itextpdf/text/pdf/PdfName.html#:~:text=3DClass%20Pdf= Name&text=3DPdfName%20is%20an%20object%20that,(page%2056-58)" target=3D= "_blank"> https://api.itextpdf.com/iText5/java/5.5.11/index.html?com/itextpdf/text/pd= f/PdfName.html#:~:text=3DClass%20PdfName&text=3DPdfName%20is%20an%20obj= ect%20that,(page%2056-58)</a><br> <br> When I went into the Manual mentioned I did not manage to find a reason for= the restriction. I also tried to create a font with the same font name as = the one in your PDF but FontForge had a similar restriction to FOP (ASCII c= haracters only and not the escaped characters).<br> <br> I'm not sure if we should be changing FOP until we determine how the origin= al font was created. If we do change FOP, we could change the exception to = a warning but I'm not sure what else could be impacted by this change.<br> <br> <br> Thanks<br> <br> -----Original Message-----<br> From: Mark Gibson <<a href=3D"mailto:[email protected]" t= arget=3D"_blank">[email protected]</a>><br> Sent: 23 January 2026 09:03<br> To: <a href=3D"mailto:[email protected]" target=3D"_blank">f= [email protected]</a><br> Subject: RE: Font names using multi-byte strings<br> <br> Thanks Chris.<br> <br> Attached is the only example we have, and have knowingly seen. And we= 've been working with Japanese clients for years now.<br> <br> <br> Mark<br> <br> -----Original Message-----<br> From: Chris Bowditch <<a href=3D"mailto:[email protected]" targ= et=3D"_blank">[email protected]</a>><br> Sent: 23 January 2026 14:44<br> To: <a href=3D"mailto:[email protected]" target=3D"_blank">f= [email protected]</a><br> Subject: Re: Font names using multi-byte strings<br> <br> [EXTERNAL]<br> <br> Hi Mark,<br> <br> Are you able to attach your PDF so we can replicate this?<br> <br> Thanks,<br> <br> Chris<br> <br> On 15/01/2026 17:09, Mark Gibson wrote:<br> ><br> > Hi,<br> ><br> > I thought I’d just poll the community on this one, as I can̵= 7;t see it<br> > reported anywhere.<br> ><br> > We have a PDF that lists its fonts using Japanese characters (in this<= br> > case, it’s MS Gothic and MS PGothic, where “Gothic” = actually is in<br> > Japanese characters).<br> ><br> > When trying to import that image using fo:external-graphic<br> > (fop-pdf-images.jar), we get an exception with the message “Only= 8-bit<br> > characters allowed by this implementation”.<br> ><br> > In reviewing FOP code, org.apache.fop.pdf.PDFName.toHex() throws this<= br> > exception if the character id is > 256.<br> ><br> > Does this mean FOP cannot handle cases where the names of PDF records<= br> > are not in simple ascii range?<br> ><br> > Caused by: java.lang.IllegalArgumentException: Only 8-bit characters<b= r> > allowed by this implementation<br> ><br> > at org.apache.fop.pdf.PDFName.toHex(P= DFName.java:78)<br> ><br> > at org.apache.fop.pdf.PDFName.escapeN= ame(PDFName.java:64)<br> ><br> > at org.apache.fop.pdf.PDFName.<ini= t>(PDFName.java:42)<br> ><br> > at<br> > org.apache.fop.render.pdf.pdfbox.PDFCloner.cloneForNewDocument(PDFClon= <br> > er.java:106)<br> ><br> > at<br> > org.apache.fop.render.pdf.pdfbox.PDFCloner.readCOSDictionary(PDFCloner= <br> > .java:154)<br> ><br> > at<br> > org.apache.fop.render.pdf.pdfbox.PDFCloner.cloneForNewDocument(PDFClon= <br> > er.java:104)<br> ><br> > at<br> > org.apache.fop.render.pdf.pdfbox.PDFCloner.readCOSObject(PDFCloner.jav= <br> > a:134)<br> ><br> > at<br> > org.apache.fop.render.pdf.pdfbox.PDFCloner.cloneForNewDocument(PDFClon= <br> > er.java:84)<br> ><br> > at<br> > org.apache.fop.render.pdf.pdfbox.PDFCloner.readCOSDictionary(PDFCloner= <br> > .java:154)<br> ><br> > at<br> > org.apache.fop.render.pdf.pdfbox.PDFCloner.cloneForNewDocument(PDFClon= <br> > er.java:104)<br> ><br> > at<br> > org.apache.fop.render.pdf.pdfbox.PDFCloner.readCOSDictionary(PDFCloner= <br> > .java:154)<br> ><br> > at<br> > org.apache.fop.render.pdf.pdfbox.PDFCloner.cloneForNewDocument(PDFClon= <br> > er.java:104)<br> ><br> > at<br> > org.apache.fop.render.pdf.pdfbox.PDFBoxAdapter.cloneForNewDocument(PDF= <br> > BoxAdapter.java:141)<br> ><br> > at<br> > org.apache.fop.render.pdf.pdfbox.PDFBoxAdapter.createStreamFromPDFBoxP= <br> > age(PDFBoxAdapter.java:212)<br> ><br> > at<br> > org.apache.fop.render.pdf.pdfbox.AbstractPDFBoxHandler.createStreamFor= <br> > PDF(AbstractPDFBoxHandler.java:111)<br> ><br> > at<br> > org.apache.fop.render.pdf.pdfbox.PDFBoxImageHandler.handleImage(PDFBox= <br> > ImageHandler.java:77)<br> ><br> <br> <br> ---------------------------------------------------------------------<br> To unsubscribe, e-mail: <a href=3D"mailto:fop-users-unsubscribe@xmlgraphics= .apache.org" target=3D"_blank"> [email protected]</a><br> For additional commands, e-mail: <a href=3D"mailto:fop-users-help@xmlgraphi= cs.apache.org" target=3D"_blank"> [email protected]</a><br> <br> ________________________________<br> Joao Andre Goncalves<br> Customer Developer<br> <br> t | m 07733161880<br> <a href=3D"mailto:[email protected]">JGoncalves@SmartCommu= nications.com</a><br> <a href=3D"http://smartcommunications.com/" target=3D"_blank">smartcommunic= ations.com</a><<a href=3D"https://www.smartcommunications.com/" target= =3D"_blank">https://www.smartcommunications.com/</a>><br> <br> [<a href=3D"https://www.smartcommunications.com/wp-content/uploads/025_Tren= ds2026-450x160_v1.jpg" target=3D"_blank">https://www.smartcommunications.co= m/wp-content/uploads/025_Trends2026-450x160_v1.jpg</a>]<<a href=3D"https= ://scale.smartcommunications.com/2026-Trends-White-Paper.html?utm_source=3D= outlook&utm_medium=3Demail&utm_campaign=3Dwc-global-2026-white-pape= r-2026-trends" target=3D"_blank">https://scale.smartcommunications.com/2026= -Trends-White-Paper.html?utm_source=3Doutlook&utm_medium=3Demail&ut= m_campaign=3Dwc-global-2026-white-paper-2026-trends</a>><br> <br> Explore the new era of AI-powered customer engagement. Get your copy of the= 2026 Trends Report now.<<a href=3D"https://scale.smartcommunications.co= m/2026-Trends-White-Paper.html?utm_source=3Doutlook&utm_medium=3Demail&= amp;utm_campaign=3Dwc-global-2026-white-paper-2026-trends" target=3D"_blank= ">https://scale.smartcommunications.com/2026-Trends-White-Paper.html?utm_so= urce=3Doutlook&utm_medium=3Demail&utm_campaign=3Dwc-global-2026-whi= te-paper-2026-trends</a>> Smart Communications is a trading name of SmartComms SC Limited which is r= egistered in England under No. 4303041 whose registered office is at Suite = 23, LCLB, 95 Mortimer Street, London, W1W 7GB. Please consider the environm= ent before printing. The contents of this e-mail are intended for the named addressee only. It contains conf= idential information. Unless you are the named addressee or an authorized d= esignee, you may not copy or use it, or disclose it to anyone else. If you = received it in error please notify us immediately and then destroy it. Smart Communications will process your= data as described in the Smart Communications' External Privacy Policy.<= ;<a href=3D"https://www.smartcommunications.com/external-privacy-policy/" t= arget=3D"_blank">https://www.smartcommunications.com/external-privacy-polic= y/</a>><br> <br> Follow us on LinkedIn,<<a href=3D"https://www.linkedin.com/company/15166= 060/admin/" target=3D"_blank">https://www.linkedin.com/company/15166060/adm= in/</a>> YouTube,<<a href=3D"https://www.youtube.com/@Smart_Communica= tions/" target=3D"_blank">https://www.youtube.com/@Smart_Communications/</a= >> and X.<<a href=3D"https://x.com/ccminnovators?lang=3Den" target=3D"_bla= nk">https://x.com/ccminnovators?lang=3Den</a>><br> <br> ---------------------------------------------------------------------<br> To unsubscribe, e-mail: <a href=3D"mailto:fop-users-unsubscribe@xmlgraphics= .apache.org" target=3D"_blank"> [email protected]</a><br> For additional commands, e-mail: <a href=3D"mailto:fop-users-help@xmlgraphi= cs.apache.org" target=3D"_blank"> [email protected]</a><o:p></o:p></p> </blockquote> </div> </div> </div> </body> </html> --_000_AS8PR04MB7942704DF28C191FF7109323DD9EAAS8PR04MB7942eurp_--