Kami memiliki aplikasi yang memiliki banyak laporan, dan beberapa laporan tersebut memiliki loop pencetakan yang rumit.
Dulu (IE PowerPlant, Carbon, Core Printing) kami biasa membuat loop cetak yang memiliki semacam pasangan BeginPage() / EndPage(). Seringkali, pasangan tersebut tertanam dalam logika loop cetak laporan.
Dampak akhirnya adalah banyak laporan yang tidak diberi nomor halaman sebelum dicetak, namun diberi nomor halaman saat dicetak. Laporan-laporan ini diulang melalui ribuan objek dan memenuhi halaman sebanyak mungkin, kemudian disebut EndPage(), dan kemudian dilanjutkan ke halaman berikutnya dengan memanggil BeginPage(), semuanya sambil mempertahankan “keadaan” kompleks dari di- laporan kemajuan yang dicetak.
Dengan sebagian besar Core Printing tidak digunakan lagi, TAMPAKNYA dengan logika NSPrint, pendekatan laporan tercetak yang mendorong penomoran halaman tidak mungkin dilakukan. NSPrintOperation sangat ingin dapat meminta satu halaman penuh untuk menggambar drawRect NSView khusus, dan NSView khusus tersebut sebaiknya dapat dimulai di halaman APAPUN. Apakah itu berarti SETIAP laporan harus diberi nomor halaman sebelumnya?
Tampaknya ada metode berbeda yang merupakan bagian dari penomoran halaman "otomatis":
- (void)adjustPageHeightNew:(CGFloat *)newBottom top:(CGFloat)oldTop bottom:(CGFloat)oldBottom limit:(CGFloat)bottomLimit;
Jika saya membaca dokumentasi dengan benar, katakanlah saya memiliki laporan 10 halaman yang mengharuskan saya menemukan tempat yang cocok untuk membaginya. Sepertinya saya dapat memperlakukan laporan itu sebagai satu tampilan panjang, lalu memanggil metode di atas saat saya berada di drawRect, menyebabkan halaman yang saya gambar menjadi LEBIH PENDEK, dan dengan demikian mendorong materi ke halaman berikutnya.
Dokumentasi tidak memberikan banyak detail tentang bagaimana penyesuaian tersebut akan diterapkan ke lusinan (atau ratusan) halaman.
Apakah ada metode lain untuk mendorong pencetakan dan penomoran halaman dari kode pembuatan laporan, selain pendekatan pasif yang dijelaskan di atas?