Создание файлов PDF из кода Java [без использования iText]

Я хочу создать файл PDF из кода Java. И это то, что я написал до сих пор-

public class IOExp  {
    public static void main(String args[]) throws java.io.IOException   {
        java.io.FileOutputStream fout=new java.io.FileOutputStream("MyFile.pdf");

        byte [] arr=("Hello World.\n"+"My name is Prateek Mathur, and I am  a great programmer.\n").getBytes();
        fout.write(arr);
    }
}

MyFile.pdf создается без проблем, но при его открытии Adobe Reader отображает следующее сообщение:

'Abode Reader can not open 'MyFile.pdf' because it is either not a supported file
 type or because the file has been damaged (for example, it was sent as an email
 attachment and wasn't correctly decoded.'

Я уже знаком с iText API и хочу знать, как создавать PDF-файлы вручную.

В чем проблема с моим кодом и какие изменения необходимо внести для успешного создания файла PDF??


person prateekmathur1991    schedule 07.09.2013    source источник
comment
Если вы хотите создать PDF-файл вручную, вам необходимо прочитать спецификации формата PDF, чтобы вывести необходимые байты заголовка и внутреннюю структуру PDF-файла. Для начала вы можете взглянуть на эту страницу (поскольку спецификацию трудно прочитать) planetpdf.com/developer/   -  person Alex    schedule 07.09.2013
comment
Почему? Почему вы не можете использовать библиотеку, которая уже это делает? Если вам не нравится iText по какой-то неустановленной причине, есть и другие.   -  person user207421    schedule 16.09.2013


Ответы (2)


Я не думаю, что вы можете создать PDF, просто создав файл с расширением .pdf. Для создания действительного PDF-файла требуются допустимые байты заголовка и содержимого в определенном формате. Вместо того, чтобы заново изобретать whee, вы можете использовать такую ​​структуру, как Apache PdfBox, ItextPdf и т. д.

person Juned Ahsan    schedule 07.09.2013

Файлы PDF полностью отличаются от простых текстовых файлов. То, что вы создали, представляет собой обычный текстовый файл. Измените расширение на .txt, и вы увидите буквально текст при открытии в обычном текстовом редакторе. Используйте для этого библиотеку, например PDFBox.

person Martijn Courteaux    schedule 07.09.2013