标题: [已解决]20元求修改pdf文件 [打印本页]
作者: lxh623 时间: 2019-7-29 09:47 标题: [已解决]20元求修改pdf文件
文件夹有很多pdf,目前的操作是,用emeditor打开,提示“2进制(ASCII)”打开,确认。之后替换“BitsPerComponent 1/ColorSpace/DeviceGray”为“ImageMask true/BitsPerComponent 1 ”,两个的长度一样,后面的空格是补足长度。最后,保存修改。
替换的目的是,这些图像pdf经过acrobat的批量OCR,这样替换处理之后,背景透明。就可以修改背景颜色,有利于保护视力。
问题是,需要一个一个打开,比较慢。我的想法是,加快这个替换。
第一,直接用批处理来达到目的。
第二,批处理调用emeditor,自动替换保存。
不知道能不能做到。感谢帮助。
作者: WHY 时间: 2019-7-29 10:50
"BitsPerComponent 1/ColorSpace/DeviceGray" 这个字符串在 PDF 文件中的位置是固定的吗?比如全部位于文件开头,或者全部位于第 N 个字节。
能给个样本吗?
作者: zaqmlp 时间: 2019-7-29 11:14
- @echo off
- set info=互助互利,支付宝扫码头像,感谢赞助
- rem 有问题,可加QQ956535081及时沟通
- title %info%
- set "rootpath=%~dp0"
- cd /d "%rootpath%"
- set "comm=reptxt32.exe"
- if not exist "%comm%" (echo;"%comm%"不存在,先下载http://bcn.bathome.net/tool/reptxt32.exe&goto end)
- for /f "delims=" %%a in ('dir /a-d/b *.pdf') do (
- echo;%%a
- "%comm%" "%%a" "BitsPerComponent 1/ColorSpace/DeviceGray" "ImageMask true/BitsPerComponent 1 "
- )
- :end
- echo;%info%
- pause
复制代码
作者: lxh623 时间: 2019-7-29 17:31
"BitsPerComponent 1/ColorSpace/DeviceGray" 这个字符串在 PDF 文件中的位置是固定的吗?比如全部位于文件 ...
WHY 发表于 2019-7-29 10:50
样本来一页。acrobat里面ocr,就会变成不透明。
作者: WHY 时间: 2019-7-29 20:19
我也l贴一个,PowerShell 脚本- $str1 = 'BitsPerComponent 1/ColorSpace/DeviceGray';
- $str2 = 'ImageMask true/BitsPerComponent 1 ';
- $arr = [byte[]][char[]]$str2;
-
- if( ![IO.Directory]::Exists('.\new') ){ $null = md .\new; }
-
- forEach( $a In (dir *.pdf -File) ){
- $Bytes = [IO.File]::ReadAllBytes($a.FullName);
- $Count = $Bytes.Count - $arr.Count;
- for( $i=0; $i -lt $Count; $i++ ){
- $s = [Text.Encoding]::ASCii.GetString( $Bytes[$i..($i + $arr.Count - 1)] );
- if( $s -eq $str1 ){
- for( $j=0; $j -lt $arr.Count; $j++ ){ $Bytes[$i+$j] = $arr[$j]; }
- break;
- }
- }
- [IO.File]::WriteAllBytes( '.\new\' + $a.Name, $Bytes );
- }
- pause
复制代码
作者: flashercs 时间: 2019-7-29 20:39
本帖最后由 flashercs 于 2019-7-29 20:43 编辑
- @echo off
- REM 需要处理的文件所在目录
- set "dirpath=C:\EmEditor"
- REM 文件类型
- set "filePattern=*.pdf"
- REM 需要替换的源字符串
- set "srcString=BitsPerComponent 1/ColorSpace/DeviceGray"
- REM 替换后的字符串
- set "dstString=ImageMask true/BitsPerComponent 1 "
- start "" emeditor /act
- timeout 5
- for /f "delims=" %%A in ('where /f "%dirpath%:%filePattern%"') do (
- echo %%A
- emeditor %%A /cp 65539 /rc "%srcString%" /rw "%dstString%"
- )
- timeout 5
- emeditor /sca
- pause
- exit /b
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |