新着情報

Aspose.PDF 23.12の新機能

Aspose.PDF 23.12から、新しい変換機能が追加されました:

  • PDFからMarkdownへの変換を実装

    import aspose.pdf as ap

    input_pdf_path = DIR_INPUT + "input.pdf"
    markdown_output_file_path = DIR_OUTPUT + "output_md_file.md"

    doc = ap.Document(input_pdf_path)
    save_options = ap.pdftomarkdown.MarkdownSaveOptions()
    save_options.resources_directory_name = "images"
    doc.save(markdown_output_file_path, save_options)
  • OFDからPDFへの変換を実装

    import aspose.pdf as ap

    input_path = DIR_INPUT + "input.ofd"
    output_path = DIR_OUTPUT + "output.pdf"
    document = ap.Document(input_path, ap.OfdLoadOptions())
    document.save(output_path)

Python 3.6のサポートが終了しました。

Aspose.PDF 23.11の新機能

23.11以降、隠しテキストを削除することが可能になりました。以下のコードスニペットを使用できます:


    import aspose.pdf as ap

    document = ap.Document(input_file)
    text_absorber = ap.text.TextFragmentAbsorber()
    # このオプションは、隠しテキストの置換後に他のテキストフラグメントが移動するのを防ぐために使用できます。
    text_absorber.text_replace_options = ap.text.TextReplaceOptions(ap.text.TextReplaceOptions.ReplaceAdjustment.NONE)
    document.pages.accept(text_absorber)

    for fragment in text_absorber.text_fragments:
        if fragment.text_state.invisible:
            fragment.text = ''

    document.save(output_file)

Aspose.PDF 23.8の新機能

23.8バージョン以降、増分更新検出の追加をサポートしています。

PDFドキュメントにおける増分更新検出の機能が追加されました。 この関数は、ドキュメントがインクリメンタルアップデートで保存された場合に ’true’ を返します。それ以外の場合は ‘false’ を返します。


    import aspose.pdf as ap

    doc = ap.Document(file_path)
    updated = doc.has_incremental_update()
    print(updated)

また、23.8はネストされたチェックボックスフィールドを扱う方法をサポートしています。多くの記入可能なPDFフォームには、ラジオグループとして機能するチェックボックスフィールドがあります:

  • 複数値チェックボックスフィールドを作成:

    import aspose.pdf as ap

    document = ap.Document()
    page = document.pages.add()
    checkbox = ap.forms.CheckboxField(page, ap.Rectangle(50, 50, 70, 70, True))
    # 最初のチェックボックスグループオプションの値を設定
    checkbox.export_value = "option 1"
    # 既存のものの下に新しいオプションを追加
    checkbox.add_option("option 2")
    # 指定された矩形に新しいオプションを追加
    checkbox.add_option("option 3", ap.Rectangle(100, 100, 120, 120, True))
    document.form.add(checkbox)
    # 追加されたチェックボックスを選択
    checkbox.value = "option 2"
    document.save(DIR_OUTPUT + "checkbox_group.pdf")
  • 複数値チェックボックスの値を取得および設定する:

    import aspose.pdf as ap

    doc = ap.Document("example.pdf")
    form = doc.form
    checkbox = cast(ap.forms.CheckboxField, form.fields[0])

    # 許可された値は AllowedStates コレクションから取得できます
    # Value プロパティを使用してチェックボックスの値を設定します
    checkbox.value = checkbox.allowed_states[0]
    checkbox_value = checkbox.value  # 前に設定された値、例: "option 1"
    # 値は AllowedStates の任意の要素である必要があります
    checkbox.value = "option 2"
    checkbox_value = checkbox.value  # option 2
    # 値を "Off" に設定するか、Checked を false に設定することでチェックを外します
    checkbox.value = "Off"
    # または、代わりに:
    # checkbox.checked = False
    checkbox_value = checkbox.value  # Off
  • ユーザークリック時にチェックボックスの状態を更新する:

    import aspose.pdf as ap
    from aspose.pycore import cast

    input_file = DIR_INPUT + "input.pdf"
    document = ap.Document(input_file)
    point = ap.Point(62,462)  # 例えば、マウスクリックの座標
    # オプション 1: ページ上の注釈を確認する
    page = document.pages[5]
    for annotation in page.annotations:
        if(annotation.rect.contains(point)):
            widget = cast(ap.annotations.WidgetAnnotation, annotation)
            checkbox = cast(ap.forms.CheckboxField, widget.parent)
            if(annotation.active_state == "Off"):
                checkbox.value = widget.get_checked_state_name()
            else:
                checkbox.value = "Off"
        break
    # オプション 2: AcroForm 内のフィールドを確認する
    for widget in document.form:
        field = cast(ap.forms.Field, widget)
        if(field == None):
            continue
        checkBoxFound = False
        for annotation in field:
            if(annotation.rect.contains(point)):
                checkBoxFound = True
                if(annotation.active_state=="Off"):
                    annotation.parent.value = annotation.get_checked_state_name()
                else:
                    annotation.parent.value = "Off"
            if(checkBoxFound):
                break

Aspose.PDF 23.7の新機能

バージョン23.7では、形状抽出の追加をサポートしています:


    import aspose.pdf as ap

    input1_file = DIR_INPUT + "input_1.pdf"
    input2_file = DIR_INPUT + "input_2.pdf"

    source = ap.Document(input1_file)
    dest = ap.Document(input2_file)

    graphic_absorber = ap.vector.GraphicsAbsorber()
    graphic_absorber.visit(source.pages[1])
    area = ap.Rectangle(90, 250, 300, 400, True)
    dest.pages[1].add_graphics(graphic_absorber.elements, area)

また、テキストを追加するときのオーバーフローの検出機能もサポートされています:


    import aspose.pdf as ap

    output_file = DIR_OUTPUT + "output.pdf"
    doc = ap.Document()
    paragraph_content = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras nisl tortor, efficitur sed cursus in, lobortis vitae nulla. Quisque rhoncus, felis sed dictum semper, est tellus finibus augue, ut feugiat enim risus eget tortor. Nulla finibus velit nec ante gravida sollicitudin. Morbi sollicitudin vehicula facilisis. Vestibulum ac convallis erat. Ut eget varius sem. Nam varius pharetra lorem, id ullamcorper justo auctor ac. Integer quis erat vitae lacus mollis volutpat eget et eros. Donec a efficitur dolor. Maecenas non dapibus nisi, ut pellentesque elit. Sed pellentesque rhoncus ante, a consectetur ligula viverra vel. Integer eget bibendum ante. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur elementum, sem a auctor vulputate, ante libero iaculis dolor, vitae facilisis dolor lorem at orci. Sed laoreet dui id nisi accumsan, id posuere diam accumsan."
    fragment = ap.text.TextFragment(paragraph_content)
    rectangle = ap.Rectangle(100, 600, 500, 700, False)
    paragraph = ap.text.TextParagraph()
    paragraph.vertical_alignment = ap.VerticalAlignment.TOP
    paragraph.formatting_options.wrap_mode = ap.text.TextFormattingOptions.WordWrapMode.BY_WORDS
    paragraph.rectangle = rectangle
    is_fit_rectangle = fragment.text_state.is_fit_rectangle(paragraph_content, rectangle)

    while is_fit_rectangle == False:
        fragment.text_state.font_size -= 0.5
        is_fit_rectangle = fragment.text_state.is_fit_rectangle(paragraph_content, rectangle)

    paragraph.append_line(fragment)
    builder = ap.text.TextBuilder(doc.pages.add())
    builder.append_paragraph(paragraph)
    doc.save(output_file)

Aspose.PDF 23.6の新機能

HTML、Epubページのタイトルを設定する機能をサポート:


    import aspose.pdf as ap

    input_pdf = DIR_INPUT + "input.pdf"
    output_html = DIR_OUTPUT + "output_title.html"
    options = ap.HtmlSaveOptions()
    options.fixed_layout = True
    options.raster_images_saving_mode = ap.HtmlSaveOptions.RasterImagesSavingModes.AS_EMBEDDED_PARTS_OF_PNG_PAGE_BACKGROUND
    options.parts_embedding_mode = ap.HtmlSaveOptions.PartsEmbeddingModes.EMBED_ALL_INTO_HTML
    options.title = "NEW PAGE & TITILE"  # <-- これが追加されました

    document = ap.Document(input_pdf)
    document.save(output_html, options)

Aspose.PDF 23.5の新機能

バージョン23.5からRedactionAnnotation FontSizeオプションの追加をサポートしています。このタスクを解決するには、次のコードスニペットを使用してください:


    import aspose.pdf as ap

    doc = ap.Document(DIR_INPUT + "input.pdf")
    # 特定のページ領域に対するRedactionAnnotationインスタンスを作成
    annot = ap.annotations.RedactionAnnotation(doc.pages[1], ap.Rectangle(367, 756.919982910156, 420, 823.919982910156, True))
    annot.fill_color = ap.Color.black
    annot.border_color = ap.Color.yellow
    annot.color = ap.Color.blue
    # 削除注釈上に印刷されるテキスト
    annot.overlay_text = "(Unknown)"
    annot.text_alignment = ap.HorizontalAlignment.CENTER
    # 削除注釈上にオーバーレイテキストを繰り返す
    annot.repeat = False
    # 新しいプロパティがあります!
    annot.font_size = 20
    # 最初のページの注釈コレクションに注釈を追加
    doc.pages[1].annotations.add(annot, False)
    # 注釈をフラットにし、ページ内容を削除します(つまり、削除された注釈の下のテキストと画像を削除します)
    annot.redact()
    out_file = DIR_OUTPUT + "RedactPage_out.pdf"
    doc.save(out_file)

Python 3.5のサポートは終了しました。Python 3.11のサポートが追加されました。

Aspose.PDF 23.3の新機能

バージョン23.3では、画像に解像度を追加するサポートが導入されました。この問題を解決するために、2つの方法が使用できます:


    import aspose.pdf as ap

    input_file = DIR_INPUT + "input.jpg"
    table = ap.Table()
    table.column_widths = "600"
    image = ap.Image()
    image.is_apply_resolution = True
    image.file = input_file
    for i in range(0, 2):
        row = table.rows.add()
        cell = row.cells.add()
        cell.paragraphs.add(image)

    page.paragraphs.add(table)

画像はスケールされた解像度で配置されます。または、FixedWidthまたはFixedHeightプロパティをIsApplyResolutionと組み合わせて設定することができます。

Aspose.PDF 23.1の新機能

バージョン23.1以降、PrinterMark注釈の作成をサポートしています。

プリンターマークは、複数版のジョブのコンポーネントを識別し、生産中に一貫した出力を維持するのを助けるために、生産担当者がページに追加するグラフィックスシンボルまたはテキストです。 印刷業界で一般的に使用される例には以下が含まれます:

  • プレートを整列させるための登録ターゲット
  • 色とインク密度を測定するためのグレースケールとカラーバー
  • 出力メディアがどこでトリミングされるかを示すカットマーク

色とインク密度を測定するためのカラーバーオプションの例を示します。基本的な抽象クラスPrinterMarkAnnotationがあり、そこからColorBarAnnotationという子クラスが派生しています - これがこれらのストライプをすでに実装しています。例を確認しましょう:


    import aspose.pdf as ap

    out_file = DIR_OUTPUT  + "ColorBarTest.pdf"
    doc = ap.Document()
    page = doc.pages.add()
    page.trim_box = ap.Rectangle(20, 20, 580, 820, True)
    add_annotations(page)
    doc.save(out_file)


def add_annotations(page: ap.Page):
    rect_black = ap.Rectangle(100, 300, 300, 320, True)
    rect_cyan = ap.Rectangle(200, 600, 260, 690, True)
    rect_magenta = ap.Rectangle(10, 650, 140, 670, True)
    color_bar_black = ap.annotations.ColorBarAnnotation(page, rect_black, ap.annotations.ColorsOfCMYK.BLACK)
    color_bar_cyan = ap.annotations.ColorBarAnnotation(page, rect_cyan, ap.annotations.ColorsOfCMYK.CYAN)
    color_ba_magenta = ap.annotations.ColorBarAnnotation(page, rect_magenta, ap.annotations.ColorsOfCMYK.BLACK)
    color_ba_magenta.color_of_cmyk = ap.annotations.ColorsOfCMYK.MAGENTA
    color_bar_yellow = ap.annotations.ColorBarAnnotation(page, ap.Rectangle(400, 250, 450, 700, True), ap.annotations.ColorsOfCMYK.YELLOW)
    page.annotations.add(color_bar_black, False)
    page.annotations.add(color_bar_cyan, False)
    page.annotations.add(color_ba_magenta, False)
    page.annotations.add(color_bar_yellow, False)

Also support the vector images extraction. ベクター画像の抽出もサポートします。以下のコードを使用してベクターグラフィックスを検出し、抽出してみてください。


    import aspose.pdf as ap

    input_pdf = DIR_INPUT + "input.pdf"
    output_pdf = DIR_OUTPUT + "output.svg"
    doc = ap.Document(input_pdf)
    doc.pages[1].try_save_vector_graphics(output_pdf)