在CTEX2.9.2中,中文编译后的pdf文件能够正常显示汉字,但是复制得到的是乱码。这个在新版本中作为BUG被修复了。但是这个功能一定程度上能够防止文档被复制。
可以通过下面的代码来实现类似效果。
import pikepdf
import sys
def main(filename):
pdf = pikepdf.Pdf.open(filename)
for page in pdf.pages:
print(f'处理页面:{page.index+1}')
if '/Resources' in page and '/Font' in page['/Resources']:
fonts = page['/Resources']['/Font']
for font_key in fonts:
font = fonts[font_key]
if '/ToUnicode' in font: del font['/ToUnicode']
#if '/Encoding' in font: del font['/Encoding']
pdf.save(filename.replace('.pdf', '_protected.pdf'))
if __name__ == '__main__':
if len(sys.argv) < 2:
print('请拖入 PDF 文件')
input('按回车退出...')
for input_pdf in sys.argv[1:]:
print(f'处理文件:{input_pdf}')
main(input_pdf)
print(f'完成:{input_pdf}')
input('全部任务完成,按回车退出...')
经过测试,大部分PDF都有效果,包括Word或者PPT转的PDF。少数XeLaTex编译的无效。当然ORC或者VL是防不了的。