Как встроить файлы AI (Adobe Illustrator)/SVG/PDF в PDF непосредственно в iText Java, чтобы избежать сбоев рендеринга?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как встроить файлы AI (Adobe Illustrator)/SVG/PDF в PDF непосредственно в iText Java, чтобы избежать сбоев рендеринга?

Сообщение Anonymous »

Файлы SVG не отображаются должным образом в iText Java. Мне нужно найти лучший способ вставки векторных изображений в мои PDF-файлы.
Я хотел бы программно создавать PDF-файлы с некоторыми векторными изображениями и текстами. iText — одна из лучших библиотек для обработки PDF-файлов в сообществе Java. Поэтому я написал программу с iText, соответствующую моим потребностям. Мои векторные изображения изначально были созданы в Adobe Illustrator, который не поддерживается напрямую в iText. Прочитав примеры iText, я обнаружил, что iText поддерживает файлы SVG, поэтому конвертирую свои векторные графики в SVG. Однако iText по-прежнему отображал эти SVG неправильно. Некоторого цвета не хватало. Вот очень простая демонстрация, позволяющая воспроизвести проблему:
Сначала добавьте зависимости Maven (я использую последнюю версию 9.0.0):

Код: Выделить всё

    

com.itextpdf
itext-core
9.0.0
pom


Во-вторых, напишите простой Java-класс:

Код: Выделить всё

package net.opho.demo;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Image;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.properties.HorizontalAlignment;
import com.itextpdf.svg.converter.SvgConverter;
import java.io.FileInputStream;
public class main {
public static void main(String[] args) throws Exception {
String svgPath = "C:\\develop\\OPhOLogo.svg";
String outputPdfPathDemo = "C:\\develop\\demo.pdf";
try (FileInputStream svg = new FileInputStream(svgPath)) {
PdfDocument pdf = new PdfDocument(new PdfWriter(outputPdfPathDemo));
Image logo = SvgConverter.convertToImage(svg, pdf).setWidth(200).setHorizontalAlignment(HorizontalAlignment.CENTER);
Paragraph text = (new Paragraph("Some texts...")).setFontSize(20);
Document documentDemo = new Document(pdf);
documentDemo.add(logo);
documentDemo.add(text);
documentDemo.close();
}
}
}
В этом примере использованный мною SVG-файл можно просмотреть или загрузить отсюда.
В результирующем PDF-файле показано:

который сильно отличается от исходного SVG-файла по цвету!
На мой взгляд, это хороший способ решения эта проблема чтобы избежать использования файлов SVG. Признано, что файлы Adobe Illustrator очень похожи на файлы PDF. Вы можете использовать программу просмотра PDF, чтобы напрямую открывать файлы AI. Так почему бы не встроить AI-файлы напрямую в PDF-файл (как часть)? Я знаю, что многие компоновщики документов (например, компиляторы латекса pdflatex и xelatex) поддерживают включение PDF-файлов в виде рисунков в PDF-файл, но как я могу сделать то же самое с iText? Я могу объединить файлы AI в файл PDF в iText, но такие подходы создают новую страницу в PDF, я просто хочу, чтобы векторный график был частью (например, изображение) страницы PDF. Как я могу это сделать?
Если приведенное выше размышление не является хорошим способом или вы знаете, как устранить ошибку рендеринга SVG, скажите мне. Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/792 ... tly-in-ite
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»