是否可以使用matlab打开PDF文件,用新字符串('Arial')手动替换字符串('Helvetica')?可能是因为文件是部分二进制文件和部分ascii,如果我
fid = fopen(filename, 'r');
str = fread(fid, '*char')';
fclose(fid);
newStr = strrep(str, 'Helvetica', 'Arial');
fid = fopen(filename, 'w');
fprintf(fid, '%s', newStr);
fclose(fid);
PDF根本无法使用。有没有办法避免这种情况?
PS:1)PDF文件的大小可能大不相同,因此跳过一定数量的二进制数据可能很困难; 2)我知道如何在python中完成它,但我真的很想看看它是否可以用纯MATLAB来完成......
谢谢!
答案 0 :(得分:1)
这样做的一种方法是将pdf读取为uint8而不是char,并使用fwrite写出
fid = fopen(filename, 'r');
bytes = fread(fid, 'uint8')';
fclose(fid);
% Do the replacement
% NB: strrep complains about the byte array but works anyway
% You could do replacement without using string function
% but this works.
output = strrep(bytes,'Helvetica','Arial');
% Write out the modified pdf
fid = fopen(filename, 'w');
fwrite(fid, output);
fclose(fid);