Установить PDF версию используя iTextSharp - PullRequest
4 голосов
/ 08 июня 2011

Кто-нибудь знает, как программно сохранить PDF-файл как версию PDF с более низким уровнем, используя iTextSharp, чтобы вы могли использовать определенные функции iTextSharp, для которых требуется, чтобы PDF был версией 5 или ниже?

Я пытаюсь объединить дваPDF версия 7 документирует вместе, и настаивает на том, чтобы они были версии 5 или ниже.

Ответы [ 4 ]

5 голосов
/ 30 сентября 2013
///for itextSharp 5.4.4
PdfReader reader = new PdfReader(pdfPath);
PdfStamper stamper = new PdfStamper(reader, outputStream); 
stamper.Writer.setPdfVersion(PdfWriter.PDF_VERSION_1_4); 
stamper.close(); 
3 голосов
/ 08 июня 2011

Как странно. PDF-версии в основном являются предложением. PDF-файлы должны начинаться с чего-то вроде:

%PDF-1.x

Где Х 0,1,2, ...

Это просто ключ к приложению, которое читает PDF. Единственная подсказка. Большинство запросов «Мне нужна версия X», которые я вижу от разных клиентов, являются поддельными. Мои знакомые программисты iText знают это, поэтому мне кажется странным, что iText запрашивает другую версию.

Вы уверены, что iText запрашивает v5?

В любом случае, чтобы ответить на ваш вопрос:

Да, iText может изменить номер версии PDF. К сожалению, это можно сделать только при записи PDF-файла, а не при его чтении. Вам придется открыть PDF-файл, изменить его версию и снова сохранить.

Возможно, вы могли бы обмануть. Считайте PDF-файлы в байтовые массивы и pdfBytes[7] = 4;, затем передайте эти байты в PdfReader.

Версия 1 спецификации PDF - 1.0 Версия 2 1.1 ...

Так что если вы хотите pdf версию 5, вам нужно написать «1.4», а не «1.5».

Если вам неудобно воткнуть такой байт, вы можете проанализировать весь PDF, изменить версию, а затем записать все заново:

 PdfReader reader = new PdfReader(pdfPath);
 PdfStamper stamper = new PdfStamper(reader, outputStream);
 stamper.setPdfVersion(PdfWriter.PDF_VERSION_1_4);
 stamper.close();

Затем вы прочитаете его снова и объедините, как и раньше.

0 голосов
/ 10 марта 2016

Используйте это: writer.PdfVersion = PdfWriter.VERSION_1_3;

Это сработало для меня

0 голосов
/ 03 мая 2013

Похоже, это больше не действует, ну, по крайней мере, для меня это не сработало.Тем не менее, я нашел это, и это сработало для меня: http://itext -общ ..2136553.n4.nabble.com / iTextSharp-PDF-version-td3477631.html .

...