এইচটিএমএলকে ছবিতে রূপান্তর করুন


22

পটভূমি

ব্যাচটি বিভিন্ন সিনট্যাক্স-হাইলাইটেড উত্স ফাইলগুলি (সি, এসকিউএল, জাভা, পিএইচপি, ব্যাচ, ব্যাশ) একটি ই-বুক এবং মুদ্রিত বইয়ের উপযোগী উচ্চ-রেজোলিউশন চিত্রগুলিতে (600 ডিপিআই) রূপান্তর করে।

সমাধান ব্যর্থ

এখনও অবধি প্রচুর প্রচেষ্টা:

  • ওপেনঅফিস বা লিব্রেঅফিস - প্রতিবার উত্স ফাইল পরিবর্তিত হলে নথিতে উত্স কোডটি আবার আমদানি করতে হবে। (এটি সমাধানটি কয়েক হাজার বা হাজারো উত্স ফাইলের জন্য সহজেই স্বয়ংক্রিয়ভাবে নেওয়া যায় না))
  • enscript। রঙ সহজেই পরিবর্তন করা যায় না, অসম্পূর্ণভাবে আউটপুট সরবরাহ করে, ব্যাপক নয়।
  • লিক্স / ল্যাটেক্স। অসম্পূর্ণভাবে আউটপুট সরবরাহ করে।
  • এইচটিএমএল থেকে জিভিএম - পোস্টস্ক্রিপ্ট থেকে এইচটিএমএলডোক - পিএনজি থেকে ঘোস্টস্ক্রিপ্ট। এইচটিএমএলডোক fontট্যাগ উপেক্ষা করে ।
  • gvim to HTML - html2ps - ঘোস্টস্ক্রিপ্ট থেকে পিএনজি। আরজিবি রঙগুলি স্বীকৃত নয় html2ps
  • ফায়ারফক্স থেকে পোস্টস্ক্রিপ্ট - পিএনজি থেকে ঘোস্টস্ক্রিপ্ট। দু: খজনকভাবে সার্কিটাস।
  • এইচটিএমএল-তে gvim - যে কোনও কিছুতে ওমনিফর্ম্যাট। ব্যাচ প্রসেসিংয়ের জন্য নিখরচায় সংস্করণ অনুপযুক্ত; বিজ্ঞাপন পপ আপ প্রচুর।
  • pygments। চিত্রের রেজোলিউশন সহজেই পরিবর্তন করা যায় না; gvim এর রঙীন স্কিমগুলির ব্যাপ্তি নেই।

নিকটতম সমাধান

প্রায় কার্যকরী সমাধানটি হ'ল:

  • gvim to HTML - wkhtmltopdf to PDF। ইমেজম্যাগিকের সাথে পোস্ট-প্রসেসিংয়ের প্রয়োজন হবে ( ডাব্লুএইচটিএমটিএলমেজ চিত্রের রেজোলিউশন সেট করতে পারে না, কেবল পৃষ্ঠার প্রস্থ)।

আবশ্যকতা

  • উইন্ডোজ এবং লিনাক্স, তবে হয় গ্রহণযোগ্য।
  • ফ্রি বা ওএসএস
  • কমান্ড লাইনটি (ব্যাচ প্রক্রিয়াজাতকরণের জন্য উপযুক্ত)
  • সহজেই রঙের স্কিম পরিবর্তন করুন
  • সমর্থন: পিএইচপি, ব্যাচ, ব্যাশ, জাভা, জাভাস্ক্রিপ্ট, আর, সি এবং এসকিউএল

প্রশ্ন

সিনট্যাক্স-হাইলাইটেড সোর্স কোডটিকে একটি উচ্চ-রেজোলিউশন (600dpi) চিত্রে রূপান্তর করার অন্য কোনও উপায়?

ধন্যবাদ!


@ ডেভ জার্ভিস: wkhtmltoimageপৃষ্ঠার প্রস্থকে কেন সেট করা যথেষ্ট নয়? উচ্চতা নির্দিষ্ট করা যায় না কারণ এটি এইচটিএমএল স্টাফের সামগ্রী দ্বারা নির্ধারিত হয়। আপনার প্রকৃতপক্ষে ইমো প্রস্থটি কেবলমাত্র প্রয়োজনীয়, আপনি প্রতি ইঞ্চি কত পিক্সেল চান তার উপর নির্ভর করে প্রয়োজনীয় প্রস্থটি গণনা করতে পারেন।
আকির

@ ডেভ জার্ভিস: ঠিক আছে, আপনি আমাকে কতটা মঞ্চ ইঞ্চি coverেকে রাখতে চান তা বলুন এবং আপনাকে আপনাকে কত পিক্সেল লাগবে তা বলি। পরে রূপান্তরকরণের সাথে 'ট্রিমিং' ফলাফলটি একটি দুর্দান্ত ধারণা তবে 'ডিপিআই' ধারণাটি কিছুটা নষ্ট করে দেয়। আপনি সর্বদা "আমার এই x ইঞ্চি স্থান পূরণ করা উচিত এবং আমি এটি প্রতি ইঞ্চি z বিন্দু দিয়ে পূর্ণ করতে চাই" দিয়ে শুরু করব .. এবং সেই সূত্রের ভিত্তিতে আপনি পিক্সেলের অনুরোধ করেছেন।
আকির

@ কীরা: প্রস্থটি উত্স কোডটি ব্যবহার করে কলামগুলির সংখ্যার উপর নির্ভরশীল। কখনও কখনও প্রস্থ 75 অক্ষর হবে। কখনও কখনও এটি 40 টি অক্ষর হবে। সুতরাং 75 টি অক্ষরের প্রায় 5.5 ইঞ্চি অবধি নেওয়া উচিত এবং 40 টি অক্ষরের অর্ধেকের চেয়ে কিছুটা বেশি হওয়া উচিত। 5.5 মানটি বইয়ের মার্জিনের উপর নির্ভর করে, যা পরিবর্তনের সাপেক্ষে (একবার বা দু'বার)। এটি এমন একটি গণনা যা স্বয়ংক্রিয়ভাবে সম্পন্ন করা দরকার, উপায় হিসাবে, অন্যথায় সমাধানটি স্বয়ংক্রিয়ভাবে করা যায় না, যা পুরো উদ্দেশ্যকে পরাস্ত করে।
ডেভ জার্ভিস

@ ডেভ জার্ভিস: হ্যাঁ, আমি আপনার সমস্যাটি বুঝতে পারি। আপনি রূপান্তর সঙ্গে ভাগ্যবান যে আপনার ক্ষেত্রে ওয়েবকিটের আউটপুট সত্যিই স্কেলযোগ্য এবং সুতরাং আপনি পিডিএফ পরে 'আকার' দিতে পারে। সংহত সমাধানের জন্য আমার সন্দেহ হয় যে একরকম জুম-লেভেল এবং ব্রাউজারের প্রস্থের প্রয়োজন হবে
আকীরা

BTW, ডকুমেন্ট ফরম্যাট আপনি ইসলাম অথবা মুদ্রিত বই তৈরি করতে ব্যবহার করা হয় কি (ক্ষীর, XSL-FO .. ইত্যাদি?)
আকিরা

উত্তর:


9

সফ্টওয়্যার প্রয়োজনীয়তা

নিম্নলিখিত সফ্টওয়্যার প্যাকেজগুলি উভয় উইন্ডোজ এবং লিনাক্স সিস্টেমের জন্য উপলব্ধ এবং একটি সম্পূর্ণ, কার্যক্ষম সমাধানের জন্য প্রয়োজনীয়:

  • gvim - এইচটিএমএলে হাইলাইটেড সোর্স কোড সিনট্যাক্স রফতানি করতে ব্যবহৃত হয়।
  • মরিয়া - সিনট্যাক্স হাইলাইট করার জন্য রঙিন স্কিম।
  • wkhtmltoimage - এইচটিএমএল ডকুমেন্টগুলিকে পিএনজি ফাইলে রূপান্তর করতে ব্যবহৃত হয়।
  • গাক এবং সেড - পাঠ্য প্রক্রিয়াজাতকরণ সরঞ্জাম।
  • ইমেজম্যাগিক - পিএনজি ছাঁটাই করতে এবং একটি সীমানা যুক্ত করতে ব্যবহৃত হয়।

সাধারণ পদক্ষেপ

সমাধান কীভাবে কাজ করে তা এখানে:

  1. এমন এক উত্সে উত্স কোডটি লোড করুন যা রঙের স্প্ল্যাশগুলি যুক্ত করতে পারে।
  2. HTML কোডটি (এমবেডড FONTট্যাগ সহ) উত্স কোডটি রফতানি করুন (
  3. এইচটিএমএল ডকুমেন্ট থেকে পটভূমি বৈশিষ্ট্যটি স্ট্রিপ করুন (স্বচ্ছতার অনুমতি দিতে)।
  4. এইচটিএমএল ডকুমেন্টকে পিএনজি ফাইলে রূপান্তর করুন।
  5. পিএনজি বর্ডারটি ট্রিম করুন।
  6. চিত্রটির চারপাশে একটি ছোট, 25 পিক্সেল সীমানা যুক্ত করুন।
  7. অস্থায়ী ফাইলগুলি মুছুন।

স্ক্রিপ্টটি এমন চিত্রগুলি উত্পন্ন করে যা উত্স ফাইলগুলির জন্য একই দৈর্ঘ্যের 80 টি অক্ষরের কম লাইনযুক্ত ফাইলগুলির জন্য একই প্রস্থ। ৮০ টি অক্ষরের বেশি লাইনযুক্ত উত্স ফাইলগুলি পুরো লাইনটি ধরে রাখতে প্রয়োজনীয় আকারে চিত্রগুলিতে লম্বা হয়।

স্থাপন

নিম্নলিখিত অবস্থানগুলিতে উপাদানগুলি ইনস্টল করুন:

  • gvim -C:\Program Files\Vim
  • মরিয়া -C:\Program Files\Vim\vim73\colors
  • wkhtmltoimage -C:\Program Files\wkhtml
  • চিত্রম্যাগিক -C:\Program Files\ImageMagick
  • গাওক এবং শেড -C:\Program Files\GnuWin32

দ্রষ্টব্য: ইমেজম্যাগিকের একটি প্রোগ্রাম রয়েছে convert.exeযা উইন্ডোজ convertকমান্ডকে ছাড়তে পারে না । এ কারণে, convert.exeব্যাচ ফাইলে অবশ্যই হার্ড-কোডিং করার জন্য পুরো পথটি (ইমেজম্যাগিকের বিপরীতে PATH)।

পরিবেশের পরিবর্তনশীল

PATH পরিবেশের পরিবর্তনশীল এতে সেট করুন :

"C:\Program Files\Vim\vim73";"C:\Program Files\wkhtml";"C:\Program Files\GnuWin32\bin"

ব্যাচ ফাইল

এটি ব্যবহার করে চালান:

src2png.bat src2png.bat

src2png.batনিম্নলিখিত সামগ্রীগুলি অনুলিপি করে একটি ব্যাচ ফাইল তৈরি করুন :

@ECHO OFF

SET NUMBERS=-c "set number"
IF "%2" == "" SET NUMBERS=

ECHO Converting %1 to %1.html...
gvim -e %1 -c "set nobackup" %NUMBERS% -c ":colorscheme moria" ^
  -c :TOhtml -c wq -c :q

REM Remove all background-color occurrences (without being self-referential)
sed -i "s/background-color: #......; \(.*\)}$/\1 }/g" %1.html

ECHO Converting %1.html to %1.png...
wkhtmltoimage --format png --transparent --minimum-font-size 80 ^
  --quality 100 --width 3600 ^
  %1.html %1.png

move %1.png %1.orig.png

REM If the text file has lines that exceed 80 characters, don't crop the
REM resulting image. (The book automatically shrinks large images to fit.)
REM The 3950 is the 80 point font at 80 characters with padding for line
REM numbers.
SET LENGTH=0
FOR /F %%l IN ('gawk ^
  "BEGIN {x=0} {if( length($0)>x ) x=length()} END {print x;}" %1') ^
DO (
  SET LENGTH=%%l
)
SET EXTENT=-extent 3950x
IF %LENGTH% GTR 80 SET EXTENT=

REM Trim the image height, then extend the width for 80 columns, if needed.
REM The result is that all images will be resized the same amount, thus
REM making the font size the same maximum for all source listings. Source
REM files beyond the 80 character limit will be scaled as necessary.
ECHO Trimming %1.png...
"C:\programs\ImageMagick\convert.exe" -format png %1.orig.png ^
  -density 150x150 ^
  -background none -antialias -trim +repage ^
  %EXTENT% ^
  -bordercolor none -border 25 ^
  %1.png

ECHO Removing old files...
IF EXIST %1.orig.png DEL /q %1.orig.png
IF EXIST %1.html DEL /q %1.html
IF EXIST sed*. DEL /q sed*.

উন্নতি এবং অপ্টিমাইজেশন স্বাগত।

দ্রষ্টব্য: wkhtMLtoimage এর সর্বশেষ সংস্করণ সঠিকভাবে পটভূমির রঙকে ওভাররাইড করে। সুতরাং তাত্ত্বিকভাবে, পটভূমির রঙগুলির জন্য সিএসএস অপসারণের লাইনটি আর প্রয়োজন হয় না।


3

এর ম্যানপেজটি পড়া wkhtmltoimage:

 -d,    --dpi   <dpi>   Change the dpi explicitly

যদি এটি সাহায্য না করে: Qt এর সাথে একটি সহজ সমাধান একসাথে হ্যাক করা এবং (অন্তর্ভুক্ত) ওয়েবকিটটি বেশ সোজা।


দুর্ভাগ্যক্রমে এটি একটি ডকুমেন্টেশন ত্রুটি। dpiবিকল্প উইন্ডোজ সংস্করণের সাথে উপলব্ধ নেই।
ডেভ জার্ভিস

@ ডেভ জার্ভিস: ঠিক আছে তারপরে ... যান এবং QtWebkit ব্যবহার করুন। ।)
আকিরা

অথবা আপনি লিনাক্সকে ভিএম (ভার্চুয়ালবক্স বা এ জাতীয়) হিসাবে ইনস্টল করতে পারেন এবং সেখানে রূপান্তর করতে পারেন ...
icyrock.com

0

আপনি এইচটিএমএল-> পিডিএফ রূপান্তর ফর্ম কমান্ড লাইনের জন্য ওপেন অফিস ব্যবহার করতে পারেন:

http://www.oooninja.com/2008/02/batch-command-line-file-conversion-with.html


@ ডেভ, ওও (ওপেনঅফিস) এর সাথে সমাধানটি হবে: ১. এইচটিএমএল ফাইল তৈরি করতে কিছু সরঞ্জাম ব্যবহার করুন যাতে সিনট্যাক্স হাইলাইট থাকে। ২. ওকে দিয়ে পিডিএমে এইচটিএমএল রূপান্তর করুন। যেহেতু এই উভয় ক্রিয়াকলাপ কমান্ড লাইন থেকে করা যায়, তাই এন নম্বর ফাইলগুলির জন্য প্রক্রিয়াটি স্বয়ংক্রিয় করা সহজ হওয়া উচিত।
শমিত ভার্মা

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