复制pdf文字时,只要遇到跨行,预设就会直接断行,相当于按下enter键截断,这样复制到word或其他文件时,还要自己一行一行接回去,实在有些麻烦。
不知有没有方法在复制pdf文字时,不要断行?
复制pdf文字时,只要遇到跨行,预设就会直接断行,相当于按下enter键截断,这样复制到word或其他文件时,还要自己一行一行接回去,实在有些麻烦。
不知有没有方法在复制pdf文字时,不要断行?
自己回:
网路上找到一招:复制pdf文字后贴到浏览器地址栏,便可消除换行,然后再复制回来即可。缺点是只能一段、一段复制,但已经比原来方便很多了。
也是我经常用的方法。。
用AutoHotKey完美解决,划词/句子/段落就会自动去掉断行,用空格补充参考 求指导AutoHotkey脚本
完整代码如下
Copy:
Send, ^c ;发送ctrl+c 复制所选内容到剪贴板
tooltip,%clipboard%
sleep,500
tooltip,
Loop
{
StringReplace, clipboard,clipboard, `r`n,%A_SPACE%, UseErrorLevel
if ErrorLevel = 0 ;全部替换完,退出循环
break
}
Loop
{
StringReplace, clipboard,clipboard, {TABLE},%A_SPACE%, UseErrorLevel
if ErrorLevel = 0 ;全部替换完,退出循环
break
}
Loop
{
StringReplace, clipboard,clipboard, %A_SPACE%%A_SPACE%, %A_SPACE%, UseErrorLevel ;替换两个空格为一个空格
if ErrorLevel = 0
break
}
clipboard := RegExReplace(clipboard, "([一-龥])([[:space:]])([一-龥])(.*)","$1$3$4") ;如果是中文之间的空格,就删掉空格
if WinExist("ahk_exe GoldenDict.exe") or WinExist("ahk_exe eudic.exe"){
if RegExMatch(clipboard, "[^\x{00}-\x{ff}]"){ ;如果剪切板包含中文字符,则直接结束
Return
}
send,^{c 2}
}
return
功能:划词自动去掉断行复制到粘贴板;另词GD和欧路词典界面查词不用复制到粘贴板;
你可以实现的功能,在这个代码加一个鼠标手势功能,比如按下鼠标右键下滑实现粘贴。
用word打开pdf,基本上可以解决,偶尔还有残留。
Quciker值得拥有:)
不知道有没有人用EditPlus,有个Reformat,可以一键解决这个问题。
有个类似的问题,EXCEL 文本中如果有强制换行符,粘贴到文本文件中去会带双引号。于是,我就先粘到word里去,再从word复制出来纯文本,就解决了。不知还有没有更高明的方法。
这个ahk脚本不能用Ctrl+C移除选中文本的换行符
我的个人脚本,按你的习惯自行更改。
;2022年12月15日
#SingleInstance,force ;当此脚本已经运行时自动替换旧实例再次运行
#WinActivateForce ; 阻止在快速连续激活窗口时任务栏按钮的闪烁
#Persistent ;让脚本持久运行(即直到用户关闭或遇到 ExitApp)
#NoEnv ;不检查空变量是否为环境变量(建议所有新脚本使用)
DetectHiddenWindows,On ;设置脚本可以“看见”隐藏的窗口
;NoTrayIcon ;不显示系统托盘
F12::
Suspend, permit
if (State = 0) {
Gui, Color, 161616
Gui -Caption
Gui, Font, s32,方正正大黑简体
Gui, +AlwaysOnTop +Disabled -SysMenu +Owner
Gui, Add, Text,cffffff,你好
Gui, Show, xCenter yCenter, 状态, NoActivate,
sleep, 1000
Gui, Destroy
State++
}
else {
State := 0
Gui, Color, 161616
Gui -Caption
Gui, Font, s32,方正正大黑简体
Gui, +AlwaysOnTop +Disabled -SysMenu +Owner
Gui, Add, Text,cffffff,再见
Gui, Show, xCenter yCenter, 状态, NoActivate,
sleep, 1000
Gui, Destroy
}
Suspend, toggle
return
~LButton::
MouseGetPos, ,,win
SetTitleMatchMode, 2 ;窗口标题匹配模式改成某个位置必须包含WinTitle。
if( WinActive("Chrome") != win ;浏览器 Chrome
and WinActive("Firefox") != win ;浏览器 Firefox
and WinActive("ahk_class SUMATRA_PDF_FRAME") != win ;pdf阅读器 SumatraPDF
and WinActive("ahk_exe Acrobat.exe") != win ;pdf阅读器 Adobe Acrobat
and WinActive("ahk_exe WeChat.exe") != win ;微信
and WinActive("ahk_exe zotero.exe") != win) ;文献管理器zotero
{ ;判断当前所处的软件窗口
return
}
SetKeyDelay -1, 10
CoordMode, Mouse, Screen
MouseGetPos, x1, y1
KeyWait, LButton
MouseGetPos, x2, y2
if (x1-x2>40 or x2-x1>40) { ;判断鼠标点住左键后移动范围,防误触
gosub, Copy ;执行第64行的Copy标签
}
else if (A_priorHotKey = "~LButton" and A_TimeSincePriorHotkey < 400){ ;双击鼠标左键
gosub, Copy
}
return
Copy:
Send, ^c ;发送ctrl+c 复制所选内容到剪贴板
tooltip,%clipboard%
sleep,500
tooltip,
Loop
{
StringReplace, clipboard,clipboard, `r`n,%A_SPACE%, UseErrorLevel
if ErrorLevel = 0 ;全部替换完,退出循环
break
}
Loop
{
StringReplace, clipboard,clipboard, {TABLE},%A_SPACE%, UseErrorLevel
if ErrorLevel = 0 ;全部替换完,退出循环
break
}
Loop
{
StringReplace, clipboard,clipboard, %A_SPACE%%A_SPACE%, %A_SPACE%, UseErrorLevel ;替换两个空格为一个空格
if ErrorLevel = 0
break
}
clipboard := RegExReplace(clipboard, "([一-龥])([[:space:]])([一-龥])(.*)","$1$3$4") ;如果是中文之间的空格,就删掉空格
if WinExist("ahk_exe GoldenDict.exe") or WinExist("ahk_exe eudic.exe"){
if RegExMatch(clipboard, "[^\x{00}-\x{ff}]"){ ;如果剪切板包含中文字符,则直接结束
Return
}
send,^{c 2}
}
return
#c:: ;window+c复制文件路径
Send, {ctrl down}c{ctrl up}
sleep,200
clipboard=%clipboard% ;%null%
tooltip,%clipboard%
sleep,500
tooltip,
return
F9:: ;百度一下
Send, {ctrl down}c{ctrl up}
Loop
{
StringReplace, clipboard,clipboard, `r`n,%A_SPACE%, UseErrorLevel
if ErrorLevel = 0 ;全部替换完,退出循环
break
}
Loop
{
StringReplace, clipboard,clipboard, %A_SPACE%%A_SPACE%, %A_SPACE%, UseErrorLevel ;替换两个空格为一个空格
if ErrorLevel = 0
break
}
run,https://www.baidu.com/s?wd=%clipboard%
return
F10:: ;必应搜索
Send, {ctrl down}c{ctrl up}
Loop
{
StringReplace, clipboard,clipboard, `r`n,%A_SPACE%, UseErrorLevel
if ErrorLevel = 0 ;全部替换完,退出循环
break
}
Loop
{
StringReplace, clipboard,clipboard, %A_SPACE%%A_SPACE%, %A_SPACE%, UseErrorLevel ;替换两个空格为一个空格
if ErrorLevel = 0
break
}
run,https://cn.bing.com/search?q=%clipboard%
return
F11:: ;Pubmed搜索
Send, {ctrl down}c{ctrl up}
Loop
{
StringReplace, clipboard,clipboard, `r`n,%A_SPACE%, UseErrorLevel
if ErrorLevel = 0 ;全部替换完,退出循环
break
}
Loop
{
StringReplace, clipboard,clipboard, %A_SPACE%%A_SPACE%, %A_SPACE%, UseErrorLevel ;替换两个空格为一个空格
if ErrorLevel = 0
break
}
run,https://pubmed.ncbi.nlm.nih.gov/?term=%clipboard%
return
#w:: ;运行微信
Run D:\WeChat\WeChat.exe
return
; 简单鼠标手势
Rbutton::
minGap = 30 ; 设定的识别阈值,大于此阈值,说明在某方向上有移动
mousegetpos xpos1,ypos1
Keywait, RButton, U
mousegetpos xpos2, ypos2
if (abs(xpos1-xpos2) < minGap and abs(ypos1-ypos2)<minGap) ;nothing 没有运动,直接输出rbutton
send, {rbutton}
else if (xpos1-xpos2 > minGap and abs(ypos1-ypos2)<minGap) ;left ctrl+z(对于文件或选定的字符有效)
send, {ctrl down}z{ctrl up}
else if (xpos2-xpos1 > minGap and abs(ypos1-ypos2)<minGap) ;right ctrl+y 进一步
Send, {ctrl down}y{ctrl up}
else if (abs(xpos1-xpos2)< minGap and (ypos1-ypos2)>minGap) ;up ctrl+c 复制
{
send,^x
send,^v
send,{Backspace}
tooltip,%clipboard% ;在屏幕上建立一个紧随鼠标的弹出式窗口
sleep,1000
tooltip,
}
else if (abs(xpos1-xpos2)< minGap and (ypos2-ypos1)>minGap) ; 按住鼠标右键向下 粘贴
{
IfWinActive, ahk_exe chrome.EXE
run,https://www.baidu.com/s?wd=%clipboard%
IfWinActive, ahk_exe POWERPNT.EXE
send,!1 ;PowerPoint 设置Alt+1为模式粘贴文本(不带格式)
IfWinActive, ahk_exe GoldenDict.EXE
send,^c
IfWinActive, ahk_exe WINWORD.EXE
send,^v
IfWinActive, ahk_exe zotero.EXE
send,^v
IfWinActive, ahk_exe WeChat.EXE
send,^v
}
else if (ypos2-ypos1 > minGap and (xpos1-xpos2) > minGap) ; down and left , 确定
send, {Enter}
else if (ypos2-ypos1 > minGap and (xpos2-xpos1) > minGap) ; down and right,ctrl+shift+v 粘贴格式
send, ^+v ;粘贴
else if (ypos1-ypos2 > minGap and (xpos2-xpos1) > minGap) ; up and right OCR
send, !{space} ;天若设置的文字识别快捷键为Alt和Splace组合
else if (ypos1-ypos2 > minGap and (xpos1-xpos2) > minGap) ; up and left 截屏
send, {PrintScreen} ;截屏软件快捷键设置为PrintScreen
else
send, {rbutton}
return
感谢!确实可用!
之前用过这款,但win10运行起来有时候无法打开设置窗口
CopyPlusPlus/CopyPlusPlus: 让复制更加简单!