Lebar ItextPdf Tidak Diperluas untuk Halaman Lanskap

Saya mencoba meletakkan tabel pada halaman PDF yang telah diputar untuk lanskap di 'PdfPageEventHelper' saya:

public void onStartPage(PdfWriter writer_,Document document_) {
        writer_.addPageDictEntry(PdfName.ROTATE,PdfPage.LANDSCAPE);
    }

Bagian itu tampaknya berfungsi tetapi ketika saya membuat tabel dengan 10 kolom, pengaturan lebarnya sepertinya tidak berfungsi:

float sizeY=page.getWidth();
PdfPTable table=new PdfPTable(10);
table.setTotalWidth(sizeY);
float[] widths=new float[] {1.f,1.5f,4.f,1.f,1.f,1.f,1.f,1.f,1.f,1.f};
table.setWidths(widths);

Lebar tabel sepertinya selalu menjadi default (80% dari lebar halaman potret). Bagaimana cara agar tabel menggunakan lebar halaman lanskap? TIA.


person Wt Riker    schedule 27.11.2017    source sumber
comment
Kode peristiwa halaman Anda cocok untuk situasi di mana Anda ingin mengisi halaman dalam orientasi dokumen normal dan kemudian memutar halaman yang terisi tersebut (untuk akhirnya memiliki halaman lanskap dengan teks tidak tegak). Jika Anda ingin menggunakan format lanskap dengan teks tegak, cukup atur ukuran dokumen ke format lanskap sebelum halaman yang dimaksud dibuat (untuk halaman pertama bahkan sebelum opening contoh Document.)   -  person mkl    schedule 27.11.2017
comment
Terima kasih. Saya melakukan itu pada awalnya tetapi masih mendapatkan hasil yang sama. Tabel tidak akan meluas melampaui dimensi terkecil. Bagaimanapun melakukannya dengan cara itu meninggalkan orientasi dalam potret. Saya harus memutarnya dengan penampil PDF daripada menampilkannya dalam lanskap untuk memulai. Dengan cara ini ditampilkan dalam lanskap tanpa memutarnya bersama pemirsa.   -  person Wt Riker    schedule 27.11.2017


Jawaban (1)


Anda menggunakan iText 5 lama. Ada banyak keanehan di iText 5 yang diselesaikan di iText 7.

Di iText 7, kami memiliki konsep UnitValue yang membantu iText menentukan apakah sesuatu merupakan nilai absolut (dalam satuan/poin pengguna) atau nilai relatif (persentase).

Di iText 5, konsep ini tidak diketahui. Kelas PdfPTable memiliki dua parameter untuk lebar tabel:

  • Lebar sebagai persentase: 80% secara default,
  • Lebar mutlak

Secara default, lebar digunakan sebagai persentase. Jika Anda ingin menggunakan lebar absolut, Anda perlu "menarik saklar" dengan metode setLockedWidth():

table.setTotalWidth(sizeY);
table.setLockedWidth(true);

Saya tahu ini aneh, tapi sekali lagi, Anda menggunakan iText versi lama. Jika Anda menginginkan API yang lebih konsisten, silakan gunakan iText 7. Peningkatan tersebut sangat signifikan. Kami telah menghabiskan banyak waktu dan uang untuk menyempurnakan iText, jadi agak membuat frustasi melihat pengembang iText baru memilih untuk bekerja dengan iText 5 daripada iText 7.

person Bruno Lowagie    schedule 27.11.2017
comment
Bingo. Itu saja. Terima kasih. Saya sekarang perlu mencari tahu mengapa Eclipse tidak memperbarui ke iText 7 tapi itu masalah saya sekarang. - person Wt Riker; 27.11.2017
comment
iText 7 adalah penulisan ulang lengkap iText 5. Jika Anda hanya mengupgrade, Anda akan merusak kode yang ada. - person Bruno Lowagie; 27.11.2017
comment
Hmm, karena saya baru memulai kode ini, mungkin saya perlu melakukannya sekarang. Saya kira saya perlu mengimpor ketergantungan Maven yang berbeda. - person Wt Riker; 28.11.2017
comment
Semuanya ada di sini: developers.itextpdf.com/itext7/download-and- informasi pemasangan/ - person Bruno Lowagie; 28.11.2017