复制pdf文字有没有方法不要断行?

复制pdf文字时,只要遇到跨行,预设就会直接断行,相当于按下enter键截断,这样复制到word或其他文件时,还要自己一行一行接回去,实在有些麻烦。

不知有没有方法在复制pdf文字时,不要断行?

自己回:

网路上找到一招:复制pdf文字后贴到浏览器地址栏,便可消除换行,然后再复制回来即可。缺点是只能一段、一段复制,但已经比原来方便很多了。 :smile:

2 个赞

也是我经常用的方法。。

3 个赞

复制完粘贴到emeditor中,用其“排版脚本”(我在本站分享过)中的“段落重排”,一键解决,重排效果非常好。

2 个赞

用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
2 个赞

功能:划词自动去掉断行复制到粘贴板;另词GD和欧路词典界面查词不用复制到粘贴板;

你可以实现的功能,在这个代码加一个鼠标手势功能,比如按下鼠标右键下滑实现粘贴。

1 个赞

用word打开pdf,基本上可以解决,偶尔还有残留。

1 个赞

Quciker值得拥有:)

1 个赞

不知道有没有人用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: 让复制更加简单!