用fopen用matlab修改PDF文件

时间:2013-08-15 05:05:59

标签: matlab

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

谢谢!

1 个答案:

答案 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);