Я взглянул на PDF, и это не проблема iText. Это проблема «Мусор, мусор». Пожалуйста, откройте PDF в Acrobat и проанализируйте его для синтаксических ошибок. Вы получите следующее сообщение:
Поток содержание PDF неправильно таким образом, что даже Acrobat не может анализировать его и сказать вам, что это неправильно.
Итак, я заглянул в файл и, когда он выглядит так, как будто iText не видит ресурсы страницы для страницы. Ресурсы страниц относятся к шрифтам. Если iText не может видеть ресурсы страницы, iText не может видеть шрифты, и они теряются в процессе.
Если Acrobat разрешит мне «Анализировать и исправить», я мог бы создать фиксированный PDF-файл и сравнить то, что было исправлено. Но по мере того как Acrobat не может исправить файл, очень много работы, чтобы просмотреть полный файл вручную, чтобы узнать, что именно с ним не так. Из любопытства, я открыл документ в текстовом редакторе, и я нашел это:
4 0 obj
<<
/ProcSet [ /PDF /Text ]
/Font <<
/F1 7 0 R
/F2 8 0 R
/F3 11 0 R
>>
/Shading <<
/grad0 10 0 R
/grad0#2 15 0 R
/grad1#2 17 0 R
/grad2#2 19 0 R
/grad3#2 21 0 R
/grad4#2 23 0 R
/grad5#2 25 0 R
>>
>>
endobj
Проблема вызвана именами /grad0#2
, /grad1#2
и т.д ... Те, кто не являются допустимыми именами. Процитирую из ISO-32000-1:
При написании имени в файле PDF, SOLIDUS (2Fh) (/) используется ввести имя. SOLIDUS не является частью имени, но это приставка, указывающая на то, что следует последовательность символов представляющих имя в файле PDF и должны следовать этим правилам:
а) символ (23H) (#) в имени записывается с использованием его двухзначного шестнадцатеричного кода (23), которому предшествует NUMBER SIGN.
б) Любой символ в имени, которое является регулярным характером (кроме НОМЕРА SIGN) должен быть записан как таковые, либо с помощью его 2-значных шестнадцатеричного код, которому предшествует знак номера.
c) Любой символ, который не является обычным символом , записывается с использованием его двухзначного шестнадцатеричного кода, , которому предшествует только NUMBER SIGN.
В вашем случае у вас есть NUMBER SIGN (#), за которым следует 1-значный номер.Это не имеет никакого смысла. Недопустимый PDF-файл.
Короче говоря: обратитесь к производителю PDF и попросите его исправить проблему или никогда не использовать его инструменты.
Я никогда не видел этого раньше. Какую версию iText вы используете? Можете ли вы поделиться PDF_SOURCE_FILE и WATERMARK? –
Я пробовал с новейшей версией iText. Если вы хотите взглянуть на него, я могу отправить вам zip, содержащий af testcase? Как я могу в конечном итоге предоставить вам файлы? –
Поместите их на сайт и укажите URL-адрес. –