使用pdf2md转换PDF为MD时土耳其语输出异常问题求助
使用pdf2md转换PDF为MD时土耳其语输出异常问题
问题现象
用pdf2md库把PDF转成MD文件时,土耳其语输出出现异常,且不同文档表现不一:部分文档转换后土耳其语显示正常,另一部分则出现乱码或显示错误。
转换日志
正常文档(example-normal.pdf)转换日志
Warning: fetchStandardFontData: failed to fetch file "FoxitSans.pfb" with "UnknownErrorException: Unable to load font data at: C:\Users\lorens\Desktop\pdf-md2\node_modules\pdfjs-dist\standard_fontsFoxitSans.pfb". Writing to example-normal.md... Done.
异常文档(example-withe-error.pdf)转换日志
Warning: fetchStandardFontData: failed to fetch file "FoxitSerifBold.pfb" with "UnknownErrorException: Unable to load font data at: C:\Users\lorens\Desktop\pdf-md2\node_modules\pdfjs-dist\standard_fontsFoxitSerifBold.pfb". Warning: fetchStandardFontData: failed to fetch file "FoxitSerifBoldItalic.pfb" with "UnknownErrorException: Unable to load font data at: C:\Users\lorens\Desktop\pdf-md2\node_modules\pdfjs-dist\standard_fontsFoxitSerifBoldItalic.pfb". Warning: fetchStandardFontData: failed to fetch file "FoxitSerif.pfb" with "UnknownErrorException: Unable to load font data at: C:\Users\lorens\Desktop\pdf-md2\node_modules\pdfjs-dist\standard_fontsFoxitSerif.pfb". Warning: fetchStandardFontData: failed to fetch file "FoxitSansBoldItalic.pfb" with "UnknownErrorException: Unable to load font data at: C:\Users\lorens\Desktop\pdf-md2\node_modules\pdfjs-dist\standard_fontsFoxitSansBoldItalic.pfb". Warning: fetchStandardFontData: failed to fetch file "FoxitSerifItalic.pfb" with "UnknownErrorException: Unable to load font data at: C:\Users\lorens\Desktop\pdf-md2\node_modules\pdfjs-dist\standard_fontsFoxitSerifItalic.pfb". Warning: fetchStandardFontData: failed to fetch file "FoxitSans.pfb" with "UnknownErrorException: Unable to load font data at: C:\Users\lorens\Desktop\pdf-md2\node_modules\pdfjs-dist\standard_fontsFoxitSans.pfb". Writing to example-withe-error.md... Done.
原因分析与解决建议
- 字体缺失导致编码解析失败:日志里反复出现无法加载Foxit系列字体的警告,异常文档用到的Foxit字体种类更多。pdf2md依赖的pdfjs-dist库找不到这些字体文件,就没法正确解析土耳其语的特殊字符(比如ğ、ş、ı等),进而出现输出异常。
- 路径拼接错误:注意到日志里的字体路径少了分隔符(比如
standard_fontsFoxitSans.pfb应该是standard_fonts/FoxitSans.pfb),这大概率是pdfjs-dist的路径拼接bug,导致系统找不到字体文件。
具体修复步骤
- 手动补充缺失字体:
- 下载对应的Foxit系列字体文件(FoxitSans.pfb、FoxitSerif.pfb等)。
- 将字体文件放到
C:\Users\lorens\Desktop\pdf-md2\node_modules\pdfjs-dist\standard_fonts\目录下,确保路径分隔符正确。
- 修复路径拼接逻辑:
检查pdfjs-dist源码中fetchStandardFontData方法的路径拼接代码,确保Windows系统下的路径分隔符(\)被正确添加,避免路径拼接错误。 - 替换字体映射:
在pdf2md或pdfjs-dist的配置里,把缺失的Foxit字体映射到系统已有的支持土耳其语的字体(比如Arial Unicode MS),强制用替代字体解析文档内容。
内容的提问来源于stack exchange,提问作者lorens osman
相关产品推荐
相关产品推荐

