Поддерживает ли PDFTranscoder (org. apache .fop) гиперссылки? - PullRequest
1 голос
/ 22 марта 2020

Я пытаюсь преобразовать документ SVG в PDF с использованием Batik (v1.12) и PDFTranscoder (fop v2.4).

Проблема в том, что мой SVG содержит ссылки, которые каким-то образом не транскодируется в PDF. Это поддерживается, или есть известная проблема для этого, или я пытаюсь использовать это неправильно?

Ниже приведена разметка SVG (самая простая, для которой я могу воспроизвести проблему) входной документ :

<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="500"
     height="500" x="0" y="0">
    <g>
        <a target="_blank" xlink:href="https://www.google.com">
            <text x="50%" y="50%" style="font: 13px sans-serif"
                  text-anchor="middle" fill="rgb(0, 0, 0)">TEST
            </text>
        </a>
    </g>
</svg>

Также упрощенный фрагмент кода в Java, который я использую для транскодирования:

public void convert(InputStream svgIn, OutputStream pdfOut) throws SvgExportException {
    String                parserName = XMLResourceDescriptor.getXMLParserClassName();
    SAXSVGDocumentFactory factory    = new SAXSVGDocumentFactory(parserName);

    try {
      Document      document = factory.createDocument("svg", svgIn);
      PDFTranscoder t        = new PDFTranscoder();

      TranscoderInput  input  = new TranscoderInput(document);
      TranscoderOutput output = new TranscoderOutput(outputStream);

      try {
        transcoder.transcode(input, output);
      } catch (TranscoderException e) {
        throw new SvgExportException("Internal Error: Transcoding the SVG Document to PDF failed.", getReasonForTranscoderException(e));
      }
    } catch (IOException e) {
      throw new CustomTechnicalException(e);
    }
  }

Выходной документ PDf можно просмотреть здесь . Как видите, при наведении на текст (и нажатии на него) ссылки нет.

Спасибо за любую помощь в этом!

...