static void nativeWriteTo(JNIEnv* env, jobject thiz, jint documentPtr, jobject out,
        jbyteArray chunk) {
    PdfDocument* document = reinterpret_cast<PdfDocument*>(documentPtr);
    SkWStream* skWStream = CreateJavaOutputStreamAdaptor(env, out, chunk);
    document->write(skWStream);
    delete skWStream;
}
static jint nativeStartPage(JNIEnv* env, jobject thiz, jint documentPtr,
        jint pageWidth, jint pageHeight,
        jint contentLeft, jint contentTop, jint contentRight, jint contentBottom) {
    PdfDocument* document = reinterpret_cast<PdfDocument*>(documentPtr);
    return reinterpret_cast<jint>(document->startPage(pageWidth, pageHeight,
            contentLeft, contentTop, contentRight, contentBottom));
}
static jlong nativeStartPage(JNIEnv* env, jobject thiz, jlong documentPtr,
        jint pageWidth, jint pageHeight,
        jint contentLeft, jint contentTop, jint contentRight, jint contentBottom) {
    PdfDocument* document = reinterpret_cast<PdfDocument*>(documentPtr);
    SkCanvas* canvas = document->startPage(pageWidth, pageHeight,
            contentLeft, contentTop, contentRight, contentBottom);
    return reinterpret_cast<jlong>(Canvas::create_canvas(canvas));
}
示例#4
0
QList<int> Differ::getPageList(int which, PdfDocument pdf)
{
    // Poppler has 0-based page numbers; the UI has 1-based page numbers
    QString page_string = (which == 1 ? pageRangeDoc1 : pageRangeDoc2);
    bool error = false;
    QList<int> pages;
    page_string = page_string.replace(QRegExp("\\s+"), "");
    QStringList page_list = page_string.split(",");
    bool ok;
    if (page_string.isEmpty())
    {
        for (int page = 0; page < pdf->numPages(); ++page)
            pages.append(page);
    }
    else
    {
        foreach (const QString &page, page_list) {
            int hyphen = page.indexOf("-");
            if (hyphen > -1) {
                int p1 = page.left(hyphen).toInt(&ok);
                if (!ok || p1 < 1) {
                    error = true;
                    break;
                }
                int p2 = page.mid(hyphen + 1).toInt(&ok);
                if (!ok || p2 < 1 || p2 < p1) {
                    error = true;
                    break;
                }
                if (p1 == p2)
                    pages.append(p1 - 1);
                else {
                    for (int p = p1; p <= p2; ++p) {
                        if (p > pdf->numPages())
                            break;
                        pages.append(p - 1);
                    }
                }
            }
            else {
                int p = page.toInt(&ok);
                if (ok && p > 0 && p <= pdf->numPages())
                    pages.append(p - 1);
                else {
                    error = true;
                    break;
                }
            }
        }
    }
static void nativeClose(JNIEnv* env, jobject thiz, jint documentPtr) {
    PdfDocument* document = reinterpret_cast<PdfDocument*>(documentPtr);
    document->close();
}
static void nativeFinishPage(JNIEnv* env, jobject thiz, jlong documentPtr) {
    PdfDocument* document = reinterpret_cast<PdfDocument*>(documentPtr);
    document->finishPage();
}