Free Support Forum - aspose.com

Word、PDFからHTML変換について

aspose.wordsとaspose.pdfを用いてWordファイルとPDFファイルをHTMLに変換した際、フォントの種類が異なる部分でspanタグの高さが違うのはなぜでしょうか(サンプルファイルの1行目)
また、サンプルのファイルで3行目の文はすべて同じフォント(Century)ですがspanタグの高さが異なっており
どういったときにspanタグの高さが違くなるのかご教授いただけないでしょうか。
2行目はすべてMS明朝でspanタグの高さは問題ないです。

※フォントサイズは10.5になります。

サンプル.zip (111.8 KB)

@JunIto

理解を深めるために、Aspose.PDFとAspose.Wordsによって生成されたHTMLの<span>タグのさまざまな高さを示すスクリーンショットを共有していただけませんか。 それに応じて、さらにサポートを進めていきます。

返信遅くなり、申し訳ありません。

サンプルで送ったファイルのフォントの種類によるspanタグの高さの画像を
添付いたします。
ファイル名が「ファイルの種類+フォントの種類」となっております。

・MS明朝とCenturyではspanタグの高さが違います。
・Centuryでも日本語と英語でspanタグの高さが違います。
・全てMS明朝の場合、日本語・英語ともに同じ高さとなっています。

フォントサイズ画像.zip (45.9 KB)

@JunIto

Aspose.PDFによって生成された出力で、前述の動作に気付くことができました。 そのため、問題追跡システムにPDFJAVA-40252として問題を記録しました。 その詳細をさらに調査し、修正のステータスをお知らせします。 しばらくお待ちください。

ご不便をおかけしてしまい申し訳ございません。

Aspose.Wordsの観点から問題を確認しており、まもなくご連絡いたします。

ご確認ありがとうございます。
対応よろしくお願いいたします。

@asad.ali
また、Asposeのライセンスを適応したHTML(Wordから変換)で
Centuryフォントの文字がMS明朝の文字より下にズレていることがあり
上記と同じ問題であるか調査をお願いいたします。

ライセンス適応ファイル.zip (45.5 KB)

MS Word2016とAspose.Wordsfor .NET 21.3を使用してWord文書をHTML形式に変換し、参照用にHTMLファイルをここに添付しました。

上記のHTMLファイルは、次のC#.NETコードを使用して作成されました。

Aspose.Words.LoadOptions loadOptions = new Aspose.Words.LoadOptions();
loadOptions.LanguagePreferences.DefaultEditingLanguage = EditingLanguage.Japanese;

Document doc = new Document("C:\\226499\\Word\\in.docx", loadOptions);
HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions(SaveFormat.Html);
htmlSaveOptions.PrettyFormat = true;

doc.Save("C:\\226499\\Word\\21.3 EditingLanguage.Japanese.html", htmlSaveOptions);

両方のHTMLファイルはChromeWebブラウザで同じように見えます。Aspose.Words for .NETの最新の21.3バージョンにアップグレードして、それがどのように機能するかを確認してください。

@awais.hafeez
回答ありがとうございます。
説明不足していて申し訳ありませんが、
使用しているAsposeはC#ではなくJavaになります。
Aspose.Words for Javaの最新版を使用して試してみます。

@JunIto,

私の側で最新の21.3バージョンのAspose.WordsforJavaを使用して生成された次の出力を確認してください。

LoadOptions loadOptions = new LoadOptions();
loadOptions.getLanguagePreferences().setDefaultEditingLanguage(EditingLanguage.JAPANESE);

Document doc = new Document("C:\\226499\\Word\\in.docx", loadOptions);
com.aspose.words.HtmlSaveOptions htmlSaveOptions = new com.aspose.words.HtmlSaveOptions(SaveFormat.HTML);
htmlSaveOptions.setPrettyFormat(true);

doc.save("C:\\226499\\Word\\awjava-21.3 EditingLanguage.Japanese.html", htmlSaveOptions);

@awais.hafeez
最新バージョンの21.3を使用してHTML変換を行いましたが
結果は変わらず文字の位置ずれが発生します。
Sampl_Word.zip (12.7 KB)

※PDFから変換したものについては文字の位置ずれは発生していません。
Sample_PDF.zip (95.9 KB)

WordとPDFで何か違うということでしょうか。

ソース
LoadOptions loadOptions = new LoadOptions(); loadOptions.getLanguagePreferences().setDefaultEditingLanguage(EditingLanguage.JAPANESE);

HtmlFixedSaveOptions htmlFixedSaveOptions = new HtmlFixedSaveOptions(); htmlFixedSaveOptions.setPageHorizontalAlignment(HtmlFixedPageHorizontalAlignment.CENTER);

Document objDoc = new Document(fileName, loadOptions);
objDoc.save(outputFileName, htmlFixedSaveOptions);

ちなみにですが環境はLinuxでMS系フォントが入っていない状態です。

@JunIto,

参考までに、これらのHTMLファイルを生成したソースWordDOCXドキュメントもここから提供してください。

また、このAspose.Words 21.3で生成されたHTMLの問題のある領域を強調する比較スクリーンショットを作成して添付してください(予想されるファイルに関して)。

その後、問題をさらに調査し、より多くの情報を提供します。 ご協力いただきありがとうございます。

@awais.hafeez
ドキュメントとHTMLのスクリーンショットを添付いたします。
比較のためPDFのドキュメントとスクリーンショットも添付いたします。
PrintScreen.zip (287.2 KB)

スクリーンショットの赤枠「あいうえお」と「ABC」で文字の下方ズレが起きています。
HTMLのフォントを確認すると、正しいフォントが指定されていないように見えます
Century ⇒ FreeSerif
MS明朝 ⇒ VL Gothic

PDFをHTML変換したものについてはフォントが正しく指定されているためか下方ズレが起きていません。

ご確認お願いいたします。

@JunIto,

次の必要なフォントファイルの最新バージョンをWindows10マシンからLinuxマシン内の別のフォルダーにコピーしてください。

  • MS 明朝
  • Century
  • Meiryo UI
  • MS ゴシック
  • MS P明朝
  • MS Pゴシック

そして、最新の21.3バージョンのAspose.Words forJavaの次のコードを実行してみてください。

LoadOptions loadOptions = new LoadOptions();
loadOptions.getLanguagePreferences().setDefaultEditingLanguage(EditingLanguage.JAPANESE);

Document doc = new Document("word.docx", loadOptions);

FontSettings fontSettings = new FontSettings();
addFontFolder(fontSettings, myDir + "CustomFonts/");
doc.setFontSettings(fontSettings);

HtmlFixedSaveOptions htmlFixedSaveOptions = new HtmlFixedSaveOptions();
htmlFixedSaveOptions.setPageHorizontalAlignment(HtmlFixedPageHorizontalAlignment.CENTER);
htmlFixedSaveOptions.setPrettyFormat(true);

doc.save("output.html", htmlFixedSaveOptions);

private static void addFontFolder(FontSettings fontSettings, String folder)
{
    FontSourceBase[] fontSourceBases = fontSettings.getFontsSources();
    FontSourceBase[] newFontSourceBases = new FontSourceBase[fontSourceBases.length + 1];
    System.arraycopy(fontSourceBases, 0, newFontSourceBases, 0, fontSourceBases.length);
    newFontSourceBases[newFontSourceBases.length - 1] = new FolderFontSource(folder, true);
    fontSettings.setFontsSources(newFontSourceBases);
}

警告メッセージに関連するフォントの欠落がありますか? 次の記事を確認してください。

それでも問題が解決しない場合は、ZIPして次のフォントファイルをここにアップロードして、さらにテストしてください。

  • Meiryo UI

@awais.hafeez
フリーのCenturyフォントを導入して再度試しましたが位置ずれは解決しませんでした。
PrintScree_HTML_Century.png (11.3 KB)

MS系フォントは以前、導入して試したところ位置ずれは解決しました。
ただし、ライセンス購入ができない為、Linuxへの導入はできない状態です。

フォントを導入する以外で解決方法はありますでしょうか。

@JunIto,

恐れ入りますが、このWord文書を正しくレンダリングするには、Word文書で使用されているフォントをLinuxマシンにインストール/表示する必要があります。 または、ソースのWord文書を編集して、Linuxマシンに実際に存在するフォントでそのテキストをフォーマットすることもできます。

@awais.hafeez
回答内容承知しました。

1点質問です。
Windows環境でHTML変換した際はWindowsサーバのフォント参照、LinuxでHTML変換した際はLinuxのフォントを参照しているという認識で合ってますでしょうか?

@JunIto,

はい、あなたの理解は正しいです。 詳細については、ドキュメントの次のセクションを確認してください。

@awais.hafeez
回答ありがとうございます、内容承知しました。
長々とご対応感謝いたします。