Tooltip PDF menggunakan C++

Tambahkan Tooltip ke Teks yang Dicari dengan Menambahkan Tombol Tak Terlihat

Artikel ini menunjukkan cara menambahkan tooltip ke teks pada dokumen PDF yang ada dalam C++. Aspose.PDF mendukung untuk membuat tooltip dengan menambahkan tombol tak terlihat di atas teks yang dicari dari file PDF.

using namespace System;
using namespace Aspose::Pdf;
using namespace Aspose::Pdf::Text;


void AddTooltipToSearchedText() {

    String _dataDir("C:\\Samples\\");

    // String untuk nama file keluaran
    String outputFileName("Tooltip_out.pdf");

    // Buat dokumen contoh dengan teks
    auto document = MakeObject<Document>();
    document->get_Pages()->Add()->get_Paragraphs()->Add(MakeObject<TextFragment>("Pindahkan kursor mouse ke sini untuk menampilkan tooltip"));

    document->get_Pages()->idx_get(1)->get_Paragraphs()->Add(MakeObject<TextFragment>("Pindahkan kursor mouse ke sini untuk menampilkan tooltip yang sangat panjang"));

    document->Save(outputFileName);

    // Buka dokumen dengan teks
    auto document = MakeObject<Document>(outputFileName);
    // Buat objek TextAbsorber untuk menemukan semua frasa yang cocok dengan ekspresi reguler
    auto absorber = MakeObject<TextFragmentAbsorber>("Pindahkan kursor mouse ke sini untuk menampilkan tooltip");
    // Terima absorber untuk halaman dokumen
    document->get_Pages()->Accept(absorber);

    // Dapatkan fragmen teks yang diekstraksi
    auto textFragments = absorber->get_TextFragments();

    // Loop melalui fragmen
    for(auto fragment : textFragments)
    {
        // Buat tombol tak terlihat pada posisi fragmen teks
        auto field = MakeObject<Aspose::Pdf::Forms::ButtonField>(fragment->get_Page(), fragment->get_Rectangle());
        // Nilai AlternateName akan ditampilkan sebagai tooltip oleh aplikasi penampil
        field->set_AlternateName (u"Tooltip untuk teks.");
        // Tambahkan field tombol ke dokumen
        document->get_Form()->Add(System::DynamicCast<Aspose::Pdf::Forms::Field>(field));
    }

    // Selanjutnya akan menjadi contoh tooltip yang sangat panjang
    absorber = MakeObject<TextFragmentAbsorber>("Pindahkan kursor mouse ke sini untuk menampilkan tooltip yang sangat panjang");
    document->get_Pages()->Accept(absorber);
    textFragments = absorber->get_TextFragments();

    for(auto fragment : textFragments)
    {
        auto field = MakeObject<Aspose::Pdf::Forms::ButtonField>(fragment->get_Page(), fragment->get_Rectangle());
        // Tetapkan teks yang sangat panjang
        field->set_AlternateName(String("Lorem ipsum dolor sit amet, consectetur adipiscing elit,\
            sed do eiusmod tempor incididunt ut labore et dolore magna\
            aliqua. Ut enim ad minim veniam, quis nostrud exercitation\
            ullamco laboris nisi ut aliquip ex ea commodo consequat.\
            Duis aute irure dolor in reprehenderit in voluptate velit\
            esse cillum dolore eu fugiat nulla pariatur. Excepteur sint\
            occaecat cupidatat non proident, sunt in culpa qui officia\
            deserunt mollit anim id est laborum."));
        document->get_Form()->Add(System::DynamicCast<Aspose::Pdf::Forms::Field>(field));
    }

    // Simpan dokumen
    document->Save(outputFileName);

}

Membuat Blok Teks Tersembunyi dan Menampilkannya saat Mouse Over

Aspose.PDF untuk C++ mengimplementasikan fungsi tindakan sembunyi, yang memungkinkan Anda untuk menampilkan/menyembunyikan bidang teks (atau jenis anotasi lainnya) saat memasuki/keluar dari mouse di atas beberapa tombol tak terlihat. Untuk melakukan ini, gunakan kelas Aspose.Pdf.Annotations.HideAction untuk menetapkan tindakan sembunyi/tampilkan ke blok teks. Gunakan cuplikan kode berikut untuk menampilkan/menyembunyikan blok teks pada input/output mouse.

Perhatikan juga bahwa tindakan PDF pada dokumen berfungsi dengan baik dalam pembaca masing-masing (seperti Adobe Reader), tetapi tidak memberikan jaminan untuk pembaca PDF lainnya (seperti plug-in peramban web). Kami melakukan investigasi singkat dan menemukan:

  • Semua implementasi tindakan sembunyi dalam dokumen PDF berfungsi dengan baik di Internet Explorer v.11.0.

  • Semua implementasi tindakan sembunyi juga berfungsi di Opera v.12.14, tetapi kami menemukan beberapa penundaan respons pada pembukaan dokumen pertama kali.

  • Hanya implementasi yang menggunakan konstruktor HideAction yang menerima nama bidang yang berfungsi jika Google Chrome v.61.0 menjelajahi dokumen; Silakan gunakan konstruktor yang sesuai jika browsing di Google Chrome signifikan:

buttonField.Actions.OnEnter = new HideAction(floatingField.FullName, false); buttonField.Actions.OnExit = new HideAction(floatingField.FullName);

void CreateHiddenTextBlock() {

    String _dataDir("C:\\Samples\\");

    // String untuk nama file output
    String outputFileName("TextBlock_HideShow_MouseOverOut_out.pdf");

    // Buat dokumen contoh dengan teks
    auto document = MakeObject<Document>();

    document->get_Pages()->Add()->get_Paragraphs()->Add(MakeObject<TextFragment>("Gerakkan kursor mouse ke sini untuk menampilkan teks mengambang"));
    document->Save(outputFileName);

    // Buka dokumen dengan teks
    auto document = MakeObject<Document>(outputFileName);

    // Buat objek TextAbsorber untuk menemukan semua frasa yang cocok dengan ekspresi reguler
    auto absorber = MakeObject<TextFragmentAbsorber>("Gerakkan kursor mouse ke sini untuk menampilkan teks mengambang");
    // Terima absorber untuk halaman dokumen
    document->get_Pages()->Accept(absorber);
    // Dapatkan fragmen teks pertama yang diekstraksi
    auto textFragments = absorber->get_TextFragments();
    auto fragment = textFragments->idx_get(1);

    // Buat bidang teks tersembunyi untuk teks mengambang dalam persegi panjang halaman yang ditentukan
    auto floatingField = MakeObject<Aspose::Pdf::Forms::TextBoxField>(fragment->get_Page(), MakeObject<Rectangle>(100, 700, 220, 740));
    // Setel teks yang akan ditampilkan sebagai nilai bidang
    floatingField->set_Value(u"Ini adalah \"bidang teks mengambang\".");
    // Kami merekomendasikan untuk membuat bidang 'readonly' untuk skenario ini
    floatingField->set_ReadOnly(true);
    // Setel bendera 'hidden' untuk membuat bidang tidak terlihat saat dokumen dibuka
    floatingField->set_Flags(floatingField->get_Flags() | Aspose::Pdf::Annotations::AnnotationFlags::Hidden);

    // Menetapkan nama bidang unik tidak perlu tetapi diizinkan
    floatingField->set_PartialName (u"FloatingField_1");

    // Menetapkan karakteristik penampilan bidang tidak perlu tetapi membuatnya lebih baik
    floatingField->set_DefaultAppearance(MakeObject<Aspose::Pdf::Annotations::DefaultAppearance>("Helv", 10, Color::get_Blue()));
    floatingField->get_Characteristics()->set_Background (System::Drawing::Color::get_LightBlue());
    floatingField->get_Characteristics()->set_Border (System::Drawing::Color::get_DarkBlue());
    floatingField->set_Border(MakeObject<Aspose::Pdf::Annotations::Border>(floatingField));
    floatingField->get_Border()->set_Width (1);
    floatingField->set_Multiline (true);

    // Tambahkan bidang teks ke dokumen
    document->get_Form()->Add(System::DynamicCast<Aspose::Pdf::Forms::Field>(floatingField));

    // Buat tombol tak terlihat di posisi fragmen teks
    auto buttonField = MakeObject<Aspose::Pdf::Forms::ButtonField>(fragment->get_Page(), fragment->get_Rectangle());
    // Buat aksi sembunyi baru untuk bidang (anotasi) yang ditentukan dan bendera tidak terlihat.
    // (Anda juga dapat merujuk bidang mengambang dengan nama jika Anda telah menentukannya di atas.)
    // Tambahkan aksi saat mouse masuk/keluar pada bidang tombol tak terlihat
    buttonField->get_Actions()->set_OnEnter(MakeObject<Aspose::Pdf::Annotations::HideAction>(floatingField, false));
    buttonField->get_Actions()->set_OnExit(MakeObject<Aspose::Pdf::Annotations::HideAction>(floatingField));

    // Tambahkan bidang tombol ke dokumen
    document->get_Form()->Add(System::DynamicCast<Aspose::Pdf::Forms::Field>(buttonField));

    // Simpan dokumen
    document->Save(outputFileName);
}