লাইন বিরতি ছাড়াই পিডিএফ থেকে পাঠ্য অনুলিপি করার কোনও কার্যকর উপায় আছে কি?


11

পিডিএফ থেকে একটি স্প্রেডশীটে হাজার হাজার টুকরো টুকরো আমার পাওয়া দরকার। এগুলি সংক্ষিপ্ত, খুব কমই 2-3 সারির চেয়ে বেশি, তবে প্রতিটি লাইন ব্রেক একটি নতুন ঘর তৈরি করে এবং আমাকে সেই ম্যানুয়ালি মেরামত করতে হয়, যার জন্য প্রচুর সময় ব্যয় হয়।

কারণ আমি তাদের মধ্যে অনেকগুলি রয়েছি, "ওয়ার্ডে পেস্ট করুন এবং একটি অনুসন্ধান করুন এবং প্রতিস্থাপন করুন" ওয়ার্কআরউন্ডটি আমার পক্ষে খুব সময় নষ্টকারী। অনুলিপিটিতে লাইন ব্রেকটি অদৃশ্য হওয়ার কোনও উপায় আছে কি? হতে পারে এমন কোনও দর্শক আছেন যা এই জন্য একটি বিশেষ অনুলিপি মোড সরবরাহ করেন বা একটি প্লাগইন আছে?

নথিগুলি বৈজ্ঞানিক নিবন্ধসমূহ। পাঠ্য বিন্যাসটি বেশ লিনিয়ার। আপনি ধরে নিতে পারেন যে পাঠ্যটি আমি অনুলিপি করছি তা কোনও টেবিল বা ভাসমানের অভ্যন্তরে নয়, এবং ঘোরানো বা কোনও কিছুই নয়। (যদি এমন কোনও ঘটনা ঘটে থাকে তবে আমি মনে করি আমি নিজেই এটি মোকাবেলা করব)। পাঠ্যটি প্রায়শই দুটি কলামে সেট করা থাকে তবে এর কলাম থেকে আমার প্রয়োজনীয় পাঠ্যটি চিহ্নিত করতে আমার কোনও সমস্যা নেই। আমার কোনও বিশেষ বিন্যাস সংরক্ষণ করার দরকার নেই। আমি একটি সমাধান চেষ্টা করতে ইচ্ছুক যা উদাহরণস্বরূপ সমস্ত ছাঁটাই অক্ষর মুছে ফেলে। পাঠ্যগুলি ইংরাজীতে রয়েছে, সমাধানটি কেবলমাত্র ASCII / কপি করা পাঠ্যের সমস্ত অ-অক্ষরীয় ASCII- এ স্ট্রিপ করলে ঠিক আছে।

আমার একটি সমাধানের জন্য খুব দৃ kind় পছন্দ রয়েছে যা লিনাক্স, সম্ভবত কোনও ধরণের ওকুলার প্লাগইনে কাজ করবে। তবে যদি কোনও উইন্ডোজ-কেবল সমাধান হয়ে থাকে তবে আমি এটি সম্পর্কেও শুনতে চাই। আমার উইন্ডোজ মেশিনে কিছুটা সাম্প্রতিক অ্যাক্রোব্যাট প্রোয়ের লাইসেন্স রয়েছে।


আপনি ফক্সিট পাঠক দিয়ে চেষ্টা করেছেন?
কাসুন

2
pdftotext সাধারণত সেরা, তবে আপনার এখনও কিছু পোস্ট-প্রসেসিং প্রয়োজন। দেখুন linuxquestions.org/questions/programming-9/...
নিমো

@ কাসুন ফক্সিট্রেডার বা যে কোনও পাঠক ব্যবহার করেন তা অপ্রাসঙ্গিক: পিডিএফ ফাইল হ'ল লাইন ব্রেকগুলি প্রবর্তন করে।
ইস্তভান জাচার

উত্তর:


5

কিছুক্ষণ আগে আমি স্পিচ স্ক্রিপ্টে একটি পাঠ্যে কাজ করার সময় আমারও একই সমস্যা হয়েছিল। আমার স্ক্রিপ্টটি নতুন লাইনগুলি সন্ধান করে পাঠ্য ইনপুটটিকে খণ্ডগুলিতে ভাঙ্গার চেষ্টা করবে। পিডিএফ ফাইলগুলির সাথে প্রতিটি লাইন যেভাবে নতুন লাইনের সাথে শেষ হয় তার কারণেই এই গোলমাল হবে।

সুতরাং আমি যা করেছি তা হ'ল কয়েকটি sedএবং trকম্যান্ডসকে কেবলমাত্র নতুন লাইনের প্রকৃত লাইন বিরতি হিসাবে সম্পূর্ণ স্টপ দিয়ে শেষ হওয়ার বিষয়টি বিবেচনা করার জন্য commands এটি খুব সুন্দর ছিল না তবে এটি কাজ করেছিল।

এই স্নিপেটটি ব্যবহার করে আমি আপনার জন্য একটি ছোট স্ক্রিপ্ট লিখেছিলাম যা আশা করি সহায়তা করবে:

#!/bin/bash

# title: copy_without_linebreaks
# author: Glutanimate (github.com/glutanimate)
# license: MIT license

# Parses currently selected text and removes 
# newlines that aren't preceded by a full stop

SelectedText="$(xsel)"

ModifiedText="$(echo "$SelectedText" | \
    sed 's/\.$/.|/g' | sed 's/^\s*$/|/g' | tr '\n' ' ' | tr '|' '\n')"

#   - first sed command: replace end-of-line full stops with '|' delimiter and keep original periods.
#   - second sed command: replace empty lines with same delimiter (e.g.
#     to separate text headings from text)
#   - subsequent tr commands: remove existing newlines; replace delimiter with
#     newlines
# This is less than elegant but it works.

echo "$ModifiedText" | xsel -bi

স্ক্রিপ্ট ব্যবহার xselবর্তমানে হাইলাইট টেক্সট বিশ্লেষণ করতে এবং তারপর সঙ্গে এটি পরিবর্তন sedএবং trকম্যান্ড-লাইন আমি উপরের উল্লেখ করেছে। প্রক্রিয়াজাত পাঠ্যটি আবার ক্লিপবোর্ডের মাধ্যমে ফেরত দেওয়া হয় xsel -bi

আপনার দৃশ্যে আপনি কীভাবে স্ক্রিপ্টটি ব্যবহার করতে পারেন তা এখানে:

  1. নিশ্চিত হয়ে নিন যে আপনি xselইনস্টল করেছেন ( sudo apt-get install xselচালু (কে) উবুন্টু)
  2. স্ক্রিপ্ট copy_without_linebreaksবা অনুরূপ কিছু সংরক্ষণ করুন এবং এটি সম্পাদনযোগ্য করুন
  3. আপনার ডাব্লুএম পছন্দগুলিতে আপনার পছন্দের হটকি স্ক্রিপ্টটি বরাদ্দ করুন
  4. কিছু পাঠ্য হাইলাইট করুন এবং হটকি টিপুন
  5. ক্লিপবোর্ডটি স্বয়ংক্রিয়ভাবে পরিবর্তিত পাঠ্যের সাথে পূরণ করা উচিত

3

এটি আমার বছরের পর বছর ধরে bugging হয়েছে, তাই আমি একটি সাধারণ (উইন্ডোজ) সলিউশন ব্যবহার মূর্ত আউট Autohotkey । অটোহোটকি হ'ল হালকা ওজনের, ফ্রি, ওপেন সোর্স স্ক্রিপ্টিং সফটওয়্যার যা উইন্ডোজ প্রায় কল্পনাযোগ্য কোনও কিছুর জন্য হটকি তৈরি করতে পারে।

যখন Ctrl+ cটি আঘাত করা হয়, তখন সক্রিয় উইন্ডোটি পিডিএফ রিডার হলে কোডটি কেবল তখনই ফায়ার হয়, অন্যথায় এটি প্রদত্ত নির্বাচনটিকে যথারীতি অনুলিপি করে। পিডিএফ রিডারের ক্ষেত্রে এটি নির্বাচনটি অনুলিপি করে, লাইনব্রেকস এবং ডাবল স্পেসগুলি সরিয়ে দেয় এবং ফলাফলটি ক্লিপবোর্ডে রাখে। যদি কিছু না নির্বাচিত হয় তবে ক্লিপবোর্ডটি ব্যবহারিকভাবে অচ্ছুত।

#IfWinActive ahk_class classFoxitReader
^c:: 
    old := ClipboardAll
    clipboard := ""
    send ^c
    clipwait 0.1
    if clipboard = 
        clipboard := old
    else {
        tmp := RegExReplace(clipboard, "(\S.*?)\R(.*?\S)", "$1 $2")
        clipboard := tmp
        StringReplace clipboard, clipboard, % "  ", % " ", A
        clipwait 0.1
        }
    old := ""
    tmp := ""
return

এই কোডটি প্রয়োগ করার আগে একমাত্র কাজ হ'ল ahk_classআপনার পাঠকের উইন্ডো শ্রেণীর নাম ( )। আমি সমস্ত মামলার জন্য একক পিডিএফ রিডার ব্যবহার করি (এবং আমি ধরে নিই যে বেশিরভাগ লোকেরা এটি করে), ফক্সিট্রেডার এবং ahk_classএটি classFoxitReaderWinGetClassকমান্ডের মাধ্যমে আপনি সহজেই নিজের সফ্টওয়্যারটির ক্লাসটি বের করতে পারেন (যেমন AcrobatSDIWindowঅ্যাক্রোব্যাট রিডারের জন্য)।

আপনি যদি নিজের ব্রাউজারে পিডিএফ-গুলি পড়তে পছন্দ করেন তবে এটি আপনার সমাধান নয়। অথবা আপনি কেবল #IfWinActive ahk_class classFoxitReaderলাইনটি সরাতে পারেন যাতে কোড সর্বদা ফায়ার করে তবে এই ক্ষেত্রে ফলাফল সর্বদা লাইনব্রেকগুলি এবং ডাবল স্পেসগুলি ছিনিয়ে নেওয়া হবে।


এটি আমার জন্য আগে কাজ করত, তবে এখন এটি পুরোপুরি Ctrl + C ভাঙ্গবে বলে মনে হচ্ছে। উইন্ডোজ 10.
mic

@ এমসিএল এটি এখনও আমার শেষে কাজ করে। আপনি কোন মেশিন / ওএস / পিডিএফ রিডার ব্যবহার করেন? আপনি কিছু পরিবর্তন করেছেন? আপনার পাঠক আপডেট করার মত? অন্যদিকে, কে জানে যে উইন 10 দ্বারা আপডেট হয়েছিল ...
ইস্তভান জাচর

1

আমার জন্য কাজ করা আরেকটি বিষয় হ'ল পিডিএফ ফাইলটি এইচটিএমএল হিসাবে সংরক্ষণ করা। এইচটিএমএল এর অনুচ্ছেদগুলি অক্ষত থাকবে, অনুলিপি এবং পেস্টের জন্য প্রস্তুত। অন্যান্য ফাইল ফর্ম্যাটগুলি যেমন txt বা rtf এর মতোও কাজ করে ... এটি লিনাক্স সিস্টেমেও কাজ করা উচিত।


1

ম্যাক্রোগুলি ব্যবহার করে একটি তৃতীয় পদ্ধতির এখানে দেখানো হয়েছে , তবে আমি এটি চেষ্টা করি নি। আমি ভবিষ্যতের রেফারেন্সের জন্য এখানে ম্যাক্রোগুলি আটকালাম, ম্যাক্রো 2 উত্সটির লেখক - "দেবোরাহ সাভদ্রা" - এবং ম্যাক্রো 1 তার পাঠক "বেঞ্জামিন" দ্বারা লিখেছেন:

ম্যাক্রো 1:

Sub pagebreaks()
'
' pagebreaks Macro
'
'
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "^p^p"
        .Replacement.Text = "¬ ¬"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "¬"
        .Replacement.Text = " "
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

ম্যাক্রো 2:

 Sub pagebreaks()
'
' pagebreaks Macro
'
'
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "^p^p"
        .Replacement.Text = "|"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "^p"
        .Replacement.Text = " "
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "|"
        .Replacement.Text = "^p^p"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

1

এখানে একটি উইন্ডোজ সমাধান দেখানো হয়েছে । একজনকে "পিডিএফ কপি-পাস্টার.এক্স্সি" ফাইলটি ডাউনলোড করতে হবে এবং অনুলিপি এবং পেস্ট-অ্যাকশনের আগে চালাতে হবে। আমি এটি চেষ্টা করেছিলাম এবং এটি ঠিক কাজ করে, কেবলমাত্র এটি সমস্ত লাইন ব্রেকগুলিকে সরিয়ে দেয়। সুতরাং আপনি যদি গুণিত অনুচ্ছেদে অনুলিপি করেন তবে আপনার পরে কেবল একটি রয়েছে।

এসইউতে একটি সম্পর্কিত প্রশ্ন রয়েছে যার সাথে সামান্যবিট ব্যাখ্যা রয়েছে, এটি কারও পক্ষে আগ্রহী হতে পারে ...


আপনার তিনটি পদ্ধতির তিনটি উত্তরে বিভক্ত করার বিষয়টি বিবেচনা করুন। তাদের পৃথকভাবে সেভাবে ভোট দেওয়া সহজ হবে। (এবং, সুপারউসারকে স্বাগতম :-))
নিক

ঠিক আছে, আমি এটি করব। (এবং স্বাগত
জানার

উইন্ডোজ 10 আমার জন্য লাইন ব্রেক মুছে ফেলার জন্য Foxit Reader থেকে কপি বলে মনে হচ্ছে না
মাইক

1

আমি জানি এটি একটি পুরানো প্রশ্ন, তবে আমি অনুভব করেছি যে এটির উত্তর দেওয়া কার্যকর হবে কারণ অন্য কোনও সমাধানই এর মতো ব্যবহার করা এত সহজ ছিল না।

আপনার পিডিএফ ফাইলটি খুলতে ওকুলার নামের লিনাক্স অ্যাপ্লিকেশনটি ব্যবহার করুন। তারপরে সরঞ্জাম-> সারণী নির্বাচন সরঞ্জাম T তারপরে আপনার পাঠ্যটি সারণী আকারে যেমন নির্বাচন করুন তেমন নির্বাচন করুন। তারপরে Ctrl + C এবং আপনি যেতে প্রস্তুত।


এটি LibreOffice (সিটিআরএল + শিফট + ভি) এ ফর্ম্যাট করা পাস্ট করে খুব ভাল কাজ করে যাতে এটি কোনও সারণী তৈরি করে না। অন্যান্য উত্তরের (যেমন একটি সাধারণ লিনাক্স + ওকুলার দ্রবণ) এর চেয়ে প্রশ্নের সাথে এটি আরও প্রাসঙ্গিক হওয়ায় এই উত্তরটি এটি শীর্ষের আরও কাছাকাছি করা উচিত।
স্ট্রাগু

আমি কেবল এটি চেষ্টা করেছিলাম এবং যখন আমি বিশেষ এবং নির্বাচিত অরক্ষিত পাঠ্য আটকে দিয়েছি তখনও আমার লাইন শেষ ছিল। হয়তো বিষয়গুলি পরিবর্তন হয়েছে। Okular সংস্করণ 0.24.2 LibreOffice এর সংস্করণ 5.1.6.2 হয়
frederickjh

1

আসল প্রশ্ন: https://askubuntu.com/questions/1167026/detect-clipboard-copy-paste-event-and-modify-clipboard-contents

ক্রেডিট কেনে যায় ।

গ্লুটানিমেটের স্ক্রিপ্টের উপর ভিত্তি করে।

সূত্র: https://github.com/SidMan2001/Scriptts/tree/master/PDF- কপি- ছাড়াও- লাইনব্রেকস- লিনাক্স

পিডিএফ (লিনাক্স) থেকে পাঠ্য অনুলিপি করার সময় লাইন ব্রেকগুলি সরান:

এই ব্যাশ স্ক্রিপ্টটি পিডিএফ থেকে পাঠ্য অনুলিপি করার সময় লাইন ব্রেকগুলি সরিয়ে দেয়। এটি লিনাক্সের প্রাথমিক নির্বাচন এবং ক্লিপবোর্ড উভয়ের জন্য কাজ করে।


#!/bin/bash

# title: copy_without_linebreaks
# author: Glutanimate (github.com/glutanimate)
# modifier: Siddharth (github.com/SidMan2001)
# license: MIT license

# Parses currently selected text and removes 
# newlines

while ./clipnotify;
do
  SelectedText="$(xsel)"
  CopiedText="$(xsel -b)"
  if [[ $SelectedText != *"file:///"* ]]; then
    ModifiedTextPrimary="$(echo "$SelectedText" | tr -s '\n' ' ')"
    echo -n "$ModifiedTextPrimary" | xsel -i
  fi
  if [[ $CopiedText != *"file:///"* ]]; then
    ModifiedTextClipboard="$(echo "$CopiedText" | tr -s '\n' ' '  )"
    echo -n "$ModifiedTextClipboard" | xsel -bi
  fi
done

নির্ভরতা:

  1. xsel
    sudo apt-get install xsel
  2. clipnotify ( https://github.com/cdown/clipnotify )
    আপনি সংগ্রহস্থলে প্রদত্ত প্রাক-সংকলিত ক্লিপনিটি ব্যবহার করতে পারেন বা নিজেকে সংকলন করতে পারেন।

নিজেকে ক্লিপনোটাইফাইটি সংকলন করতে:
sudo apt install git build-essential libx11-dev libxtst-dev
git clone https://github.com/cdown/clipnotify.git
cd clipnotify
sudo make

ব্যবহার করা :

  1. এই সংগ্রহস্থলটিকে জিপ হিসাবে ডাউনলোড করুন বা একটি পাঠ্য সম্পাদক এ স্ক্রিপ্টটি অনুলিপি করুন এবং এটি copy_without_linebreaks.sh হিসাবে সংরক্ষণ করুন।
  2. নিশ্চিত করুন যে স্ক্রিপ্ট এবং ক্লিপনোটাইফাই (ডাউনলোড বা প্রাকম্পম্পাইল) একই ফোল্ডারে রয়েছে।
  3. স্ক্রিপ্টের ফোল্ডারে টার্মিনালটি খুলুন এবং অনুমতি সেট করুন
    chmod +x "copy_without_linebreaks.sh"
  4. স্ক্রিপ্টে ডাবল ক্লিক করুন বা টার্মিনালে প্রবেশ করে চালান:
    .\copy_without_linebreaks.sh
  5. পাঠ্যটি পিডিএফ-এ অনুলিপি করুন এবং যে কোনও জায়গায় পেস্ট করুন। লাইনের বিরতিগুলি সরানো হবে।

0

আপনার যদি অ্যাক্রোব্যাট থাকে তবে আপনার কার্সারে ক্লিক করুন যাতে পাঠ্যটিতে কার্সার জ্বলজ্বল হয়। (আপনি এটি না করলে এটি কাজ করবে না)) উন্নত, অ্যাক্সেসিবিলিটি, ট্যাগ যুক্ত করুন। আপনার কাছে একটি বড় ডকুমেন্ট থাকলে কয়েক মিনিট সময় লাগবে তবে ম্যানুয়ালি ব্রেকগুলি সরিয়ে দেওয়ার চেয়ে অনেক দ্রুত। ভাল খবর!


-1

এই পৃষ্ঠা থেকে সহজ সমাধান; http://www.iom3.org/news/how-instantly-remove-unwanted-line-breaks-when-copying-pdf

  1. পিডিএফ থেকে আপনার পছন্দের পাঠ্যটি অনুলিপি করুন
  2. একটি নতুন ওয়ার্ড ডকুমেন্টে পেস্ট করুন
  3. "সম্পাদনা" ক্লিক করুন "প্রতিস্থাপন" ক্লিক করুন
  4. আপনি "কী সন্ধান করুন" ক্ষেত্রে রয়েছেন তা নিশ্চিত করুন
  5. "আরও" তারপর "বিশেষ" ক্লিক করুন
  6. "অনুচ্ছেদে চিহ্ন" নির্বাচন করুন (তালিকার শীর্ষে)
  7. "প্রতিস্থাপন করুন" ক্ষেত্রে ক্লিক করুন
  8. একবার স্পেস বার টিপুন
  9. "সমস্ত প্রতিস্থাপন" ক্লিক করুন
  10. "ঠিক আছে" ক্লিক করুন তারপরে "সন্ধান করুন এবং প্রতিস্থাপন করুন" বক্সটি বন্ধ করুন।

কিছুটা দুর্বল কিন্তু একবার আঙুলের নীচে শর্টকাটগুলি পেলে এটি আরও দ্রুত


1
অনুলিপি এবং পেস্ট নির্ভরযোগ্য নয়, এটিই প্রশ্নের সম্পূর্ণ বিষয়। যদি কেউ অনুসন্ধান এবং প্রতিস্থাপনের মাধ্যমে ক্লিনআপ করতে চান, thed প্রথমে পাঠ্যে রূপান্তর করবে pdftotextএবং তারপরে তাদের পছন্দ মতো কোনও পাঠ্য সম্পাদক (মানক রেজেক্স সহ) ব্যবহার করবে।
নিমো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.