নোড.জেজে ক্লিপবোর্ডে অনুলিপি দেওয়ার কোনও উপায় আছে কি? কোন মডিউল বা ধারণা এত কি? আমি ডেস্কটপ অ্যাপ্লিকেশনটিতে নোড.জেএস ব্যবহার করছি। আশা করি এটি পরিষ্কার হয়ে যায় কেন আমি এটি অর্জন করতে সক্ষম হতে চাই।
উত্তর:
একটি ক্লিপবোর্ড কোনও অপারেটিং সিস্টেমের সহজাত নয়। এটি যে উইন্ডো সিস্টেমটি অপারেটিং সিস্টেমটি চলতে দেখা দেয় তার একটি নির্মাণ। সুতরাং আপনি যদি এটি উদাহরণস্বরূপ X এ কাজ করতে চান তবে আপনার Xlib এবং / অথবা XCB এর সাথে বাইন্ডিং লাগবে। নোডের জন্য এক্সলিব বাইন্ডিংগুলি আসলে বিদ্যমান: https://github.com/mixu/nwm । যদিও এটি আপনাকে এক্স ক্লিপবোর্ডে অ্যাক্সেস দেয় কিনা তা আমি নিশ্চিত নই, তবে আপনি নিজের লেখাটি শেষ করতে পারেন। আপনার উইন্ডোগুলির জন্য পৃথক বাইন্ডিং লাগবে।
সম্পাদনা: আপনি যদি কিছু হ্যাকি করতে চান তবে আপনি এক্সক্লিপ ব্যবহার করতে পারেন:
var exec = require('child_process').exec;
var getClipboard = function(func) {
exec('/usr/bin/xclip -o -selection clipboard', function(err, stdout, stderr) {
if (err || stderr) return func(err || new Error(stderr));
func(null, stdout);
});
};
getClipboard(function(err, text) {
if (err) throw err;
console.log(text);
});
ওএস এক্স এর জন্য:
function pbcopy(data) {
var proc = require('child_process').spawn('pbcopy');
proc.stdin.write(data); proc.stdin.end();
}
write()
একটি বাফার বা স্ট্রিং নিতে পারে। স্ট্রিংয়ের জন্য ডিফল্ট এনকোডিং হবে utf-8।
চেক আউট clipboardy
। এটি আপনাকে ক্রস-প্ল্যাটফর্মের অনুলিপি / পেস্ট করতে দেয়। এটি অন্য উত্তরে উল্লিখিতcopy-paste
মডিউলটির চেয়ে বেশি সক্রিয়ভাবে রক্ষণাবেক্ষণ করা হয় এবং এটি মডিউলটির অনেকগুলি সমস্যার সমাধান করে।
const clipboardy = require('clipboardy');
// Copy
clipboardy.writeSync('🦄');
// Paste
clipboardy.readSync();
//🦄
çlipboardy
cypress.I একটি বোতামে ক্লিপবোর্ড বিষয়বস্তু পাওয়ার উচিত যে বাটনে ক্লিক, আমার ওয়েব অ্যাপ্লিকেশন আছে কিন্তু এটা অনির্দিষ্ট দেয়, কোন ইনপুট অনেক প্রশংসা করা হয় stackoverflow.com/questions/61650737/...
এখানে একটি মডিউল সরবরাহ copy
ও paste
কার্যকারিতা দেয়: https://github.com/xavi-/node-copy-paste
যখন require("copy-paste").global()
মৃত্যুদন্ড কার্যকর করা হয়, দুটি বৈশ্বিক ফাংশন যুক্ত করা হয়:
> copy("hello") // Asynchronously adds "hello" to clipbroad
> Copy complete
> paste() // Synchronously returns clipboard contents
'hello'
উল্লিখিত অন্যান্য অনেক উত্তরগুলির মতো, নোডে অনুলিপি এবং আটকানোর জন্য আপনাকে একটি বাহ্যিক প্রোগ্রামে কল করতে হবে। এর ক্ষেত্রে node-copy-paste
এটি pbcopy/pbpaste
(ওএসএক্সের জন্য), xclip
(লিনাক্সের জন্য), এবং clip
(উইন্ডোজের জন্য ) ডাকে ।
আমি যখন কোনও পার্শ্ব প্রকল্পের জন্য আরপিএলে প্রচুর কাজ করছিলাম তখন এই মডিউলটি খুব সহায়ক হয়েছিল। বলা বাহুল্য, copy-paste
কেবলমাত্র একটি কমান্ড লাইন ইউটিলিটি - এটি সার্ভার কাজের জন্য নয় ।
উইন্ডোজের সবচেয়ে সংক্ষিপ্ততম উপায়:
const util = require("util");
require('child_process').spawn('clip').stdin.end(util.inspect("content_for_the_clipboard"));
util
প্রথমে প্রয়োজন ।
ReferenceError: util is not defined
সহ প্রথম পেয়েছি const util = require("util")
। এটি নোড থেকে বলা হচ্ছে 12.14.1 সিএলআই এটি কাজ করে। আমি মনে করি এটি নিরাপদ বলে আপনি ব্যবহারের ক্ষেত্রে ভিত্তিতে নিরাপদ দিকে থাকতে ব্যবহারের সংজ্ঞা দিতে হবে safe
আমি এটি পরিচালনা করে এমন একটি আলাদা অ্যাপ্লিকেশন তৈরি করে তা পরিচালনা করেছিলাম। এটি অবশ্যই সেরা উপায় নয়, তবে এটি কার্যকর হয়।
আমি উইন্ডোজ এ এসে একটি ভিবি.এনইটি অ্যাপ্লিকেশন তৈরি করেছি:
Module Module1
Sub Main()
Dim text = My.Application.CommandLineArgs(0)
My.Computer.Clipboard.SetText(text)
Console.Write(text) ' will appear on stdout
End Sub
End Module
তারপরে নোড.জেজে, আমি child_process.exec
ভিবি.এনইটি অ্যাপ্লিকেশনটি চালিত করতাম , অনুলিপি করার জন্য ডেটা কমান্ড লাইন আর্গুমেন্ট হিসাবে পাস করতাম :
require('child_process').exec(
"CopyToClipboard.exe \"test foo bar\"",
function(err, stdout, stderr) {
console.log(stdout); // to confirm the application has been run
}
);
pbcopy
এই ব্যবহারের জন্য ম্যাকের একটি নেটিভ কমান্ড লাইন রয়েছে:
require('child_process').exec(
'echo "test foo bar" | pbcopy',
function(err, stdout, stderr) {
console.log(stdout); // to confirm the application has been run
}
);
লিনাক্সের জন্য একই কোড তবে এক্সক্লিপ ( ) pbcopy
দিয়ে প্রতিস্থাপন করুনapt get install xclip
echo fooo | clip
। এখন, ব্যবহারকারীকে কিছু ইনস্টল করতে না বলে লিনাক্সে এটি কীভাবে থাকবে?
echo fooo | clip
কাজ করতে পারে, তবে ফলাফলটিতে প্রাথমিক স্ট্রিংয়ের শেষের দিকে '\ n' থাকবে, এটি আমার প্রত্যাশার বাইরে।
এই জিরোক্লিপবোর্ডটি পরীক্ষা করুন
এনপিএম জিরোক্লিপবোর্ড ইনস্টল করুন