PDF-файлы в Java не могу добавить заголовок или поле? - PullRequest
0 голосов
/ 19 апреля 2011

Кто-нибудь знает, почему мой заголовок или поле не работают / генерируются на странице? он генерирует только pdf с параграфом "привет шея"

import java.awt.Desktop;
import java.io.FileOutputStream;
import java.io.OutputStream;
import com.itextpdf.text.Document;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.*;

public class Report {



    public static void main(String arg[])throws Exception
     {


        try{
            File temp = File.createTempFile("tempfile", ".pdf");


                OutputStream file = new FileOutputStream(temp);
                Document document  = new Document();

                PdfWriter.getInstance(document, file);
                document.open();
                document.addHeader("header1", "this is my header file");
                document.setMargins(50, 50, 100, 100);
                document.add(new Paragraph("hello neck"));
                document.close();
                file.close();

                if (Desktop.isDesktopSupported()) {
                    Desktop dtop = Desktop.getDesktop();

                    if (dtop.isSupported(Desktop.Action.OPEN)) {
                        String temp2 = temp.getPath();      
                        dtop.open(new File(temp2));
                    }
                }


            } catch (Exception e) {

            e.printStackTrace();
        }
     }
}

1 Ответ

1 голос
/ 19 апреля 2011

Неправильный вид заголовка. Это метаинформация, а не верхние и нижние колонтитулы.

Подумайте «тип контента», а не «страница x of y».

//these two lines of code are identical
document.addHeader("a", "b");
document.add(new Header("a", "b"));

Header наследуется от Meta, который обрабатывает author / title / etc / etc. Заголовок предназначен для произвольных строк, которые не попадают ни в одно из стандартных значений.

Кроме того, вы можете изменять только метаданные, пока не вызовете document.open (). После этого любые изменения игнорируются (или они выбрасывают ... я не помню)

Но вам нужны верхние и нижние колонтитулы. Традиционный способ обработки - использование функции OnEndPage PdfPageEvent. Если вы наследуете от PdfPageEventHelper, он уже отключил все функции в интерфейсе PdfPageEvent, поэтому вам просто нужно переопределить ту, которую вы хотите. Handy.

В вашем OnEndPage вы захотите использовать объект ColumnText для записи текста в предоставленный PdfContentByte.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...