PDF への変換時のレンダリング オプションの指定

PDF 形式は固定ページ形式であり、ユーザーの間で非常に人気があり、PDF ドキュメントはどのデバイスでも同じように見えるため、さまざまなアプリケーションで広くサポートされています。そのため、PDF への変換は Aspose.Words の重要な機能です。

PDF は複雑な形式です。ドキュメントを PDF に変換するプロセスでは、レイアウト計算を含むいくつかの段階の計算が必要です。これらの段階には複雑な計算が含まれるため、時間がかかります。また、PDF 形式自体はかなり複雑です。これには、特定のファイル構造、グラフィックス モデル、およびフォントの埋め込みがあります。さらに、文書構造タグ、暗号化、デジタル署名、編集可能なフォームなどの複雑な出力機能も備えています。

Aspose.Words レイアウト エンジンは、Microsoft Word のページ レイアウト エンジンの動作方法を模倣しています。したがって、Aspose.Words は、PDF 出力ドキュメントを Microsoft Word で表示されるものにできるだけ近づけます。追加のオプションを指定する必要がある場合があります。これは、ドキュメントを PDF 形式で保存する結果に影響を与える可能性があります。これらのオプションは、PDF 出力の表示方法を決定するプロパティを含む PdfSaveOptions クラスを使用して指定できます。

PdfSaveOptions の使用例をいくつか以下に示します。

入力可能なフォームを含む PDF ドキュメントの作成

Microsoft Word ドキュメントから入力可能なフォームを、プレーン テキストの代わりに入力可能なフォームを持つ出力 PDF にエクスポートすることもできます。 preserve_form_fields プロパティを使用して、入力可能なフォームを含む PDF としてドキュメントを保存します。

Microsoft Word とは対照的に、PDF 形式では、テキストボックス、コンボボックス、チェックボックスなど、編集可能なフォームのオプションの数が限られていることに注意してください。 Microsoft Word には、カレンダーの日付ピッカーなど、より多くの種類のフォームがあります。一般に、PDF で Microsoft Word の動作を完全に模倣することはできません。したがって、複雑な場合には、PDF 出力が Microsoft Word で表示されるものと異なる場合があります。

以下のコード例は、指定された Jpeg 圧縮と品質で入力可能なフォームを含む PDF としてドキュメントを保存する方法を示しています。

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document(docs_base.my_dir + "Rendering.docx")
saveOptions = aw.saving.PdfSaveOptions()
saveOptions.image_compression = aw.saving.PdfImageCompression.JPEG
saveOptions.preserve_form_fields = True
doc.save(docs_base.artifacts_dir + "WorkingWithPdfSaveOptions.pdf_image_compression.pdf", saveOptions)
saveOptionsA2U = aw.saving.PdfSaveOptions()
saveOptionsA2U.compliance = aw.saving.PdfCompliance.PDF_A2U
saveOptionsA2U.image_compression = aw.saving.PdfImageCompression.JPEG
saveOptionsA2U.jpeg_quality = 100 # Use JPEG compression at 50% quality to reduce file size.
doc.save(docs_base.artifacts_dir + "WorkingWithPdfSaveOptions.pdf_image_compression__a_2u.pdf", saveOptionsA2U)

ドキュメント構造とカスタム プロパティのエクスポート

export_document_structure プロパティを使用すると、ドキュメント構造を PDF 出力にエクスポートできます。

PDF 論理構造機能は、文書コンテンツ構造に関する情報を PDF ファイルに組み込むためのメカニズムを提供します。 Aspose.Words は、段落、リスト、表、脚注/文末脚注など、Microsoft Word ドキュメントの構造に関する情報を保存します。

次の例は、ドキュメントの構造を維持しながらドキュメントを PDF 形式で保存する方法を示しています。

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document(docs_base.my_dir + "Paragraphs.docx")
# The file size will be increased and the structure will be visible in the "Content" navigation pane
# of Adobe Acrobat Pro, while editing the .pdf.
saveOptions = aw.saving.PdfSaveOptions()
saveOptions.export_document_structure = True
doc.save(docs_base.artifacts_dir + "WorkingWithPdfSaveOptions.export_document_structure.pdf", saveOptions)

Aspose.Words では、ドキュメントのカスタム プロパティを PDF にエクスポートすることもできます。これを次の例で示します。

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
doc.custom_document_properties.add("Company", "Aspose")
saveOptions = aw.saving.PdfSaveOptions()
saveOptions.custom_properties_export = aw.saving.PdfCustomPropertiesExport.STANDARD
doc.save(docs_base.artifacts_dir + "WorkingWithPdfSaveOptions.custom_properties_export.pdf", saveOptions)

出力 PDF のブックマークと見出しからアウトラインをエクスポートする

ブックマークを出力 PDF のアウトラインとしてエクスポートする場合は、default_bookmarks_outline_level プロパティを使用できます。このプロパティは、Microsoft Word ブックマークが表示されるドキュメント アウトラインのデフォルト レベルを指定します。ドキュメントのヘッダー/フッターにブックマークが含まれている場合は、出力 PDF でブックマークをエクスポートする方法を指定するために、header_footer_bookmarks_export_mode プロパティを HeaderFooterBookmarksExportMode.FIRST または HeaderFooterBookmarksExportMode.ALL に設定できます。 header_footer_bookmarks_export_mode の値が HeaderFooterBookmarksExportMode.NONE の場合、ヘッダー/フッターのブックマークはエクスポートされません。

以下のコード例は、セクションの最初のヘッダー/フッターからブックマークをエクスポートする方法を示しています。

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document(docs_base.my_dir + "Bookmarks in headers and footers.docx")
saveOptions = aw.saving.PdfSaveOptions()
saveOptions.outline_options.default_bookmarks_outline_level = 1
saveOptions.header_footer_bookmarks_export_mode = aw.saving.HeaderFooterBookmarksExportMode.FIRST
doc.save(docs_base.artifacts_dir + "WorkingWithPdfSaveOptions.export_header_footer_bookmarks.pdf", saveOptions)

この例の出力 PDF を以下に示します。

specify-rendering-options-when-converting-to-pdf_1

header_footer_bookmarks_export_modeHeaderFooterBookmarksExportMode.FIRST に設定されており、ドキュメントに偶数と奇数のヘッダー/フッター、または最初のページの別のヘッダー/フッターがある場合、セクション内の最初の一意のヘッダー/フッターに対してブックマークがエクスポートされます。

headings_outline_levels プロパティを使用して、出力 PDF の見出しをエクスポートすることもできます。このプロパティは、ドキュメントのアウトラインに何レベルの見出しを含めるかを指定します。

以下のコード例は、3 つのレベルで見出しをエクスポートする方法を示しています。

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document(docs_base.my_dir + "Rendering.docx")
saveOptions = aw.saving.PdfSaveOptions()
saveOptions.outline_options.headings_outline_levels = 3
saveOptions.outline_options.expanded_outline_levels = 1
doc.save(docs_base.artifacts_dir + "WorkingWithPdfSaveOptions.set_outline_options.pdf", saveOptions)

この例の出力 PDF を以下に示します。

specify-rendering-options-when-converting-to-pdf_2

画像をダウンサンプリングしてドキュメント サイズを削減する

Aspose.Words は、downsample_options プロパティを使用して、出力 PDF サイズを削減するために画像をダウンサンプリングする機能を提供します。ダウンサンプリングは、downsample_images プロパティでデフォルトで有効になっています。

resolution プロパティで特定の解像度を設定したり、resolution_threshold プロパティで解像度のしきい値を設定したりすることも可能であることに注意してください。 2 番目のケースでは、画像の解像度がしきい値よりも小さい場合、ダウンサンプリングは適用されません。

以下のコード例は、出力 PDF ドキュメント内の画像の解像度を変更する方法を示しています。

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document(docs_base.my_dir + "Rendering.docx")
# We can set a minimum threshold for downsampling.
# This value will prevent the second image in the input document from being downsampled.
saveOptions = aw.saving.PdfSaveOptions()
saveOptions.downsample_options.resolution = 36
saveOptions.downsample_options.resolution_threshold = 128
doc.save(docs_base.artifacts_dir + "WorkingWithPdfSaveOptions.downsampling_images.pdf", saveOptions)

解像度はページ上の実際の画像サイズに基づいて計算されます。

Adobe PDF 形式でのフォントの埋め込み

Aspose.Words を使用すると、結果の PDF ドキュメントにフォントを埋め込む方法を制御することもできます。 Adobe PDF ドキュメントをどのマシンでも正しくレンダリングできるようにするには、フォントを Adobe PDF ドキュメントに埋め込む必要があります (フォント レンダリングの詳細については、TrueType フォントの使用 セクションを参照してください)。デフォルトでは、Aspose.Words はドキュメントで使用されているフォントのサブセットを生成された PDF に埋め込みます。この場合、文書内で使用されているglyph(文字)のみがPDFに保存されます。

フルフォントを使用する場合とサブセットを使用する場合

Aspose.Words に完全なフォントを埋め込むオプションを指定する方法があります。さらなる詳細と、各設定の長所と短所を以下の表で説明します。

フォント埋め込みモード 利点 短所
Full 後でテキストを追加または変更して、結果の PDF を編集する場合に便利です。すべてのフォントが含まれているため、すべての glyph が存在します。 一部のフォントは大きい (数メガバイト) ため、サブセット化せずにフォントを埋め込むと、出力ファイルが大きくなる可能性があります。
Subset サブセット化は、出力ファイルのサイズを小さくしたい場合に便利です。

ユーザーは、出力 PDF ドキュメント内のサブセット化されたフォントを使用してテキストを完全に追加または編集することはできません。これは、フォントのすべての glyph が存在するわけではないためです。

複数の PDF がサブセット化されたフォントを使用して保存され、結合された場合、結合された PDF ドキュメントには、多くの不要なサブセットを含むフォントが含まれる可能性があります。

|

PDF への完全なフォントの埋め込み

embed_full_fonts プロパティを使用すると、Aspose.Words が出力 PDF ドキュメントにフォントを埋め込む方法を指定できます。

  • 出力 PDF ドキュメントに完全なフォントを埋め込むには、embed_full_fontsTrue に設定します。
  • PDF に保存するときにフォントをサブセット化するには、embed_full_fontsFalse に設定します

次の例は、出力 PDF ドキュメントに完全なフォントを埋め込む方法を示しています。

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document(docs_base.my_dir + "Rendering.docx")
# The output PDF will be embedded with all fonts found in the document.
saveOptions = aw.saving.PdfSaveOptions()
saveOptions.embed_full_fonts = True
doc.save(docs_base.artifacts_dir + "WorkingWithPdfSaveOptions.embedded_fonts_in_pdf.pdf", saveOptions)

次の例は、出力 PDF のフォントをサブセットするように Aspose.Words を設定する方法を示しています。

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document(docs_base.my_dir + "Rendering.docx")
# The output PDF will contain subsets of the fonts in the document.
# Only the glyphs used in the document are included in the PDF fonts.
saveOptions = aw.saving.PdfSaveOptions()
saveOptions.embed_full_fonts = False
doc.save(docs_base.artifacts_dir + "WorkingWithPdfSaveOptions.embedd_subset_fonts.pdf", saveOptions)

コア フォントと Windows 標準フォントの埋め込みを制御する方法

コア フォントと Windows 標準フォントは「標準」フォント セットであり、通常はターゲット マシン上に存在するか、ドキュメント リーダーによって提供されるため、出力 PDF に埋め込む必要はありません。これらのフォントを埋め込まないことで、レンダリングされた PDF ドキュメントのサイズを小さくしながら、移植性を維持できます。

Aspose.Words には、フォントを PDF にエクスポートする方法を選択するオプションが用意されています。出力 PDF にコア フォントと標準フォントを埋め込むか、埋め込みをスキップしてターゲット マシン上の標準コア PDF フォントまたはシステム フォントを代わりに使用するかを選択できます。通常、これらのオプションのいずれかを使用すると、Aspose.Words によって生成された PDF ドキュメントのファイル サイズが大幅に削減されます。

  • これらのオプションは相互に排他的であるため、一度に 1 つだけを選択してください。
  • PDF/A-1 準拠で保存する場合、使用されるすべてのフォントを PDF ドキュメントに埋め込む必要があります。この準拠に従って保存する場合、use_core_fonts プロパティを False に設定し、font_embedding_mode プロパティを PdfFontEmbeddingMode.EMBED_ALL に設定する必要があります。

コアフォントの埋め込み

Core フォントを埋め込むオプションは、use_core_fonts プロパティを使用して有効または無効にできます。 true に設定すると、次の最も一般的な「True Type」フォント (Base 14 フォント) は出力 PDF ドキュメントに埋め込まれません。

  • Arial
  • Times New Roman
  • Courier New
  • Symbol

これらのフォントは、PDF を開いたときにリーダーによって提供される、対応するコア Type 1 フォントに置き換えられます。

以下に示す例は、コア フォントの埋め込みを回避し、リーダーがそれらを PDF Type 1 フォントに置き換えるように Aspose.Words を設定する方法を示しています。

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document(docs_base.my_dir + "Rendering.docx")
# The output PDF will not be embedded with core fonts such as Arial, Times New Roman etc.
saveOptions = aw.saving.PdfSaveOptions()
saveOptions.use_core_fonts = True
doc.save(docs_base.artifacts_dir + "WorkingWithPdfSaveOptions.avoid_embedding_core_fonts.pdf", saveOptions)

PDF ビューアはサポートされているプラットフォームのコア フォントを提供するため、このオプションはドキュメントの移植性を高める必要がある場合にも役立ちます。ただし、コア フォントはシステム フォントとは異なる場合があります。

システムフォントの埋め込み

このオプションは、font_embedding_mode を使用して有効または無効にできます。このプロパティが PdfFontEmbeddingMode.EMBED_NONSTANDARD に設定されている場合、「Arial」および「Times New Roman」の true タイプ フォントは PDF ドキュメントに埋め込まれません。この場合、クライアント ビューアはクライアントのオペレーティング システムにインストールされているフォントに依存します。 font_embedding_mode プロパティが PdfFontEmbeddingMode.EMBED_NONE に設定されている場合、Aspose.Words にはフォントが埋め込まれません。

以下の例は、PDF ドキュメントへの Arial および Times New Roman フォントの埋め込みをスキップするように Aspose.Words を設定する方法を示しています。

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document(docs_base.my_dir + "Rendering.docx")
# The output PDF will be saved without embedding standard windows fonts.
saveOptions = aw.saving.PdfSaveOptions()
saveOptions.font_embedding_mode = aw.saving.PdfFontEmbeddingMode.EMBED_NONE
doc.save(docs_base.artifacts_dir + "WorkingWithPdfSaveOptions.disable_embed_windows_fonts.pdf", saveOptions)

このモードは、出力 PDF 内のフォントの正確な外観を維持しながら、同じプラットフォームでドキュメントを表示する場合に最も役立ちます。