Я заметил, что когда я использую 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>