Символ не отображается в PDF - PullRequest
1 голос
/ 18 февраля 2020

При создании документа PDF на основе информации о конкретной системе c, используя fop, я не могу отображать специальные символы, показывая «#» вместо символа и давая мне эти ПРЕДУПРЕЖДЕНИЯ при создании PDF.

12:49:18,637 WARN  [org.apache.fop.apps.FOUserAgent] (default task-3) Glyph "?" (0x11f, gbreve) not available in font "Helvetica".
12:49:18,640 WARN  [org.apache.fop.apps.FOUserAgent] (default task-3) Glyph "?" (0x15e, Scedilla) not available in font "Helvetica".
12:49:19,041 INFO  [org.apache.fop.apps.FOUserAgent] (default task-3) Rendered page #1.
12:49:19,203 WARN  [org.apache.fop.apps.FOUserAgent] (default task-3) Glyph "?" (0x11f, gbreve) not available in font "Helvetica-Bold".
12:49:19,206 WARN  [org.apache.fop.apps.FOUserAgent] (default task-3) Glyph "?" (0x15e, Scedilla) not available in font "Helvetica-Bold".

Я уже изменил семейство шрифтов в .xsl, но без прогресса, теперь он выглядит так, я думаю, что он использует fop.xconf, который имеет все шрифты и типы.

 <!-- Helvetica -->
        <font>
          <afp-font name="Helvetica" type="raster" codepage="T1V10500" encoding="Cp500">
....
</font>

и .xsl:

<fo:block-container absolute-position="absolute" left="25mm" top="42mm" width="160mm" height="100mm"
                                        background-color="rgb(178,178,178)">
                        <fo:block color="white" font-size="29pt">
                            <fo:inline font-weight="bold">PDF</fo:inline> Report <xsl:value-of select="year"/>
                        </fo:block>
                        <fo:block color="white" font-size="16pt" margin-top="3mm">
                            <xsl:value-of select="name"/>
                        </fo:block>
                        <fo:block color="white" font-size="16pt">
                            <xsl:value-of select="address"/>
                        </fo:block>
                    </fo:block-container>

что я могу сделать больше? это ново для меня, и уже видел некоторые похожие темы в Stackoverflow, но ни одна из них не помогла.

РЕДАКТИРОВАТЬ: Быстрое обновление, может быть, xconf не используется вообще? потому что я уже удалил все, и изменений нет, потому что я пытаюсь добавить FreeSerif, но ничего не произошло ..

Ответы [ 2 ]

1 голос
/ 27 февраля 2020

Хорошо, я понял это. Это был мой файл fop.xconf, который игнорировался, я имею в виду, я был со значениями по умолчанию при создании PDF. Чтобы исправить это просто отредактировал следующие файлы:

fop.xconf

...
<fonts>
<auto-detect/>
</fonts>
...

file.xsl

<fo:root font-family="Arial">
    <!-- rest of document -->
</fo:root

FopFactoryWithUserAgentAndTransformerFactoryService. java

//get the fop.xconf file to be read by the app
  final URL uri = getClass()
            .getClassLoader()
            .getResource("/pdf/fopfactorybasedir/fop.xconf");
   try{
        if(uri != null){
            fopFactory = FopFactory.newInstance(new File(uri.getFile()));
            foUserAgent = fopFactory.newFOUserAgent();
            transformerFactory = TransformerFactory.newInstance();
        }
    }catch (SAXException | IOException e)
    {
        e.printStackTrace();
    }

С этим я получил инъекционный файл xconf! так что помните, всегда проверяйте, читает ли приложение файл xconf!

1 голос
/ 19 февраля 2020

Ифурини, я видел твой старый ответ и застрял на шаге 2, потому что у меня нет этого «конф» режиссера. Я использую его в программе Java, я получил его в src / main / resources / pdf / fopfactorybasedir внутри этого каталога. У меня есть одна папка для отображения изображений в моих файлах pdf и fop.xconf (чего я не могу найти где-нибудь в коде ... вот почему я говорю, что он вообще не используется ..) вот мой код *

Вопрос в том, как я могу использовать мой файл fop.xconf? может быть, если я воспользуюсь им, этого будет достаточно ...?

...