@font -лицо с летающей тарелкой

Я надеюсь, что кто-нибудь может мне помочь... кажется, что то, что я пытаюсь сделать, должно быть довольно простым, но я борюсь с этим уже больше дня, и у меня закончились идеи. Я нашел много информации о StackOverflow и в Интернете в целом, но ничто не помогло мне решить эту проблему.

Я пытаюсь использовать itext -2.0.8 вместе с основным -визуализатором -R8 для создания PDF-файла со встроенным шрифтом. Я пытаюсь создать PDF-файл из действительного XHTML и встраиваю шрифт, используя тег стиля лица @font -. Я подтвердил, что тег лица @font -включает шрифт, открыв файл в браузере. И я всегда стараюсь, чтобы поле TTF соответствовало документу XHTML/CSS.

Чтобы попытаться пройти через это, я создал небольшую программу типа «Hello World», чтобы попытаться встроить шрифт. Я использовал два разных подхода, и оба они не дали желаемого результата. Я разместил копию этой небольшой программы Eclipse по адресу http://christopherluft.com/FlyingSaucer.zip

. Программа создает PDF-файл в обоих случаях, но ни один из них не встраивается должным образом. Первый метод, использующий файл с setDocument, не выдает ни ошибок, ни шрифтов. И второй метод создает PDF, но показывает java.net.MalformedURLException в выходных данных отладки.

Я испробовал многочисленные перестановки различных путей и URL-адресов; однако ни один из них не приводит к желаемому результату. Я подозреваю, что я что-то не понимаю в ITextRenderer.setDocument; однако мне было очень трудно найти какую-либо подходящую документацию, относящуюся к моему варианту использования.

Первый метод, который я пытаюсь использовать, это:

public static void main(String[] args) throws IOException, DocumentException {

    System.getProperties().setProperty("xr.util-logging.loggingEnabled",
            "true");
    XRLog.setLoggingEnabled(true);

    String inputFile = "sample.xhtml";
    String url = new File(inputFile).toURI().toURL().toString();
    String outputFile = "firstdoc.pdf";

    OutputStream os = new FileOutputStream(outputFile);

    ITextRenderer renderer = new ITextRenderer();
    renderer.setDocument(url);
    renderer.layout();
    renderer.createPDF(os);

    os.close();
}

И второй метод, который я использую (, который ближе к фактическому способу, которым мы используем его в нашем приложении ), это:

public static void main(String[] args)  throws IOException, DocumentException {

    System.getProperties().setProperty("xr.util-logging.loggingEnabled", "true");
    XRLog.setLoggingEnabled(true);

    String inputFile = "sample.xhtml";
    String url = new File(inputFile).toURI().toURL().toString();

    DocumentBuilder documentBuilder;
    org.w3c.dom.Document xhtmlContent;

    try 
    {
        documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
        documentBuilder.setEntityResolver(new XhtmlEntityResolver(new SuppressingEntityResolver()));
        xhtmlContent = documentBuilder.parse(url);

        System.out.println(url);

        String outputFile = "firstdoc.pdf";
        OutputStream os = new FileOutputStream(outputFile);
        ITextRenderer renderer = new ITextRenderer();

        renderer.setDocument(xhtmlContent,".");
        renderer.layout();
        renderer.createPDF(os);

        System.out.println("Finishing up....");
        os.close();
    } 
    catch (SAXException e) 
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } 
    catch (ParserConfigurationException e) 
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }   
}

И @font -включение лица в XHTML выглядит следующим образом:

@font-face {

    font-family: 'MisoRegular';

    src: url("miso-regular-webfont.ttf");

    -fs-pdf-font-embed: embed;

    -fs-pdf-font-encoding: Identity-H;
}

Теперь я чувствую, что это действительно распространенный вариант использования, и я представляю, что мне просто не удается выполнить один простой шаг, чтобы заставить это работать... проблема в том, что я занимаюсь этим какое-то время и думаю, что не могу увидеть лес за деревьями. Любая помощь, которую кто-либо может предложить мне, будет принята с благодарностью. Спасибо за уделенное время.

6
задан rjohnston 17 January 2017 в 20:21
поделиться