У меня нет точного ответа, но у меня есть идея, что это немного больше, чем комментарий ...
Поскольку вы уже знакомы со спецификациями PDF, вот что вы должны попробовать:
Выясните, как на самом деле fpdf рисует эти линии. Скорее всего, PDF-файл, который он выводит, сжат, поэтому вы должны скачать pdftk , чтобы распаковать его. Это можно сделать с помощью команды:
pdftk fpdf_output.pdf output fdf_readable.pdf uncompress
Откройте PDF-файл в текстовом редакторе и посмотрите, отрисовываются ли линии так же, как в примере с PDF-спецификациями, которые вы просматриваете.
Если нет, посмотрите, есть ли в методе fpdf для рисования линий опция сглаживания (я имею в виду в спецификации PDF). Если fpdf рисует его таким же образом (или если у их пути есть опция), попробуйте изменить выходной документ (в текстовом редакторе), чтобы отключить сглаживание. Если документ не открывается после редактирования в текстовом редакторе, вы можете запустить:
pdftk fdf_readable.pdf output fdf_fixed.pdf
и это должно исправить любые неработающие ссылки или количество байтов.
Затем откройте свой измененный PDF-файл, чтобы посмотреть, похоже ли это на то, что вы собираетесь.
Вот плохие новости: единственное, что выполняет вышеизложенное, это проверка того, что сглаживание возможно или невозможно с помощью методов, которые fpdf использует под капотом. Если это возможно, есть некоторая надежда на то, что эта функция уже существует или вы можете сделать запрос на функцию, или если вы чувствуете себя действительно уверенно, вы можете попытаться расширить fpdf, включив в него какой-то метод antialias("true|false")
. Если метод, который они используют для рисования линий, не совпадает со спецификацией и не имеет возможности отключить сглаживание, лучше всего найти альтернативный генератор PDF, такой как tcpdf и посмотреть, предлагают ли они эту функцию.
Обновление
Хорошо, я хотел бы сначала указать, что я все еще не вижу размытость. Поэтому я не могу сказать, действительно ли это решает вашу проблему. Но я добавил правило автоматической регулировки обводки к вашему примеру, и PDF все еще открывается.
Чтобы не публиковать весь PDF снова, вот как вы можете обновить пример кода:
.........
/Font <<
>>
/XObject <<
>>
//Start my edit right below this point in your example, so at line 31, add:
/ExtGState << /GS1 10 0 R
>>
>>
endobj
10 0 obj
<<
/Type /ExtGState
/SA true
/TR 11 0 R
>>
endobj
31 0 obj
<< /FunctionType 0
/Domain [0.0 1.0]
/Range [0.0 1.0]
/Size 2
/BitsPerSample 8
/Length 7
/Filter /ASCIIHexDecode
>>
stream
01 00 >
endstream
endobj
// Your code picks back up with:
5 0 obj
<<
/Producer (FPDF 1.6)
По сути, все, что я сделал, это добавил ссылку на объект словаря к словарю основного ресурса, а затем создал реальный объект словаря с правилом регулировки штриха, установленным в значение true. Я также добавил передаточную функцию, которая есть в примере спецификации, потому что я не уверен, что это имеет значение. Его легко вынуть.