upsala hat geschrieben:@Patrik08: QTextDocument verwendet intern auch newPage()...
richtig .... newPage() macht nicht anders als einen PageBreackPolicyInsert der man nicht weiss wo er ist...
Ich will aber wissen wo diesen PageBreack ist, damit ich wieder im richtigen xsl-fo xml setzen kann. Da dort die PDF Bookmark abhangig sind um zum richtigen name zu springen ....
QTextDocument ->setPageSize ( QSizeF ); /* ohne drucker enum */
setzt... die richtige groesse der seiten .... und die somit verbundene seitenzahl
die man gut durch painten kann sei es drucker oder gui
Code: Alles auswählen
Q_ASSERT(_d->pageSize().isValid());
const int PageSumm = qBound (1,_d->pageCount(),MaximumPages);
for (int i = 0; i < PageSumm; ++i) {
DrawPage(i,painter); /* auch als QPicture im
QCache ist verdamt schnell */
}
damit is es egal welches OS oder drucker...
und die Page PageBreackPolicy werden richtig interpretiert von
QAbstractTextDocumentLayout ....
Code: Alles auswählen
void TextProcessor::ParaBlockPageBreackPolicyInsert()
{
if (Modus != PAGES) {
return; /* only on pages draw modus not flat Layer text */
}
QTextCursor c = textCursor();
QTextBlock bb = c.block();
QTextBlockFormat bbformat = bb.blockFormat();
QStringList items;
items << tr("PageBreak Auto") << tr("PageBreak AlwaysBefore") << tr("PageBreak AlwaysAfter");
int index = 0;
if (bbformat.pageBreakPolicy () == QTextFormat::PageBreak_AlwaysBefore ) {
index = 1;
} else if (bbformat.pageBreakPolicy () == QTextFormat::PageBreak_AlwaysAfter ) {
index = 2;
}
bool ok;
QString item = QInputDialog::getItem(0, tr("Get PageBreakFlags"), tr("Set Policy:"), items,index, false, &ok);
if (ok && item.size() > 0) {
int choise = items.indexOf(item);
if (choise == 1) {
bbformat.setPageBreakPolicy(QTextFormat::PageBreak_AlwaysBefore);
} else if (choise == 2) {
bbformat.setPageBreakPolicy(QTextFormat::PageBreak_AlwaysAfter);
} else {
bbformat.setPageBreakPolicy(QTextFormat::PageBreak_Auto);
}
c.setBlockFormat(bbformat);
emit q_pageupdate();
}
/*
QTextFormat::PageBreak_Auto
QTextFormat::PageBreak_AlwaysBefore
QTextFormat::PageBreak_AlwaysAfter
*/
}
Darum handlet es ja iher um seiten zu umbrecken koennen wo und wie man will .. da gibt es keine bug .. und funktioniert richtig mit qt4.4 && qt4.5
.........................
speack português italiano deutsch english castellà qt