0

是否可以使用 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来完成......

谢谢!

4

1 回答 1

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);
于 2013-08-15T08:02:30.430 回答