次の方法で共有


PDF作成時にフォントを埋め込まない様にしたい

質問

2013年10月25日金曜日 9:46

こんにちは。初めて投稿します。

Microsoft コミュニティで質問した所こちらのフォーラムを紹介されましたので、
以下、コミュニティで記載した内容を転記させて頂きます。

http://answers.microsoft.com/ja-jp/office/forum/office_2010-customize/vba%E3%81%A7%E3%81%AEpdf%E4%BD%9C%E6%88%90/d58d5a41-403a-4215-ba17-002b73019468

==============================================================

現在、office系ファイルをPDF化するマクロを組もうと考えています。

この時、何も考えずに.ExportAsFixedFormatメソッドでPDF化するとフォントが埋め込まれてしまいます。
これを埋め込まれないようにしたいので、BitmapMissingFontsというそれっぽいパラメータをFalseに
してみましたが何も変わりませんでした。

コードは以下の通りです。(下記はWord用ですが、Excelでも組立を予定しています)

Private Sub 保存_Click()

Dim Path As String
Dim WSH As Variant
Dim myfile As String

' 保存先:デスクトップ
Set WSH = CreateObject("Wscript.Shell")
Path = WSH.SpecialFolders("Desktop") & "\

'ファイル名
myfile = Format(Date, "yymmdd") & "書類A.pdf"

ActiveDocument.ExportAsFixedFormat _
    OutputFileName:=Path & myfile, _
    ExportFormat:=wdExportFormatPDF, _
    OpenAfterExport:=True, _
    OptimizeFor:=wdExportOptimizeForOnScreen, _
    Range:=wdExportAllDocument, _
    Item:=wdExportDocumentContent, _
    IncludeDocProps:=False, _
    KeepIRM:=False, _
    CreateBookmarks:=wdExportCreateHeadingBookmarks, _
    DocStructureTags:=True, _
    BitmapMissingFonts:=False, _
    UseISO19005_1:=False

End Sub

どこがおかしいでしょうか。
あるいは何か他のやり方があるでしょうか。

ちなみにこれは組織内で使用するので多数のユーザーを想定しています。
1クリックで、あるいは何かの処理に付随して統一設定のPDFを作成する予定です。
自分自身だけが使用するのでしたら、Acrobatアドオンや印刷設定を変えて埋め込みを回避できるのですが、、、。

以上です。是非宜しくお願いします。

すべての返信 (13)

2013年10月29日火曜日 2:31 ✅回答済み

細かく制御したいのであれば、専用のソフトウェアを使用するしかないのではなないでしょうか。

# 思い付きレベルですが、平成角ゴシックでOffice文書を作成すれば、埋め込まれないかもしれません。


2013年10月31日木曜日 8:21 ✅回答済み

ところで、Wordでこの機能を操作していて気になったのですが、BitmapMissingFontsオプションは

この「フォントの埋め込みが不可能な場合はテキストをビットマップに変換する」のオプションであり、フォントを埋め込むかどうかを制御するオプションではないように思いました。


2013年10月25日金曜日 10:54 | 1 票

VBAの説明ではありませんが、
DocumentBase.ExportAsFixedFormat メソッド
の bitmapMissingFonts の説明に

※引用:フォントのライセンスで PDF ファイルへのフォントの埋め込みを許可しない場合は、このパラメーターを true に設定します。

とあります。


2013年10月28日月曜日 2:17

hihijijiさん、返信ありがとうございます。

> DocumentBase.ExportAsFixedFormat メソッド 
のリファレンスは読んだのですが、翻訳が上手くないと感じます。

「ライセンスで・・・埋め込みを許可しない場合は、・・・true に設定します。」
の『ライセンスで』の意図が、知識が無い為に汲めません。

それよりも後述の
「このパラメーターを false に設定すると、指定されたフォントが表示先のコンピューターで使用できない場合は、適切なフォントに置き換えられます。」
は正に、埋め込みフォントが無い場合の挙動ですのでfalseの指定に変更したという経緯です。

結果的にはtrueでもfalseでもフォントが埋め込まれてしまいます。

具体的には、下記の通りです。

Century (埋め込みサブセット)
種類 : TrueType
エンコーディング : Ansi
MSゴシック (埋め込みサブセット)
種類 : TrueType
エンコーディング : Ansi
MSゴシック (埋め込みサブセット)
種類 : TrueType (CID)
エンコーディング : Identity-H


2013年10月28日月曜日 13:15

「ライセンスで・・・埋め込みを許可しない場合は、・・・true に設定します。」
の『ライセンスで』の意図が、知識が無い為に汲めません。

「ライセンスで」が理解できないと言うことであれば、「使用許諾契約で」と読み替えてもらってもよいでしょう。

フォントによっては使用許諾契約(ライセンスとも呼ばれることがあります)で、電子データとして埋め込むことを禁止している場合があります。
このシナリオを想定して埋め込みしないオプションが用意されているのでしょう。

もっとも、それ以外の埋め込みたくない理由の場合も使えるオプションであるはずなので、そういった事情がある場合は、気にしなくてもよい一文です。
(VBA とはいえ、プログラムを作る人は、「ライセンス」という言葉を理解するべきだとは思いますが…)


2013年10月29日火曜日 0:24

Azuleanさん

言い方が悪かったかも知れません。リファレンスの日本語が曖昧なため、正確な判断の妨げになっている、という意図です。
ライセンスの内容または有無による挙動の制御であることは想起できております。

ただ今回、ライセンスとは無関係に埋め込みたくありませんでしたので、困っています。

追加で質問があります。

> それ以外の埋め込みたくない理由の場合も使えるオプションであるはず
とのことですが、であれば今回は気にした方が良いのではないでしょうか。


2013年10月31日木曜日 5:55

佐祐理さん

返信ありがとうございます。

> 細かく制御したいのであれば、専用のソフトウェアを使用するしかないのではなないでしょうか。

仕方なのであれば、そうですね...。あるいは地道に各端末を設定していくか。

> 平成角ゴシックでOffice文書を作成すれば、埋め込まれないかもしれません。

新たなご提案ありがとうございます。試してみました。
すると確かに平成角ゴシックは埋め込まれませんでしたが、MSゴシックが強制的に埋め込まれてしまいました。
(BitmapMissingFonts のTrue / False 両方共に試してみました。)

思ったより困難な要望だったようです。

とりあえずは、このVBAによらない次善の策を検討してみます。


2013年10月31日木曜日 13:08

http://office.microsoft.com/ja-jp/help/HA010067494.aspx より。

  • チェック ボックスをオンにした場合     フォントがビットマップ表示に置換されます。作成されるファイルの見た目は元のデザインに近くなります。ユーザーによっては、高解像度でファイルを表示または印刷するときに、テキストの外観が粗くなることがあります。
  • チェック ボックスをオフにした場合     作成されたファイルを表示しているユーザーが同じフォントを持っている場合、そのフォントが使用されます。同じフォントを持っていない場合、別のフォントで代用されます。

よく調べずに前回の投稿をして申し訳なかったのですが、Office のヘルプとしてはこういう説明となっています。
確かにライセンス云々や埋め込み権限どうたらはよくわかりませんね…。orz


2013年10月31日木曜日 13:18

ん…あってますよ? 引用されたその手前、

このチェック ボックスは、ドキュメント内の 1 つまたは複数のフォントを埋め込む権限がない場合に該当します。

が指しています。フォントファイルにはライセンスに関するフィールドがあります。ライセンス指定としてなんらか制限がかけられていた場合にフォントを埋め込むことができなくなります。
埋め込むことのできないフォントに於いて、このチェックボックスの選択肢が機能します。

しかし、今回対象となっているMS Pゴシックはフォント埋め込み可能なライセンスになっているため、このチェックボックス and/or BitmapMissingFontsの対象外となります。


2013年11月1日金曜日 23:31

フォントファイルにはライセンスに関するフィールドがあります。ライセンス指定としてなんらか制限がかけられていた場合にフォントを埋め込むことができなくなります。

ご指摘ありがとうございます。
「フォントに埋め込み可否の属性があること」を認識していなかったので混乱していました。
となると、Word でビットマップで書き込む・書き込まないを任意で制御することはできなさそうという感じですね…。


2013年11月4日月曜日 13:31

>佐祐理さん、Azuleanさん

お陰様でBitmapMissingFonts の意味が漸く分かりました。

結果的にはPDF埋め込みの回避はできないようですが、勉強させて頂きました。

ありがとうございます。


2013年11月5日火曜日 5:53

あら、そこをご存じなかったのですか…把握された上での2013年10月28日 13:15のコメントかと思い、最初は黙っていました。

念のため補足しておきますと、コントロールパネル - フォントで各フォントのプロパティを表示しますと、

というように「フォント埋め込み可能」かのフィールドがあります。このフィールドの選択肢に何があるかの詳細は把握していませんが、ディスプレイのみ、印刷可、再頒布可などいろいろな条件があると想像しています。
「ライセンス」というのは、フォントのライセンスによる使用条件があり、それを表すのが上記フィールドであり、そのフィールドに応じてPDF生成方法が決定される、のはずです。


2013年11月13日水曜日 3:09

返信が遅くなりすみません。
追加の補足ありがとうございます。
BitmapMissingFontsはオプションの中で唯一埋め込み制御に関するものでしたので、ものは試しにとやってみたのですがやはりダメだった、という状況です。今回はそれを含めて相談したせいで混乱を与えてしまったかも知れません。