Manipulasi Dokumen PDF dalam Python melalui .NET

Manipulasi Dokumen PDF dalam Python

Validasi Dokumen PDF untuk Standar PDF A (A 1A dan A 1B)

Untuk memvalidasi dokumen PDF agar sesuai dengan PDF/A-1a atau PDF/A-1b, gunakan metode validate dari kelas Document. Metode ini memungkinkan Anda untuk menentukan nama file tempat hasil akan disimpan dan tipe validasi yang diperlukan dari enumerasi PdfFormat: PDF_A_1A atau PDF_A_1B.

Cuplikan kode berikut menunjukkan cara memvalidasi dokumen PDF untuk PDF/A-1A.


    import aspose.pdf as ap

    # Buka dokumen
    document = ap.Document(input_pdf)

    # Validasi PDF untuk PDF/A-1a
    document.validate(output_xml, ap.PdfFormat.PDF_A_1A)

Cuplikan kode berikut menunjukkan cara memvalidasi dokumen PDF untuk PDF/A-1b.


    import aspose.pdf as ap

    # Buka dokumen
    document = ap.Document(input_pdf)

    # Validasi PDF untuk PDF/A-1a
    document.validate(output_xml, ap.PdfFormat.PDF_A_1B)

Bekerja dengan TOC

Tambahkan TOC ke PDF yang Ada

TOC dalam PDF adalah singkatan dari “Table of Contents” (Daftar Isi). Ini adalah fitur yang memungkinkan pengguna untuk menavigasi dokumen dengan cepat dengan memberikan gambaran umum tentang bagian dan judulnya.

Untuk menambahkan TOC ke file PDF yang ada, gunakan kelas Heading dalam namespace aspose.pdf. Namespace aspose.pdf dapat membuat baru dan memanipulasi file PDF yang ada. Untuk menambahkan TOC ke PDF yang ada, gunakan namespace Aspose.Pdf. Cuplikan kode berikut menunjukkan cara membuat daftar isi di dalam file PDF yang ada menggunakan Python melalui .NET.


    import aspose.pdf as ap

    # Muat file PDF yang ada
    doc = ap.Document(input_pdf)

    # Akses halaman pertama dari file PDF
    tocPage = doc.pages.insert(1)

    # Buat objek untuk mewakili informasi TOC
    tocInfo = ap.TocInfo()
    title = ap.text.TextFragment("Daftar Isi")
    title.text_state.font_size = 20
    title.text_state.font_style = ap.text.FontStyles.BOLD

    # Atur judul untuk TOC
    tocInfo.title = title
    tocPage.toc_info = tocInfo

    # Buat objek string yang akan digunakan sebagai elemen TOC
    titles = ["Halaman pertama", "Halaman kedua", "Halaman ketiga", "Halaman keempat"]
    for i in range(0, 2):
        # Buat objek Heading
        heading2 = ap.Heading(1)
        segment2 = ap.text.TextSegment()
        heading2.toc_page = tocPage
        heading2.segments.append(segment2)

        # Tentukan halaman tujuan untuk objek heading
        heading2.destination_page = doc.pages[i + 2]

        # Halaman tujuan
        heading2.top = doc.pages[i + 2].rect.height

        # Koordinat tujuan
        segment2.text = titles[i]

        # Tambahkan heading ke halaman yang berisi TOC
        tocPage.paragraphs.add(heading2)

    # Simpan dokumen yang telah diperbarui
    doc.save(output_pdf)

Mengatur TabLeaderType yang berbeda untuk Level TOC yang berbeda

Aspose.PDF untuk Python juga memungkinkan mengatur TabLeaderType yang berbeda untuk level TOC yang berbeda. Anda perlu mengatur properti line_dash dari TocInfo.


    import aspose.pdf as ap

    doc = ap.Document()
    tocPage = doc.pages.add()
    toc_info = ap.TocInfo()

    # mengatur LeaderType
    toc_info.line_dash = ap.text.TabLeaderType.SOLID
    title = ap.text.TextFragment("Daftar Isi")
    title.text_state.font_size = 30
    toc_info.title = title

    # Tambahkan bagian daftar ke koleksi bagian dari dokumen Pdf
    tocPage.toc_info = toc_info
    # Definisikan format daftar empat level dengan mengatur margin kiri
    # dan
    # pengaturan format teks setiap level

    toc_info.format_array_length = 4
    toc_info.format_array[0].margin.left = 0
    toc_info.format_array[0].margin.right = 30
    toc_info.format_array[0].line_dash = ap.text.TabLeaderType.DOT
    toc_info.format_array[0].text_state.font_style = ap.text.FontStyles.BOLD | ap.text.FontStyles.ITALIC
    toc_info.format_array[1].margin.left = 10
    toc_info.format_array[1].margin.right = 30
    toc_info.format_array[1].line_dash = 3
    toc_info.format_array[1].text_state.font_size = 10
    toc_info.format_array[2].margin.left = 20
    toc_info.format_array[2].margin.right = 30
    toc_info.format_array[2].text_state.font_style = ap.text.FontStyles.BOLD
    toc_info.format_array[3].line_dash = ap.text.TabLeaderType.SOLID
    toc_info.format_array[3].margin.left = 30
    toc_info.format_array[3].margin.right = 30
    toc_info.format_array[3].text_state.font_style = ap.text.FontStyles.BOLD

    # Buat bagian dalam dokumen Pdf
    page = doc.pages.add()

    # Tambahkan empat judul di bagian
    for Level in range(1, 5):
        heading2 = ap.Heading(Level)
        segment2 = ap.text.TextSegment()
        heading2.segments.append(segment2)
        heading2.is_auto_sequence = True
        heading2.toc_page = tocPage
        segment2.text = "Contoh Judul" + str(Level)
        heading2.text_state.font = ap.text.FontRepository.find_font("Arial")

        # Tambahkan judul ke Daftar Isi.
        heading2.is_in_list = True
        page.paragraphs.add(heading2)

    # simpan Pdf
    doc.save(output_pdf)

Sembunyikan Nomor Halaman dalam Daftar Isi

Jika Anda tidak ingin menampilkan nomor halaman, bersama dengan judul dalam Daftar Isi, Anda dapat menggunakan properti is_show_page_numbers dari Kelas TocInfo sebagai false. Silakan cek cuplikan kode berikut untuk menyembunyikan nomor halaman dalam daftar isi:


    import aspose.pdf as ap

    doc = ap.Document()
    toc_page = doc.pages.add()
    toc_info = ap.TocInfo()
    title = ap.text.TextFragment("Daftar Isi")
    title.text_state.font_size = 20
    title.text_state.font_style = ap.text.FontStyles.BOLD
    toc_info.title = title
    # Tambahkan bagian daftar ke koleksi bagian dari dokumen Pdf
    toc_page.toc_info = toc_info
    # Definisikan format daftar empat level dengan mengatur margin kiri dan
    # pengaturan format teks dari setiap level

    toc_info.is_show_page_numbers = False
    toc_info.format_array_length = 4
    toc_info.format_array[0].margin.right = 0
    toc_info.format_array[0].text_state.font_style = ap.text.FontStyles.BOLD | ap.text.FontStyles.ITALIC
    toc_info.format_array[1].margin.left = 30
    toc_info.format_array[1].text_state.underline = True
    toc_info.format_array[1].text_state.font_size = 10
    toc_info.format_array[2].text_state.font_style = ap.text.FontStyles.BOLD
    toc_info.format_array[3].text_state.font_style = ap.text.FontStyles.BOLD
    page = doc.pages.add()
    # Tambahkan empat judul dalam bagian
    for Level in range(1, 5):
        heading2 = ap.Heading(Level)
        segment2 = ap.text.TextSegment()
        heading2.toc_page = toc_page
        heading2.segments.append(segment2)
        heading2.is_auto_sequence = True
        segment2.text = "ini adalah judul dari level " + str(Level)
        heading2.is_in_list = True
        page.paragraphs.add(heading2)
    doc.save(output_pdf)

Sesuaikan Nomor Halaman saat menambahkan TOC

Umum untuk menyesuaikan penomoran halaman dalam TOC saat menambahkan TOC dalam dokumen PDF. Misalnya, kita mungkin perlu menambahkan beberapa awalan sebelum nomor halaman seperti P1, P2, P3, dan seterusnya. Dalam kasus seperti itu, Aspose.PDF untuk Python menyediakan properti page_numbers_prefix dari kelas TocInfo yang dapat digunakan untuk menyesuaikan nomor halaman seperti yang ditunjukkan dalam contoh kode berikut.


    import aspose.pdf as ap

    # Memuat file PDF yang ada
    doc = ap.Document(input_pdf)
    # Dapatkan akses ke halaman pertama file PDF
    toc_page = doc.pages.insert(1)
    # Buat objek untuk mewakili informasi TOC
    toc_info = ap.TocInfo()
    title = ap.text.TextFragment("Daftar Isi")
    title.text_state.font_size = 20
    title.text_state.font_style = ap.text.FontStyles.BOLD
    # Atur judul untuk TOC
    toc_info.title = title
    toc_info.page_numbers_prefix = "P"
    toc_page.toc_info = toc_info
    for i in range(len(doc.pages)):
        # Buat objek Heading
        heading2 = ap.Heading(1)
        segment2 = ap.text.TextSegment()
        heading2.toc_page = toc_page
        heading2.segments.append(segment2)
        # Tentukan halaman tujuan untuk objek heading
        heading2.destination_page = doc.pages[i + 1]
        # Halaman tujuan
        heading2.top = doc.pages[i + 1].rect.height
        # Koordinat tujuan
        segment2.text = "Halaman " + str(i)
        # Tambahkan heading ke halaman yang berisi TOC
        toc_page.paragraphs.add(heading2)

    # Simpan dokumen yang diperbarui
    doc.save(output_pdf)

Cara Mengatur Tanggal Kadaluwarsa PDF

Kami menerapkan hak akses pada file PDF sehingga sekelompok pengguna tertentu dapat mengakses fitur/objek tertentu dari dokumen PDF. Untuk membatasi akses file PDF, kami biasanya menerapkan enkripsi dan kami mungkin memiliki persyaratan untuk mengatur kedaluwarsa file PDF, sehingga pengguna yang mengakses/melihat dokumen mendapatkan prompt yang valid mengenai kedaluwarsa file PDF.


    import aspose.pdf as ap

    # Memperkenalkan objek Dokumen
    doc = ap.Document()
    # Menambahkan halaman ke koleksi halaman file PDF
    doc.pages.add()
    # Menambahkan potongan teks ke koleksi paragraf dari objek halaman
    doc.pages[1].paragraphs.add(ap.text.TextFragment("Halo Dunia..."))
    # Membuat objek JavaScript untuk mengatur tanggal kedaluwarsa PDF
    javaScript = ap.annotations.JavascriptAction(
        "var year=2017;"
        + "var month=5;"
        + "today = new Date(); today = new Date(today.getFullYear(), today.getMonth());"
        + "expiry = new Date(year, month);"
        + "if (today.getTime() > expiry.getTime())"
        + "app.alert('File ini telah kadaluwarsa. Anda memerlukan yang baru.');"
    )
    # Mengatur JavaScript sebagai tindakan pembukaan PDF
    doc.open_action = javaScript

    # Menyimpan Dokumen PDF
    doc.save(output_pdf)

Flatten Fillable PDF di Python

Dokumen PDF sering kali menyertakan formulir dengan widget interaktif yang dapat diisi seperti tombol radio, kotak centang, kotak teks, daftar, dll. Untuk membuatnya tidak dapat diedit untuk berbagai tujuan aplikasi, kita perlu meratakan file PDF tersebut. Aspose.PDF menyediakan fungsi untuk meratakan PDF Anda di Python dengan hanya beberapa baris kode:


    import aspose.pdf as ap

    # Muat form PDF sumber
    doc = ap.Document(input_pdf)

    # Ratakan PDF yang Dapat Diisi
    if len(doc.form.fields) > 0:
        for item in doc.form.fields:
            item.flatten()

    # Simpan dokumen yang diperbarui
    doc.save(output_pdf)