iText устанавливает уровень соответствия - PullRequest
0 голосов
/ 27 мая 2018

В настоящее время я пытаюсь создать файл PDF с уровнем соответствия A-1a с помощью iText для C #.Это то, что у меня есть:

var exportFolder = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
var exportFile = System.IO.Path.Combine(exportFolder, "Test.pdf");

var writer = new PdfWriter(exportFile);
var pdf = new PdfDocument(writer);
var document = new Document(pdf);
document.Add(new Paragraph("Hello World! Tom"));
document.Close();

Как мне установить для этого уровень соответствия?

РЕДАКТИРОВАТЬ

Я нашелэто в их документации: https://developers.itextpdf.com/content/itext-7-jump-start-tutorial-net/chapter-7-creating-pdfua-and-pdfa-documents

Но я не понимаю, что мне нужно заменить INTENT в третьей строке кода.Может ли кто-нибудь дать мне полный пример только с одной строкой Hello World.Это не обязательно должен быть iText.Я открыт для других инструментов.

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Шаг 1:

Загрузка цветового профиля.
Вы можете использовать тот, который представлен в примере iText.http://gitlab.itextsupport.com/itext7/samples/blob/develop/publications/jumpstart/src/main/resources/color/sRGB_CS_profile.icm

Шаг 2:

//Initialize PDFA document with output intent
PdfADocument pdf = new PdfADocument(new PdfWriter(dest), PdfAConformanceLevel.PDF_A_1B, new PdfOutputIntent
            ("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", new FileStream("sRGB_CS_profile.icm", FileMode.Open, FileAccess.Read
            )));

Document document = new Document(pdf);

//Fonts need to be embedded
PdfFont font = PdfFontFactory.CreateFont(FONT, PdfEncodings.WINANSI, true);
Paragraph p = new Paragraph();
p.SetFont(font);
p.Add(new Text("The quick brown "));

iText.Layout.Element.Image foxImage = new Image(ImageDataFactory.Create(FOX));    
p.Add(foxImage);

p.Add(" jumps over the lazy ");

iText.Layout.Element.Image dogImage = new iText.Layout.Element.Image(ImageDataFactory.Create(DOG));
p.Add(dogImage);

document.Add(p);
document.Close();
0 голосов
/ 31 мая 2018

Попробуйте заменить эту строку

var pdf = new PdfDocument(writer);

на эту

PdfADocument pdf = new PdfADocument(new PdfWriter(exportFile), PdfAConformanceLevel.PDF_A_1B, new PdfOutputIntent
("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", new FileStream(INTENT, FileMode.Open, FileAccess.Read
)));
Document document = new Document(pdf);
// Etc...

Кроме этого, мой совет всегда объявлять класс экземпляра и не оставлять универсальный (с помощью var), как вы можете видеть из моего примера кода.

Надеюсь, это будет работать!Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...