Вставьте CSV-файл в виде вложения в PDF-файл JAVA - PullRequest
0 голосов
/ 01 июня 2018

Мне нужно сгенерировать PDF, который содержится внутри CSV-файла в виде вложения, которое можно открыть (дважды щелкнув по нему).Есть ли способ сделать это программно в JAVA?Спасибо.

1 Ответ

0 голосов
/ 01 июня 2018

Поскольку вы не показываете никакого кода, трудно понять, используете ли вы новый iText 7 или старый (и больше не поддерживается) iText 5.

Также неясно, хотите ли выприкрепить как вложение на уровне документа (видимое только на панели вложений в PDF) или как аннотацию файла (также видимое на странице).

Предположим, что вы новичок в iText, и чтоВы начали с самой последней версии.В этом случае вы можете добавить вложение уровня документа следующим образом:

PdfDocument pdfDoc = new PdfDocument(new PdfWriter(DEST));
PdfFileSpec fs = PdfFileSpec.createEmbeddedFileSpec(pdfDoc,
    PATH, null, "test.csv", null, null, false);
pdfDoc.addFileAttachment("specificname", fs);

В этом случае PATH - это путь к файлу CSV.

Код iText 7 дляДобавление аннотации вложения файла выглядит следующим образом:

PdfDocument pdfDoc = new PdfDocument(new PdfWriter(DEST));
Rectangle rect = new Rectangle(36, 700, 100, 100);
PdfFileSpec fs = PdfFileSpec.createEmbeddedFileSpec(pdfDoc,
    PATH, null, "test.csv", null, null, false);
PdfAnnotation attachment = new PdfFileAttachmentAnnotation(rect, fs)
            .setContents("Click me");
pdfDoc.addNewPage().addAnnotation(attachment);

Прямоугольник rect определяет положение и размеры аннотации.Если вы хотите добавить аннотацию вложенного файла в существующий документ, вы можете создать PdfDocument, который также принимает экземпляр PdfReader в качестве параметра.

Если по какой-то причине вы все еще хотите использовать старый iTextзатем вы можете добавить вложение на уровне документа следующим образом:

PdfFileSpecification fs = PdfFileSpecification.FileEmbedded(
    writer, null, fileName, csv_stream;
fs.AddDescription("specificname", false);
writer.AddFileAttachment(fs);

Или вот так:

PdfFileSpecification fs = PdfFileSpecification.FileEmbedded(
    writer, null, fileName, csv_stream);
fs.AddDescription("specificname", false);
stamper.AddFileAttachment(fs);

Первый фрагмент предназначен для случаев, когда у вас есть экземпляр PdfWriter, потому что высоздаем документ с нуля;последний фрагмент предназначен для случая, когда у вас есть экземпляр PdfStamper, потому что вы добавляете вложение в существующий документ.

Для аннотации вложения файла вам понадобится следующий код:

PdfFileSpecification fs = PdfFileSpecification.fileEmbedded(
    writer, null, fileName, csv_stream);
PdfAnnotation attachment =
    PdfAnnotation.createFileAttachment(writer, rect, fileName, fs);
writer.addAnnotation(attachment);

Или, если у вас нет writer, но stamper:

stamper.addAnnotation(attachment, p);

, где p - номер страницы.

Очевидно, рекомендуется использоватьiText 7 более перспективен, чем iText 5.

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