2014-08-28 16 views
2

Я пытаюсь создать PDF в своем приложении для Android, используя Android PDF Writer. Это очень простая библиотека, которая позволяет создавать простые PDF-файлы. Она работает довольно хорошо, но есть одна вещь, которую я не понимаю:Каково значение% © »ªμ в заголовке кода PDF?

Когда я смотрю на сгенерированный исходный PDF код, который я могу видеть, что начинает файл следующие строки:

%PDF-1.4 
%©»ªµ 
1 0 obj 
<< 
    /Type /Catalog 
    /Pages 2 0 R 
>> 
endobj 
... 

Что означает ли вторая строка? Я искал много разных синтаксических документов PDF, но я не нашел намека на то, что может означать эта строка. Во всех примерах я обнаружил, что строка %PDF-VersionXY непосредственно сопровождается первым объектом/каталогом.

Я не уверен, что это действительно действительный код PDF вообще, или если это некоторая ошибка из-за некоторой проблемы с кодировкой/конфликтом с исходным кодом библиотеки.

Любая идея, о чем это может быть? Какая информация может быть включена в это место и %©»ªµ действует PDF или какая-то ошибка enconding? **

+2

Ну, так как он начинается с '%' это комментарий, и, как я могу найти, кажется, что он включен для обеспечения того, чтобы программы не пытались открыть файл как обычный текст. Кроме того, кажется, что эта конкретная строка не обязательно является стандартной; он должен содержать только символы, отличные от ASCII. –

ответ

3

Когда взглянуть на PDF-1.4 ссылки here (или же в текущем 1,7 here) в разделе 3.4.1 он говорит

Примечание: Если PDF-файл содержит двоичные данные, поскольку большинство из них (см раздел 3.1, «Лексические конвенции»), рекомендуется строка заголовка немедленно следует строка комментария, содержащей в не менее четырех двоичных символов, то есть символов, коды которых составляют 128 или более. Это обеспечит правильное поведение приложений передачи файлов , которые проверяют данные около начала файла, чтобы определить, следует ли обрабатывать содержимое файла как текст или как двоичный файл.

Таким образом, ваш генератор, по-видимому, включает эту дополнительную строку комментариев по умолчанию, даже если нет двоичных данных. То, что там, не имеет значения, если каждое значение байта> 128 (то есть: вне диапазона ASCII). В вашем случае это шестнадцатеричные значения A9 BB AA B5, поэтому все в порядке, и вам не нужно беспокоиться об этой линии.