Apache FOP- perlu membuat tabel multi halaman mulai dari tengah halaman pertama

Saya menggunakan FOP versi 2.0. Templat saya memiliki beberapa paragraf teks di halaman pertama setelah itu ada tabel dinamis dengan jumlah baris n.

...
</fo:block-container>
      <fo:block-container height="0.5cm" width="7.40cm" top="8.80cm"
                          left="0.3cm" padding=".4mm" position="absolute">
        <fo:block text-align="start" space-after.optimum="3pt"
                  line-height="14pt" font-family="sans-serif" font-size="12pt">Header
                                                                               Options</fo:block>
      </fo:block-container>
      <fo:block-container border-style="solid" border-width=".5mm"
                          height="1.00cm" width="16.40cm" top="8.80cm"
                          left="3.40cm" padding=".4mm" position="absolute">
        <fo:block text-align="start" space-after.optimum="3pt"
                  line-height="14pt" font-family="sans-serif" font-size="12pt">$header.miscInfo</fo:block>
      </fo:block-container>
      <fo:block-container width="17.40cm" top="10.30cm"
                          left="0.40cm" padding=".4mm" >
        <fo:block page-break-before="always">
        <fo:table border-top-style="solid" border-top-width="thick">
          <fo:table-body font-size="12pt" font-family="sans-serif">
            <fo:table-row border-bottom-style="solid" border-bottom-color="#000"
                          border-bottom-width="thick">
...

Tabel diapit oleh fo:block yang kemudian diapit oleh fo:block-container. Saya menyertakan <fo:block page-break-before="always"> untuk membagi tabel panjang menjadi beberapa halaman. Namun saat menggunakan ini tabel dimulai dari halaman ke-2 dan sisa area di halaman pertama tetap kosong.

Saya ingin tabel saya dimulai dari halaman pertama setelah penampung blok sebelumnya.


person Akash    schedule 24.05.2016    source sumber
comment
Saya menggunakan ‹fo:block page-break-before=always› untuk membagi tabel panjang menjadi beberapa halaman. Namun hal ini menyebabkan tabel dimulai dari halaman ke-2 dan sisa area di halaman pertama tetap kosong. Saya ingin tabel saya dimulai dari halaman pertama setelah wadah blok sebelumnya.   -  person Akash    schedule 24.05.2016


Jawaban (2)


Saya melihat beberapa masalah di templat Anda yang memengaruhi penempatan dan pemecahan tabel.

Blok yang diposisikan sepenuhnya

Paragraf "tajuk" ditempatkan di dalam blok yang benar-benar diposisikan: ini berarti bahwa selama pemrosesan paragraf tersebut dikeluarkan dari alur normal dan tidak berdampak pada tata letak saudara berikutnya (lihat rekomendasi XSL-FO).

Solusi: hapus position="absolute" top="..." left="..." dan gunakan spasi/margin sebagai gantinya (perhatikan bahwa atribut top dan left pada fo:block-container di sekitar tabel tidak berpengaruh, karena blok tersebut tidak diposisikan secara absolut). Anda dapat menghindari penggunaan fo:block-container sama sekali, dan menggunakan elemen fo:block normal.

Istirahat

Properti page-break-before="always" pada elemen fo:block memiliki efek menempatkan hentian halaman sebelum konten blok tersebut, dan itulah yang ingin Anda hindari.

Solusi: hapus properti break.

Dengan perubahan yang disarankan, header dan tabel adalah bagian dari aliran konten normal dan kontennya ditempatkan secara berurutan di halaman.

person lfurini    schedule 24.05.2016
comment
Terima kasih atas bimbingannya. Saya menghapus wadah blok yang mengelilingi fo:table dan menggunakan properti margin blok dan menghapus atribut halaman rusak. Ini berhasil dan sekarang tabel saya dimulai dari halaman pertama setelah teks sebelumnya. Namun saya menghadapi satu masalah kecil lagi. Tata letak tabel sempurna hingga baris di halaman pertama. Namun bila dilanjutkan ke halaman ke-2, kolom-kolom tersebut digeser ke kanan dengan selisih tertentu dan kolom terakhir menjadi tidak terlihat. Adakah wawasan tentang ini, apa alasannya? Sekali lagi terima kasih. - person Akash; 25.05.2016
comment
@Akash Cukup sulit untuk mengatakan apa yang salah tanpa melihat tabel yang dimodifikasi dan master halaman; selain itu, ini mungkin pertanyaan baru. - person lfurini; 25.05.2016
comment
Terima kasih untuk balasan Anda. Saya telah mengajukan pertanyaan lain untuk ini dengan detail lebih lanjut di stackoverflow.com/questions/37442963/ Silakan lihat. Terima kasih sebelumnya. - person Akash; 25.05.2016

Anda menentukan bahwa Anda ingin hentian halaman sebelumnya dengan menggunakan atribut tersebut. Hapus saja atribut page-break-before.

person Kevin Brown    schedule 24.05.2016
comment
Terima kasih Kevin. Atribut page-break-before tidak diperlukan. Masalah ini terpecahkan tetapi ada masalah lain yang saya hadapi sekarang yang telah saya jelaskan di komentar jawaban yang lain. Silakan lihat itu dan lihat apakah Anda dapat menyarankan sesuatu. Terima kasih lagi. - person Akash; 25.05.2016
comment
Ya, jika jawabannya menyelesaikan masalah Anda, pertimbangkan untuk menerima jawabannya dan mengajukan pertanyaan lain. - person Kevin Brown; 03.06.2016