[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 想VBA和PDFtk结合给指定的PDF加标签,中途报错,求方案。

开始的时候,我想用VBS +PDFtk来解决
执行VBS时,提示选择PDF文件,
与VBS同级目录下有 标签.txt 一行一个内容,按行数对应该PDF的页数,一行一页,一个标签
但是没有实现

后改VBA  中间有报错 没结果


链接:https://pan.baidu.com/s/1IPWaUsmx1IV-LpkBNUZRoQ?pwd=0jfb
提取码:0jfb
--来自百度网盘超级会员V10的分享

与EXECL文件同级文件平 PDFtk 下有 PDFtk.exe文件
运行VBA时提示选择文件,选择目录开始在当前目录
利用VBA为所选PDF文件添加标签,
A1对应PDF第1页
A2对应PDF第2页
A3对应PDF第3页
A4对应PDF第4页
A5对应PDF第5页
A6对应PDF第6页
……
以此类推


所有需要的临时文件都在 \TEMP 中

回复 7# qd2024

回复 22# ppll2030

所谓7楼的楼主约定是 ‘我保证 与bat 标签.txt pdttk.exe 同级目录只有一个*.pdf’,此乃6楼代码被订正的依据...
utf-8编码的标签设置文件 ‘BMu8.txt’ 是6楼代码调用powershell功能从 ‘标签.txt’ 转码生成的,无须批处运行要求的 chcp 65001 和批处存为utf-8编码等操作...
所以还是希望楼主自己给21楼的问题一个回复...

TOP

本帖最后由 aloha20200628 于 2024-7-8 22:22 编辑

回复 26# 77七

谢了
哇塞 本想 if not exist "*.pdf" exit/b 和 if not exist "标签.txt" exit/b 两行并一行,反倒是给 *.pdf 轮空时钻了漏洞
须给6楼代码一个修复,已完成...

TOP

回复 24# aloha20200628


   *.pdf 通配结果为空,就不执行do了
bat小白,请多指教!谢谢!

TOP

回复 22# ppll2030

所谓7楼的楼主约定是 ‘我保证 与bat 标签.txt pdttk.exe 同级目录只有一个*.pdf’,此乃6楼代码被订正的依据...
utf-8编码的标签设置文件 ‘BMu8.txt’ 是6楼代码调用powershell功能从 ‘标签.txt’ 转码生成的,无须批处运行要求的 chcp 65001 和批处存为utf-8编码等操作...
所以还是希望楼主自己给21楼的问题一个回复...

TOP

回复 23# 77七

直接在命令行上试试看结果 》if not exist "*.txt" (@echo,0) else @echo,1

TOP

回复 6# aloha20200628


   
大佬,代码第2行判断是否存在pdf文件会失败吧
bat小白,请多指教!谢谢!

TOP

回复 21# aloha20200628


    哈哈,老大的代码看不懂。就直接代楼主上自己的测试结果吧
1、脚本bat和标签.txt必须是ANSI,任意一个是utf-8结果就会乱码。都是ANSI下,结果正确。
2、多个pdf只会操作一个。

TOP

回复 7# qd2024

按照7楼中的楼主约定方法,直接用6楼的代码处理其他的 *.pdf 及其 ‘标签.txt’,有何问题吗?

TOP

回复 17# ppll2030


    太感谢了

TOP

回复  ppll2030


   6、7行的两种方式,%1会改变工作路径,而set /p却不会,%1含有空格加引号,而set  ...
77七 发表于 2024-7-8 15:13



    唉,学艺不精,这也是改了又改的原因了。一会儿拖拽成功,但粘贴路径有莫名bug
%1是为了拖拽功能,set /p 是为了粘贴复制,
我周围的人习惯不同,为了方便就都统一这么写了。
上面我也只是测试了拖拽的功能对空格文件名和路径没问题。回头再看看粘贴复制的情况吧。
至于%~dp0pdftk,也是无奈之举,不是同一目录的pdf文件,会提示:
'pdftk' is not recognized as an internal or external command,
operable program or batch file.
The system cannot find the file specified.
这也是之前我补齐所有文件的完整路径的原因。越搞越麻烦。哈哈
最后,感谢大佬的指点。让我对%1和set /p又有了一些新的认知。

TOP

回复 17# ppll2030


   6、7行的两种方式,%1会改变工作路径,而set /p却不会,%1含有空格加引号,而set /p不知道情况如何,而后面又使用 %~dp0pdftk,感觉空格、引号与路径有点混乱,可提供给楼主一种方式就好。如:第7行输入一个含有空格的路径,而没有引号,后续会出错。
bat小白,请多指教!谢谢!

TOP

本帖最后由 ppll2030 于 2024-7-8 17:25 编辑

回复 16# qd2024


经过77大佬的提醒和指导,目前拖拽和粘贴复制的方式都没有问题了。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. rem 注意::一定要保存为UTF-8格式的bat文件
  4. chcp 65001 >nul
  5. :start
  6. set f=%1
  7. if not defined f echo. &set /p f=添加PDF文件(拖拽文件或者填写文件的完整路径):
  8. if not defined f echo.&pause&cls&goto :start
  9. set f=%f:"=%
  10. for /f "delims=" %%i in ("%f%") do set _nf=%%~ni&set _xf=%%~xi&set _pf=%%~dpi
  11. set /a n=1
  12. cd /d %_pf%
  13. (for /f "delims=" %%a in ('type "标签.txt"') do (
  14.         set str=%%a
  15.         echo BookmarkBegin
  16.         echo BookmarkTitle: !str!
  17.         echo BookmarkLevel: 1
  18.         echo BookmarkPageNumber: !n!
  19.         set /a n+=1
  20. ))>bookmark.txt
  21. "%~dp0pdftk" "!f!" update_info_utf8 bookmark.txt output "!_nf!_bookmark!_xf!"
  22. rem 备份源文件,需要去掉前面两个 :: 冒号
  23. ::ren "!f!" "!_nf!_bak!_xf!"
  24. move /y "!_nf!_bookmark!_xf!" "!f!" >nul
  25. del /q bookmark.txt
  26. echo.&echo.书签添加完毕!&timeout /t 3&exit
复制代码

TOP

本帖最后由 qd2024 于 2024-7-8 07:43 编辑

回复 12# ppll2030


    测试新问题
当PDF文件名为  

  【张梅化学】高一衔接班讲义
   扫描全能王 2024-04-25 08.14

添加标签失败 代码无效,拜托帮忙调整一下 谢谢

TOP

回复 13# 77七


    辛苦了  感谢

TOP

返回列表