নোড.জেজে ক্লিপবোর্ডে অনুলিপি করবেন?


93

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

উত্তর:


19

একটি ক্লিপবোর্ড কোনও অপারেটিং সিস্টেমের সহজাত নয়। এটি যে উইন্ডো সিস্টেমটি অপারেটিং সিস্টেমটি চলতে দেখা দেয় তার একটি নির্মাণ। সুতরাং আপনি যদি এটি উদাহরণস্বরূপ 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);
});

কপির () এর সমপরিমাণ ক্রোমিয়াম থাকা দুর্দান্ত।

96

ওএস এক্স এর জন্য:

function pbcopy(data) {
    var proc = require('child_process').spawn('pbcopy'); 
    proc.stdin.write(data); proc.stdin.end();
}

write()একটি বাফার বা স্ট্রিং নিতে পারে। স্ট্রিংয়ের জন্য ডিফল্ট এনকোডিং হবে utf-8।


এটি আরপিএলে দ্রুত ডেটা ট্রান্সফরমেশনগুলির জন্য দরকারী।
উইলিয়াম

80

চেক আউট clipboardy। এটি আপনাকে ক্রস-প্ল্যাটফর্মের অনুলিপি / পেস্ট করতে দেয়। এটি অন্য উত্তরে উল্লিখিতcopy-paste মডিউলটির চেয়ে বেশি সক্রিয়ভাবে রক্ষণাবেক্ষণ করা হয় এবং এটি মডিউলটির অনেকগুলি সমস্যার সমাধান করে।

const clipboardy = require('clipboardy');

// Copy
clipboardy.writeSync('🦄');

// Paste
clipboardy.readSync();
//🦄

এটি "অনুলিপি-পেস্ট" মডিউলটির চেয়ে ভাল কারণ এটি ডাবল বাইট অক্ষরকেও সমর্থন করে। তবে এটি উইন্ডোজ 32 বিট ওএস নিয়ে সমস্যা আছে।
পোনমুডি ভিএন

4
@ পনমুডিভিএন উইন্ডোজ 32-বিট সমর্থন স্থির করা হয়েছে: github.com/sindresorhus/clipboardy/commit/…
সিন্দ্রে Sorhu

আমি ইনস্টল npm করেনি çlipboardycypress.I একটি বোতামে ক্লিপবোর্ড বিষয়বস্তু পাওয়ার উচিত যে বাটনে ক্লিক, আমার ওয়েব অ্যাপ্লিকেশন আছে কিন্তু এটা অনির্দিষ্ট দেয়, কোন ইনপুট অনেক প্রশংসা করা হয় stackoverflow.com/questions/61650737/...
soccerway

31

এখানে একটি মডিউল সরবরাহ copypasteকার্যকারিতা দেয়: 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কেবলমাত্র একটি কমান্ড লাইন ইউটিলিটি - এটি সার্ভার কাজের জন্য নয়


4
এটি সেরা উত্তর। এটি ক্রস প্ল্যাটফর্ম এবং এটি ঠিক যেমনভাবে কাজ করে।
গিলি 3

4
এটা এত নীতি অনুরোধে জন্য, আপনার নিজের কোড আছে জুড়তে চাইতে পারেন
towc

18

উইন্ডোজের সবচেয়ে সংক্ষিপ্ততম উপায়:

const util = require("util");
require('child_process').spawn('clip').stdin.end(util.inspect("content_for_the_clipboard"));

4
কাজ! আপনাকে ধন্যবাদ ... তবে utilপ্রথমে প্রয়োজন ।
LIXer

4
ধন্যবাদ! আমার জন্য "ব্যবহার" নির্ভরতার জন্য কোনও প্রয়োজন নেই: প্রয়োজন ('চাইল্ড_প্রসেস') sp স্প্যান ('ক্লিপ') st
darmis

আমি ইলেক্টন প্রধান এবং কোনও ভাগ্য ছাড়াই রেন্ডার প্রক্রিয়া উভয়ই পরীক্ষিত ReferenceError: util is not definedসহ প্রথম পেয়েছি const util = require("util")। এটি নোড থেকে বলা হচ্ছে 12.14.1 সিএলআই এটি কাজ করে। আমি মনে করি এটি নিরাপদ বলে আপনি ব্যবহারের ক্ষেত্রে ভিত্তিতে নিরাপদ দিকে থাকতে ব্যবহারের সংজ্ঞা দিতে হবে safe
বেনারজি

এটি প্রায়শই কাজ করে: এটি স্ট্রিংটিকে চারপাশে একক উদ্ধৃতি দিয়ে অনুলিপি করে। কেউ কীভাবে এই আচরণটি রোধ করতে জানেন?
m4cbeth

3

আমি এটি পরিচালনা করে এমন একটি আলাদা অ্যাপ্লিকেশন তৈরি করে তা পরিচালনা করেছিলাম। এটি অবশ্যই সেরা উপায় নয়, তবে এটি কার্যকর হয়।

আমি উইন্ডোজ এ এসে একটি ভিবি.এনইটি অ্যাপ্লিকেশন তৈরি করেছি:

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
    }
);

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

@ আরএফ্যাক্টর: ম্যাক / লিনাক্স নিয়ে আমার কোনও অভিজ্ঞতা নেই যা আমি ভীত, এবং আমি একটি বিল্ট-ইন ক্লিপবোর্ড কমান্ড সম্পর্কে অবগত নই।
pimvdb

আমি 'ইকো "টেস্ট ফু বার" কমান্ডটি ব্যবহার করি | ক্লিপ ', এটি কাজ করে। তবে
ফলাফলটির

3

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


মজাদার! আপনি কি মনে করেন এটি করার একটি উইন্ডোজ উপায় আছে? এবং আমার প্রোগ্রামে এক্সক্লিপ বান্ডিলিং সম্পর্কে কী কারণ আমি ব্যবহারকারীকে এক্সক্লিপ ইনস্টল করতে বলতে চাই না।
টাওয়ার

4
আমি দেখেছি সেখানে উইন্ডোজে কিছু: echo fooo | clip। এখন, ব্যবহারকারীকে কিছু ইনস্টল করতে না বলে লিনাক্সে এটি কীভাবে থাকবে?
টাওয়ার

echo fooo | clipকাজ করতে পারে, তবে ফলাফলটিতে প্রাথমিক স্ট্রিংয়ের শেষের দিকে '\ n' থাকবে, এটি আমার প্রত্যাশার বাইরে।
লাইটার

-5

এই জিরোক্লিপবোর্ডটি পরীক্ষা করুন

এনপিএম জিরোক্লিপবোর্ড ইনস্টল করুন


এটি কোনও ব্রাউজারের জন্য বলে মনে হচ্ছে, কোনও নোডজেএস ডেস্কটপ অ্যাপ্লিকেশন নয়।
স্কট রিপ্পি

4
এটি ফ্ল্যাশও ব্যবহার করে যা খারাপ ধারণা বলে মনে হয়।
কলমেমনর্ম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.