Поскольку вы не показываете никакого кода, трудно понять, используете ли вы новый 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.