Печать китайских иероглифов не исправлена ​​в SourceHanSansSC-Medium.otf - PullRequest
0 голосов
/ 28 марта 2019

Описание:

Я столкнулся с проблемой, заключающейся в том, что китайский символ (胸) обычно отображается в html со шрифтом 'SourceHanSansSC-Medium.otf', но печатается в довольно странной позициив то время как html напечатан службой реактора pdf.

Если я заменю его на SourceHanSansSC-Norml.otf, то и предварительный просмотр html, и сгенерированный pdf с помощью pdf-реактора будут работать хорошо, только использование SourceHanSansSC-Medium.otf приведет к этой проблеме.

Моя среда:

  • Система: Mac OS 10.12.6, версия реактора Java 8 Pdf: 10.0.

Подготовка:

Я вытащил изображение реактора pdf из док-концентратора и запустил его как локальный док-контейнер, чтобы мое приложение могло его посетить, http://localhost:9423/service/rest.

Я пишу очень простоhtml содержит символ ошибки в SourceHanSansSC-Medium.otf и SourceHanSansSC-Medium.otf , просто для сравнения результата двух шрифтов.Они оба отображаются правильно в предварительном просмотре html, и в неправильном положении будет напечатан только символ среднего шрифта.

Я сопоставил свой локальный родительский путь html с pdf-реактором / ro / config, чтобы убедиться, что PDF-реакторвозможность получить HTML для печати. ​​

HTML-код:

Это мой HTML-код «print_sc_font.html» (я прикрепил HTML-шрифты в zip):

<html>

<head>

 <style type="text/css">

  @font-face {

      font-family: shssc-normal;

      src: url("./SourceHanSansSC-Normal.otf");

  }



  @font-face {

      font-family: shssc-medium;

      src: url("./SourceHanSansSC-Medium.otf");

  }



 </style>

</head>

<body>

 <div style="font-family: shssc-normal;">Print by SC Normal Font: 肺癌</div>

 <div style="font-family: shssc-medium;">Print by SC Medium Font: 肺癌</div>

</body>

</html>

Предварительный просмотр в порядке. введите описание изображения здесь

Код печати Java (PdfReactorTest.java):

package com.gc.dev;

import com.realobjects.pdfreactor.webservice.client.Configuration;
import com.realobjects.pdfreactor.webservice.client.PDFreactor;
import com.realobjects.pdfreactor.webservice.client.PDFreactorWebserviceException;
import com.realobjects.pdfreactor.webservice.client.Result;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class PDFReactorTest {
    public static void main(String[] args) {

        DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        Date date = new Date();
        String timeStamp = dateFormat.format(date);
        // Create new PDFreactor instance
        PDFreactor pdfReactor = new PDFreactor("http://localhost:9423/service/rest");

        // Create a new configuration object
        Configuration config = new Configuration()
       // Specify the input document for Mac systems (adapt path if necessary)            .setDocument("file:///ro/config/html/test/print_sc_font.html")
                // Enable javaScriptSettings

                .setJavaScriptMode(Configuration.JavaScriptMode.ENABLED)
                // Set an appropriate log level
                .setLogLevel(Configuration.LogLevel.DEBUG)
                // Sets the title of the created PDF
                .setTitle("Demonstration of PDFreactor Java API")
                // Sets the author of the created PDF
                .setAuthor("Myself")
                // Enables links in the PDF document.
                .setAddLinks(true)
                // Enable bookmarks in the PDF document
                .setAddBookmarks(true)
                // Set some viewer preferences
                .setViewerPreferences(
                        Configuration.ViewerPreferences.FIT_WINDOW,
                     Configuration.ViewerPreferences.PAGE_MODE_USE_THUMBS)

                // Add user style sheets

                .setUserStyleSheets(

                        new Configuration.Resource().setContent("@page {" +

                                "@top-center {" +

                                "content: 'PDFreactor Java API demonstration';" +

                                "}" +

                                " @bottom-center {" +

                                "content: \"Created on " + timeStamp + "\";" +

                                "}" +

                                "}"),

                        new Configuration.Resource().setUri("common.css"));

        FileOutputStream fos = null;
        try {
            // Render document and save result to result
            Result result = pdfReactor.convert(config);
            if (result != null) {
                byte[] pdf = result.getDocument();
                //Save the pdf at the desired location
                fos = new FileOutputStream("result.pdf");
                fos.write(pdf);
                fos.close();
            }
        } catch (PDFreactorWebserviceException exception) {
            Result result = exception.getResult();
            System.err.println(result.getError());

        } catch (Exception e) {

        } finally {
            if (fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                }

            }

        }
    }

}

Результат pdf: введите описание изображения здесь

Я приложил свой код и снимок экрана.

SourceHanSansSC-Normal.otf слишком велик для прикрепления,поэтому два файла шрифтов SourceHanSansSC-Normal и SourceHanSansSC-Medium.otf можно загрузить с https://github.com/adobe-fonts/source-han-sans/tree/release/OTF/SimplifiedChinese,

1 Ответ

0 голосов
/ 29 марта 2019

Мы можем повторить это поведение, используя ваши шрифты.Это известная проблема, о которой сообщается как № 7530 в нашем внутреннем трекере.Проблема заключается в том, что подмножество шрифтов, содержащее определенные символы, не внедрено должным образом.В качестве обходного пути вы можете убедиться, что весь шрифт внедрен, добавив свойство "-ro-font-embedding-type: all;"к объявлению правила "@ font-face" для этого шрифта, например:

@font-face {
​font-family: shssc-medium;
-ro-font-embedding-type: all;
src: url("./SourceHanSansSC-Medium.otf");
}
...