Aspose.Slides / Words / Cells for Python via .NET それぞれで、 Excel / Word / PowerPoint を PDF に変換する処理を実装しようとしています。
そのなかで、特定のフォントについては別のフォントに置換し、それ以外のフォントについてはデフォルトのフォントに置換するよう設定したいです。
また OS にインストールされているフォントではなく、外部フォントを渡して、それを用いるようにしたいです。
その実装方法、用いるべきフォント名のルールなどご情報をいただけますでしょうか?
以下参考情報となります。
Word については以下の実装でフォントの置換に成功しました。
import aspose.words as aw
# 変換するドキュメント
doc = aw.Document("./files/sample_doc.doc")
# デフォルトのフォント設定
font_settings = aw.fonts.FontSettings()
# フォントの読み込み先の設定
font_settings.set_fonts_folder("./fonts/", True)
# フォント置換の設定
font_settings.substitution_settings.table_substitution.enabled = True
font_settings.substitution_settings.table_substitution.load("Table.xml")
font_settings.substitution_settings.default_font_substitution.enabled = True
font_settings.substitution_settings.default_font_substitution.default_font_name = "IPA Gothic"
# Set font settings
doc.font_settings = font_settings
# 変換・出力
doc.save("word_doc_to_pdf.pdf")
<TableSubstitutionSettings xmlns="Aspose.Words">
<SubstitutesTable>
<Item OriginalFont="Yu Gothic" SubstituteFonts="IPA Gothic" />
<Item OriginalFont="MS Gothic" SubstituteFonts="IPA Gothic" />
<Item OriginalFont="MS PGothic" SubstituteFonts="IPA Gothic" />
<Item OriginalFont="Meiryo" SubstituteFonts="IPA Gothic" />
<Item OriginalFont="Yu Mincho" SubstituteFonts="IPA P Mincho" />
<Item OriginalFont="MS Mincho" SubstituteFonts="IPA P Mincho" />
<Item OriginalFont="MS PMincho" SubstituteFonts="IPA P Mincho" />
<Item OriginalFont="Arial" SubstituteFonts="Noto Sans" />
<Item OriginalFont="Times New Roman" SubstituteFonts="Noto Serif" />
<Item OriginalFont="Calibri" SubstituteFonts="Carlito" />
</SubstitutesTable>
</TableSubstitutionSettings>
しかしながら SubstitutesTable
に定義したルールにないフォントをデフォルトフォント IPA Gothic に置換したかったのですが、うまくいきませんでした。
OS にインストールされているフォントが優先されるなど、なにか優位なルールがあるのでしょうか?
続いて PowerPoint 向けに以下のように実装しましたが、フォントの置換は行われませんでした。
import aspose.slides as slides
# Load presentation
with slides.Presentation("./files/sample_pptx.pptx") as presentation:
# Load source font to be replaced
source_font = slides.FontData("Meiryo")
with open("./fonts/IPAfont00303/ipamp.ttf", "rb") as fs:
font_data = fs.read()
# load font represented as byte array
slides.FontsLoader.load_external_font(font_data)
# Load the replacing font
# dest_font = slides.FontData("LiberationSerif")
dest_font = slides.FontData("IPA P Mincho")
# Add font rule for font replacement
font_subst_rule = slides.FontSubstRule(source_font, dest_font, slides.FontSubstCondition.ALWAYS)
# Add rule to font substitute rules collection
font_subst_rule_collection = slides.FontSubstRuleCollection()
font_subst_rule_collection.add(font_subst_rule)
# Add font rule collection to rule list
presentation.fonts_manager.font_subst_rule_list = font_subst_rule_collection
# Save the image to disk in JPEG format
presentation.save("text_rule_based_font_replacement_out.pdf", slides.export.SaveFormat.PDF)
Excel についても同様に実装していく予定ですので、同時に情報をいただけますと幸いです。
よろしくお願いします。