파이썬에서 PDF 문서 조작하기
이 페이지는 PDF 규정 준수를 확인하고, 목차를 작성 또는 사용자 지정하고, 문서 만료 동작을 설정하거나, Python 워크플로에서 채울 수 있는 PDF를 병합해야 할 때 유용합니다.
파이썬에서 PDF 문서 조작하기
PDF A 표준 (A 1A 및 A 1B) 에 대한 PDF 문서 유효성 검사
PDF 문서의 PDF/A-1a 또는 PDF/a-1b 호환성을 확인하려면 다음을 사용하십시오. 문서 수업 유효성을 검사합니다 방법.이 메서드를 사용하면 결과를 저장할 파일의 이름과 필요한 검증 유형인 PDF형식 열거 (PDF_A_1A 또는 PDF_A_1B) 를 지정할 수 있습니다.
다음 코드 스니펫은 PDF/A-1A용 PDF 문서의 유효성을 검사하는 방법을 보여줍니다.
import sys
from os import path
import aspose.pdf as ap
def validate_pdfa_standard_a1a(input_pdf, output_pdf):
document = ap.Document(input_pdf)
document.validate(output_pdf, ap.PdfFormat.PDF_A_1A)
다음 코드 스니펫은 PDF/A-1b용 PDF 문서의 유효성을 검사하는 방법을 보여줍니다.
import sys
from os import path
import aspose.pdf as ap
def validate_pdfa_standard_a1b(input_pdf, output_pdf):
document = ap.Document(input_pdf)
document.validate(output_pdf, ap.PdfFormat.PDF_A_1B)
TOC로 작업하기
기존 PDF에 목차 추가
PDF의 TOC는 “목차”의 약자입니다.섹션 및 제목에 대한 개요를 제공하여 사용자가 문서를 빠르게 탐색할 수 있게 해주는 기능입니다.
기존 PDF 파일에 목차를 추가하려면 의 Heading 클래스를 사용하십시오. aspose.pdf 네임스페이스.더 aspose.pdf 네임스페이스는 새 PDF 파일을 만들거나 기존 PDF 파일을 조작할 수 있습니다.기존 PDF에 목차를 추가하려면 Aspose.Pdf 네임스페이스를 사용하십시오.다음 코드 스니펫은.NET을 통해 Python을 사용하여 기존 PDF 파일 내에 목차를 만드는 방법을 보여줍니다.
import sys
from os import path
import aspose.pdf as ap
def add_table_of_contents(input_pdf, output_pdf):
document = ap.Document(input_pdf)
toc_page = document.pages.insert(1)
toc_info = ap.TocInfo()
title = ap.text.TextFragment("Table Of Contents")
title.text_state.font_size = 20
title.text_state.font_style = ap.text.FontStyles.BOLD
toc_info.title = title
toc_page.toc_info = toc_info
titles = ["First page", "Second page"]
for index, title_text in enumerate(titles[:2]):
heading = ap.Heading(1)
segment = ap.text.TextSegment(title_text)
heading.toc_page = toc_page
heading.segments.append(segment)
destination_page = document.pages[index + 2]
heading.destination_page = destination_page
heading.top = destination_page.rect.height
toc_page.paragraphs.add(heading)
document.save(output_pdf)
다양한 TOC 레벨에 대해 다른 테이블 리더 유형 설정
파이썬용 Aspose.PDF 기능을 사용하면 TOC 수준에 따라 다른 테이블 리더 유형을 설정할 수도 있습니다.다음을 설정해야 합니다. 라인_대시 의 재산 TOC 정보.
import sys
from os import path
import aspose.pdf as ap
def set_toc_levels(input_pdf, output_pdf):
document = ap.Document(input_pdf)
toc_page = document.pages.add()
toc_info = ap.TocInfo()
toc_info.line_dash = ap.text.TabLeaderType.SOLID
title = ap.text.TextFragment("Table Of Contents")
title.text_state.font_size = 30
toc_info.title = title
toc_page.toc_info = toc_info
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
page = document.pages.add()
for level in range(1, 5):
heading = ap.Heading(level)
heading.is_auto_sequence = True
heading.toc_page = toc_page
heading.text_state.font = ap.text.FontRepository.find_font("Arial")
segment = ap.text.TextSegment(f"Sample Heading{level}")
heading.segments.append(segment)
heading.is_in_list = True
page.paragraphs.add(heading)
document.save(output_pdf)
TOC에서 페이지 번호 숨기기
TOC의 제목과 함께 페이지 번호를 표시하지 않으려는 경우 다음을 사용할 수 있습니다. is_show_page_번호 의 재산 TOC 정보 클래스는 거짓입니다.목차에서 페이지 번호를 숨기려면 다음 코드 스니펫을 확인하세요.
import sys
from os import path
import aspose.pdf as ap
def hide_page_numbers_in_toc(input_pdf, output_pdf):
document = ap.Document(input_pdf)
toc_page = document.pages.add()
toc_info = ap.TocInfo()
title = ap.text.TextFragment("Table Of Contents")
title.text_state.font_size = 20
title.text_state.font_style = ap.text.FontStyles.BOLD
toc_info.title = title
toc_info.is_show_page_numbers = False
toc_page.toc_info = toc_info
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 = document.pages.add()
for level in range(1, 2):
heading = ap.Heading(level)
heading.toc_page = toc_page
heading.is_auto_sequence = True
heading.is_in_list = True
segment = ap.text.TextSegment(f"this is heading of level {level}")
heading.segments.append(segment)
page.paragraphs.add(heading)
document.save(output_pdf)
TOC 추가 시 페이지 번호 사용자 지정
PDF 문서에 목차를 추가하는 동안 목차의 페이지 번호 매기기를 사용자 정의하는 것이 일반적입니다.예를 들어 페이지 번호 앞에 P1, P2, P3 등과 같은 접두사를 추가해야 할 수 있습니다.이런 경우, 파이썬용 Aspose.PDF 는 다음을 제공합니다. 페이지_번호_접두사 의 재산 TOC 정보 다음 코드 샘플과 같이 페이지 번호를 사용자 지정하는 데 사용할 수 있는 클래스입니다.
import sys
from os import path
import aspose.pdf as ap
def customize_page_numbers_in_toc(input_pdf, output_pdf):
document = ap.Document(input_pdf)
toc_page = document.pages.insert(1)
toc_info = ap.TocInfo()
title = ap.text.TextFragment("Table Of Contents")
title.text_state.font_size = 20
title.text_state.font_style = ap.text.FontStyles.BOLD
toc_info.title = title
toc_info.page_numbers_prefix = "P"
toc_page.toc_info = toc_info
for index, page in enumerate(document.pages, start=1):
heading = ap.Heading(1)
heading.toc_page = toc_page
heading.destination_page = page
heading.top = page.rect.height
segment = ap.text.TextSegment(f"Page {index}")
heading.segments.append(segment)
toc_page.paragraphs.add(heading)
document.save(output_pdf)
PDF 만료일 설정 방법
특정 사용자 그룹이 PDF 문서의 특정 기능/개체에 액세스할 수 있도록 PDF 파일에 대한 액세스 권한을 적용합니다.PDF 파일 액세스를 제한하기 위해 일반적으로 암호화를 적용하며, 문서에 액세스하거나 문서를 보는 사용자에게 PDF 파일 만료에 관한 유효한 메시지를 받을 수 있도록 PDF 파일 만료 시간을 설정해야 할 수도 있습니다.
import sys
from os import path
import aspose.pdf as ap
def set_pdf_expiry_date(input_pdf, output_pdf):
document = ap.Document(input_pdf)
document.pages.add()
document.pages[1].paragraphs.add(ap.text.TextFragment("Hello World..."))
script = 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('The file is expired. You need a new one.');"
)
document.open_action = script
document.save(output_pdf)
채울 수 있는 PDF를 파이썬으로 병합
PDF 문서에는 종종 라디오 버튼, 확인란, 텍스트 상자, 목록 등과 같이 채울 수 있는 대화형 위젯이 있는 양식이 포함됩니다. 다양한 응용 목적으로 편집할 수 없도록 하려면 PDF 파일을 평평하게 해야 합니다. Aspose.PDF 는 단 몇 줄의 코드로 파이썬에서 PDF를 평면화하는 함수를 제공합니다.
import sys
from os import path
import aspose.pdf as ap
def flatten_fillable_pdf(input_pdf, output_pdf):
document = ap.Document(input_pdf)
if document.form and document.form.fields:
for field in document.form.fields:
field.flatten()
document.save(output_pdf)