ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux下使用gs(GhostScript)命令合并PDF文件并添加目录的方法

2022-07-22 07:00:59  阅读:271  来源: 互联网

标签:文件 中文 GhostScript gs 格式 标题 pdfmark Linux pdf


 

 

Linux下使用gs(GhostScript)命令合并PDF文件并添加目录的方法

无名D小兵

于 2019-03-31 17:41:17 发布

3346
收藏 1
分类专栏: 文件处理 文章标签: pdfmark gs linux 合并pdf
版权

文件处理
专栏收录该内容
1 篇文章0 订阅
订阅专栏
一、 合并pdf
使用以下命令合并:
gs -q -sDEVICE=pdfwrite -dBATCH -sOUTPUTFILE=new.pdf -dNOPAUSE pdf_files pdfmark
其中:pdf_files指要合并的PDF文件,pdfmark是目录生成文件。pdf文件可以只指定一个,这样可以用来为pdf文件加目录。

二、 关于pdfmark
简单的pdfmark文件由若干行以下格式的内容组成:
[ /Ttile (string) /Count number /Page number /OUT pdfmark
其中:
/Title:标题名称,若标题名称含有空格,则标题应该用括号括起来。
/Count:标题下的分支数目,若无分支,此值为0,需要注意的是,若此值大于零,则此标题下的对应数量的标题都会被视为此标题的子标题。
/Page:条目指向的页码
/OUT:输出格式
这只是诸多pdfmark格式的其中一种,更多详情可自行谷歌搜索。此外pdfmark文件名可自由指定。

三、 关于中文标题
若要加的目录的标题包含中文,则要涉及到编码问题。默认情况下,linux使用的是UTF-8的编码格式,若pdfmnark文件的中文编码为该格式,则生成的目录中的中文将会变成乱码。因为Pdf文件并不支持UTF-8格式的中文标题,其支持的中文编码格式为带BOM的UTF-16BE和PdfdocEncoding两种,因此我们需要将中文标题的编码转换成上述两个格式之一,而其中,转为UTF-16BE相对简单一些。需要注意的是,我们只需要对标题进行转码,其他地方的编码需要保留。
具体的做法是,将中文标题转成带有BOM的UTF-16BE的格式,然后用16进制表示。可用以下命令实现:
echo -n ‘中文标题’ |iconv -t utf-16|od -x -A none|tr -d ' \n'|sed 's/./\U&/g;s/^/</;s/\$/>\n/'
转码完成后,用转码的结果替换pdfmark文件中的中文标题。最终生成的pdfmark条目是类似以下这样的:
[ /Title <FEFF0031002E00310020004B0056004D7684524D4E164ECA751F> /Count 0 /Page 24 /OUT pdfmark
其中,/Title一项的值已被转成用16进制表示的UTF-16BE编码格式。

PS:
在perl编程中,若要调用上述shell命令实现转码并读取结果,则应使用..调用方法而不能使用system调用方法

参考链接:
https://stackoverflow.com/questions/9188189/wrong-encode-when-update-pdf-meta-data-using-ghostscript-and-pdfmark
————————————————
版权声明:本文为CSDN博主「无名D小兵」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010252464/article/details/88932221

标签:文件,中文,GhostScript,gs,格式,标题,pdfmark,Linux,pdf
来源: https://www.cnblogs.com/xiaojikuaipao/p/16504258.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有