Почему Apache Batik растеризует документы SVG, перекодированные в PDF, если для непрозрачности установлено значение меньше единицы? - PullRequest
0 голосов
/ 12 декабря 2018

Я заметил, что когда я использую Apache Batik для перекодирования документов SVG в PDF с непрозрачностью менее одного Batik, создаст растровую версию SVG и поместит ее вместо этого в pdf.При работе с печатью это нежелательно.Есть ли какая-то причина, по которой Батик делает это?Можно ли как-нибудь избежать такого выравнивания документов SVG независимо от их непрозрачности?

Наш код для создания транскодера:

PDFTranscoder pdfTranscoder = new PDFTranscoder();
pdfTranscoder.addTranscodingHint(PDFTranscoder.KEY_PIXEL_UNIT_TO_MILLIMETER, PIXEL_CONVERSION);
pdfTranscoder.addTranscodingHint(PDFTranscoder.KEY_AUTO_FONTS, false);

Затем мы берем SVG, который возвращается из element.getEncodedData() какSVG-строка.

TranscoderInput input = new TranscoderInput(new ByteArrayInputStream(element.getEncodedData().getBytes()));
TranscoderOutput output = new TranscoderOutput(byteStream);
pdfTranscoder.transcode(input, output);

Для непрозрачности мы редактируем SVG, добавляя группу.Рассмотрим следующий svg: Обратите внимание, что многие теги разметки были удалены, чтобы сделать пример кратким:

<svg>
    <rect x="100" y="100" width="100" height="100" />
</svg>

Мы бы отредактировали этот SVG, чтобы он выглядел как

<svg>
    <g opacity="0.5">
        <rect x="100" y="100" width="100" height="100" />
    </g>
</svg>
...