এসভিজি পরিষ্কার করতে পিডিএফ রূপান্তর করবেন? [বন্ধ]


114

আমি পিডিএফকে এসভিজিতে রূপান্তর করার চেষ্টা করছি। যাইহোক, আমি বর্তমানে যেটি ব্যবহার করছি তা প্রতিটি টেক্সটের প্রতিটি অক্ষরের জন্য একটি মানচিত্র তৈরি করে, যার অর্থ আমি যদি তার উত্স ফাইলে পাঠ্যটি পরিবর্তন করি তবে এটি কুৎসিত দেখাচ্ছে।

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


11
'আমরা যেমন জানি, পিডিএফ এবং এসভিজি মোটামুটি একই রকম ...' ?!?!?!?
সেক্ষেত্রে আপনি

22
এগুলি একই অর্থে যে তারা উভয় ভেক্টর-ভিত্তিক ফর্ম্যাট। আমি বিশ্বাস করি যে তুলনা শেষ হয়।
ফ্র্যাঙ্ক রেম

1
আমি মনে করি তারা উভয়ই পাঠ্যের স্থির অবস্থানের অনেকগুলি ব্যবহার করে।
ব্রায়ান ফিল্ড

ইন্টারেক্টিভ (ফর্ম-ফিল্ড) পিডিএফ দিয়ে কেউ কি এমন করছেন যাতে তারা ব্রাউজারে ইন্টারেক্টিভ থেকে যায়, রেন্ডার এসভিজি-র উপরে ইনপুট সুপারিশ করে, সম্ভবত?
টিম

উত্তর:


84

পিডিএফকে এসভিজিতে রূপান্তর করতে উইকিপিডিয়ায় অনেক লোকই ইনসকেপ ব্যবহার করেন।

http://inkscape.org/

কীভাবে এটি করা যায় সে সম্পর্কে তাদের কাছে একটি সহজ গাইড রয়েছে!

http://en.wikipedia.org/wiki/Wikipedia:Graphic_Lab/Resources/PDF_conversion_to_SVG#Conversion_with_Inkscape


4
ইনস্কেপ খুব ভাল কাজ করে না, কারণ এটি পাঠ্যটিকেও পাথগুলিতে পরিবর্তন করে। আমি এটিও দেখতে পাই যে তারা প্রায়শই ফন্টের ডেটা হারাতে থাকে তবে এটি কোনও ভাল, ইনস্টল করা ফন্টের আনুমানিক বলে মনে হয় না। এসভিজি না পারলে পিডিএফ কীভাবে এটি প্রদর্শন করে?
ড্যানরেডাক্স

এটি একটি সুস্পষ্ট প্রশ্ন, আমি উভয় ফর্ম্যাট নিয়েই পারিবারিক, তবে আমি বিষয়টি নিয়ে প্রচুর গবেষণা করিনি। আমি এটি দেখতে পারেন। এটি মনে করে যে এটি দুটি ফর্ম্যাট যেভাবে তৈরি হচ্ছে তাতে গড়িয়ে যেতে পারে। উদাহরণস্বরূপ এসভিজি এক্সএমএল দিয়ে তৈরি হয়েছে যখন পিডিএফ তার নিজস্ব এক্সএমএল টাইপ ফর্ম্যাট ব্যবহার করে।
সান্ট শেল্ডন প্যাটনেট

3
ঠিক আছে, কারণ আমি এটি চাই কারণ আমি পিএইচপি ব্যবহার করে পাঠ্য সম্পাদনা করতে সক্ষম হতে চাই। আমি এটি পিডিএফ দিয়ে সরাসরি করতে পারতাম, তবে পিডিএফ সহজেই এইচটিএমএলে প্রবেশ করা যায় না, তবে এসভিজি পারে। আমি কেবল পিডিএফ দিয়ে আটকে থাকতে পারি এবং এর মানগুলি সম্পাদনার পরে এটিকে পিএইচপিতে
জেপিজিতে

8
@ ড্যানরেডাক্স: আফাইক, আপনি ইনসকেপে রূপান্তর করতে 'পাথগুলিতে ফন্ট পাঠ্য' স্যুইচ করতে পারেন । ইনস্কেপ কমান্ডলাইনে আপনি যুক্ত করে এই রূপান্তরটি সক্ষম করবেন --export-text-to-path
কার্ট ফেফেল

1
এটি সুস্পষ্ট হতে পারে তবে ইলাস্ট্রেটর পিডিএফকে এসভিজিতে রূপান্তর করতে পারে। এখানে এসেছিলেন, ইনস্কেপ ডাউনলোড করেছেন তারপরে বুঝতে পারলাম আমার কাছে ইলাস্ট্রেটার রয়েছে। en.wikedia.org/wiki/Wikiedia: গ্রাফিক্স_ল্যাব
E. সুন্দিন

83

আপনি জিইউআই না খালি কেবল কমান্ডলাইনে ইনস্কেপ ব্যবহার করতে পারেন। এটা চেষ্টা কর:

inkscape \
  --without-gui \
  --file=input.pdf \
  --export-plain-svg=output.svg 

সমস্ত কমান্ডলাইন বিকল্পগুলির একটি সম্পূর্ণ তালিকার জন্য, চালান inkscape --help


এটি আমার জন্য পাঠ্যের স্থান সরিয়ে দেয়।
ম্যাক্সনো

1
@ ম্যাক্সনো: এটি বেশ সম্ভব - তবে তারপরে অভ্যন্তরীণভাবে এই নির্দিষ্ট পিডিএফ কীভাবে নির্মিত হবে তার একটি "সম্পত্তি"। যখন পিডিএফ থেকে "পাঠ্য" সনাক্ত এবং নিষ্কাশন করার সমস্যাগুলির কিছু ব্যাখ্যার জন্য, আমার হাতের কোডেড পিডিএফ ফাইলগুলি (এম্বেড করা মন্তব্য সহ) গিটহাবটিতে দেখুন(এগুলি আপনার পছন্দসই একটি টেক্সট সম্পাদকের পাশাপাশি একটি পিডিএফ ভিউয়ার এবং ফাইলগুলি থেকে টেক্সটটি অনুলিপি করুন))
কুর্ট ফেফেল

হ্যাঁ, আমি মনে করি যেভাবে টেক্সট সাদা বাক্সে বাক্স হিসাবে রেন্ডার করছে with
ম্যাক্সনো

23

আমি বর্তমানে পিডিএফবক্স ব্যবহার করছি যা গ্রাফিক আউটপুট জন্য ভাল সমর্থন আছে। ভেক্টর স্ট্রোকগুলি বের করার জন্য এবং ফন্টগুলি পরিচালনা করার জন্য ভাল সমর্থন রয়েছে। এটি চেষ্টা করে দেখার জন্য কিছু ভাল সরঞ্জাম রয়েছে (যেমন পিডিএফ রিডার জাভা গ্রাফিক্স 2 ডি হিসাবে প্রদর্শিত হবে)। আপনি বাটিকের মতো এসভিজি সরঞ্জামের সাহায্যে গ্রাফিক্স সরঞ্জামটি আটকে রাখতে পারেন (আমি এটি করি এবং এটি ভাল ক্যাপচার দেয়)।

সমস্ত পিডিএফকে এসভিজিতে রূপান্তর করার কোনও সহজ উপায় নেই - এটি পিডিএফ তৈরির জন্য কৌশল এবং সরঞ্জামগুলির উপর নির্ভর করে। কিছু পাঠ্য ভেক্টরে রূপান্তরিত হয় এবং সহজেই পুনর্গঠন করা যায় না - আপনাকে ভেক্টর ফন্টগুলি ইনস্টল করতে হবে এবং সেগুলি সন্ধান করতে হবে।

আপডেট: আমি এখন এটি একটি প্যাকেজ পিডিএফ 2 এসভিজি হিসাবে তৈরি করেছি যা বাটিককে আর ব্যবহার করে না:

যা অনেকগুলি পিডিএফ পরীক্ষিত হয়েছে। এটি সমন্বিত এসভিজি আউটপুট উত্পাদন করে

  • অক্ষর <svg:text>প্রতি এক হিসাবে অক্ষর
  • পথ হিসাবে <svg:path>
  • হিসাবে ইমেজ <svg:image>

পরবর্তী প্যাকেজগুলি (আশাবাদী) অক্ষরগুলি চলমান পাঠ্যে এবং পাথগুলিকে উচ্চ স্তরের গ্রাফিক্স অবজেক্টে রূপান্তরিত করবে

আপডেট: আমরা এখন এসভিজি চরিত্রগুলি থেকে চলমান পাঠ্যটি আবার তৈরি করতে পারি। আমরা ডায়াগ্রামকে ডোমেন-নির্দিষ্ট এক্সএমএলে রূপান্তর করেছি (যেমন রাসায়নিক বর্ণালী) spect Https://bitbucket.org/petermr/svg2xML-dev দেখুন । এটি এখনও আলফায় রয়েছে, তবে একটি দরকারী গতিতে চলছে। যে কেউ যোগদান করতে পারেন!

হালনাগাদ. (@ টিম কেল্টি) আমরা পিডিএফ 2 এসভিজি এবং ডাউন স্ট্রিম সরঞ্জামগুলি (সীমিত) জাভা ওসিআর এবং উচ্চ স্তরের গ্রাফিক্স আদিম (তীর, বাক্স, ইত্যাদি) তৈরির কাজ চালিয়ে যাচ্ছি https://bitbucket.org/petermr/ দেখুন ইমেজ্যানালাইসিস https://bitbucket.org/petermr/diagramanalyzer https://bitbucket.org/petermr/norma এবং https://bitbucket.org/petermr/ami-core । এটি বৈজ্ঞানিক সাহিত্য (কন্টেন্টমাইন.অর্গ) থেকে 100 মিলিয়ন তথ্য ক্যাপচার করার জন্য একটি অর্থায়িত প্রকল্প যা এর বেশিরভাগ পিডিএফ।


19

এই বিষয়টি বেশ পুরানো, তবে এখানে একটি কার্যকর সমাধান আমি পেয়েছি:

http://www.cityinthesky.co.uk/opensource/pdf2svg/

এটি পিডিএফ 2 পিএনজি একটি সরঞ্জাম সরবরাহ করে যা একবার ইনস্টল করা কমান্ড লাইনে ঠিক কাজ করে। আমি এটিকে এখনও বিটম্যাপ সহ অপরিশোধিত ফলাফলের সাথে পরীক্ষা করেছি।

সম্পাদনা: আমার ভুল, এই সরঞ্জামটি অক্ষরগুলিকেও পাথে রূপান্তর করে, তাই এটি প্রাথমিক প্রশ্নের সমাধান করে না। তবে এটি যাইহোক একটি ভাল কাজ করে, এবং যে কেউ এসভিজি ফাইলে কোডটি সংশোধন করার ইচ্ছা রাখে না তাদের পক্ষে দরকারী হতে পারে, তাই আমি পোস্টটি ছেড়ে দেব।


উবুন্টুতে আপনি এটি দিয়ে এটি ইনস্টল করতে পারেন: do sudo apt-get install pdf2svg
tvw

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

1
আপনি এটি দিয়ে ম্যাক এ ইনস্টল করতে পারেন brew install pdf2svg
কোলাস

10

এই প্রক্রিয়াটি আমি ব্যবহার করে শেষ করেছি। আমার ব্যবহৃত প্রধান সরঞ্জামটি ছিল ইনস্কেপ যা পাঠ্যকে ঠিকঠাক রূপান্তর করতে সক্ষম হয়েছিল।

  • জাভাস্ক্রিপ্টের সাথে অ্যাডোব অ্যাক্রোব্যাট প্রো ক্রিয়াকলাপগুলি পিডিএফ শিটগুলিকে বিভক্ত করতে ব্যবহার করেছে
  • উইন্ডোজ সিএমডি থেকে এসভিজিতে রূপান্তর করতে ইনস্কেপ পোর্টেবল 0.48.5 চালিয়েছে
  • উইন্ডোজ সিএমডি এবং উইন্ডোজ পাওয়ারশেল ব্যবহার করে আমার কোনও সমস্যা হচ্ছিল একটি নির্দিষ্ট এসভিজি এক্সএমএল বৈশিষ্ট্যে কিছু ম্যানুয়াল সম্পাদনা করেছে

পৃথক পৃষ্ঠা: জাভাস্ক্রিপ্ট সহ অ্যাডোব অ্যাক্রোব্যাট প্রো

অ্যাডোব অ্যাক্রোব্যাট প্রো অ্যাকশন ব্যবহার করে (পূর্বে ব্যাচ প্রসেসিং) পিডিএফ পৃষ্ঠাগুলিকে পৃথক ফাইলে আলাদা করার জন্য একটি কাস্টম অ্যাকশন তৈরি করুন। বিকল্পভাবে আপনি ঘোস্টস্ক্রিপ্টের সাহায্যে পিডিএফ বিভক্ত করতে সক্ষম হতে পারেন

পৃষ্ঠাগুলি বিভক্ত করার জন্য অ্যাক্রোব্যাট জাভাস্ক্রিপ্ট ক্রিয়া

/* Extract Pages to Folder */

var re = /.*\/|\.pdf$/ig;
var filename = this.path.replace(re,"");

{
    for ( var i = 0;  i < this.numPages; i++ )
    this.extractPages
     ({
        nStart: i,
        nEnd: i,
        cPath : filename + "_s" + ("000000" + (i+1)).slice (-3) + ".pdf"
    });
};

পিডিএফ থেকে এসভিজি রূপান্তর: উইন্ডোজ সিএমডি ব্যাচ ফাইলের সাথে ইনস্কেপ

একটি ফোল্ডারে সমস্ত পিডিএফ ফাইল লুপ করতে এবং সেগুলিকে এসভিজিতে রূপান্তর করতে উইন্ডোজ সিএমডি তৈরি ব্যাচ ফাইলটি ব্যবহার করে

বর্তমান ফোল্ডারে পিডিএফকে এসভিজিতে রূপান্তর করতে ব্যাচ ফাইল

:: ===== SETUP =====
@echo off
CLS
echo Starting SVG conversion...
echo.

:: setup working directory (if different)
REM set "_work_dir=%~dp0"
set "_work_dir=%CD%"

:: setup counter
set "count=1"

:: setup file search and save string
set "_work_x1=pdf"
set "_work_x2=svg"
set "_work_file_str=*.%_work_x1%"

:: setup inkscape commands
set "_inkscape_path=D:\InkscapePortable\App\Inkscape\"
set "_inkscape_cmd=%_inkscape_path%inkscape.exe"

:: ===== FIND FILES IN WORKING DIRECTORY =====
:: Output from DIR last element is single  carriage return character. 
:: Carriage return characters are directly removed after percent expansion, 
:: but not with delayed expansion.

pushd "%_work_dir%"
FOR /f "tokens=*" %%A IN ('DIR /A:-D /O:N /B %_work_file_str%') DO (
    CALL :subroutine "%%A"
)
popd

:: ===== CONVERT PDF TO SVG WITH INKSCAPE =====

:subroutine
echo.
IF NOT [%1]==[] (

    echo %count%:%1
    set /A count+=1

    start "" /D "%_work_dir%" /W "%_inkscape_cmd%" --without-gui --file="%~n1.%_work_x1%" --export-dpi=300 --export-plain-svg="%~n1.%_work_x2%"

) ELSE (
    echo End of output
)
echo.

GOTO :eof

:: ===== INKSCAPE REFERENCE =====

:: print inkscape help
REM "%_inkscape_cmd%" --help > "%~dp0\inkscape_help.txt"
REM "%_inkscape_cmd%" --verb-list > "%~dp0\inkscape_verb_list.txt"

ক্লিনআপ বৈশিষ্ট্য: উইন্ডোজ সিএমডি এবং পাওয়ারশেল

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

ম্যানুয়ালি এসভিজি এক্সএমএল ডেটা সন্ধান এবং প্রতিস্থাপনের পরিবর্তনসমূহ

:: setup file search and save string
set "_work_x1=svg"
set "_work_x2=svg"
set "_work_s2=_mod"
set "_work_file_str=*.%_work_x1%"

powershell -Command "(Get-Content '%~n1.%_work_x1%') | ForEach-Object {$_ -replace 'stroke-width:0.06', 'stroke-width:1'} | ForEach-Object {$_ -replace 'font-family:Times Roman','font-family:Times New Roman'} | Set-Content '%~n1%_work_s2%.%_work_x2%'"

আশা করি এটি কারও সাহায্য করবে

তথ্যসূত্র

অ্যাডোব অ্যাক্রোব্যাট প্রো ক্রিয়া এবং পৃথক পৃষ্ঠাগুলির জাভাস্ক্রিপ্ট উল্লেখ

ঘোস্টস্ক্রিপ্ট পৃথক পৃষ্ঠাগুলি উল্লেখ

পিডিএফ থেকে এসভিজি রূপান্তরের জন্য ইনস্কেপ কমান্ড লাইন উল্লেখ

উইন্ডোজ সিএমডি ব্যাচ ফাইল স্ক্রিপ্ট উল্লেখ

এক্সএমএল ট্যাগ / বৈশিষ্ট্য প্রতিস্থাপন গবেষণা


7

যদি ডিভিআই থেকে এসভিজি কোনও বিকল্প হয়, আপনি ডিভিআইভিভিএম কে একটি এসভিজি ফাইলে রূপান্তর করতে dvisvgm ব্যবহার করতে পারেন । এটি লেটেক্স সূত্রগুলির (উদাহরণ সহ --no-fonts) উদাহরণস্বরূপ নিখুঁতভাবে কাজ করে :

dvisvgm --no-fonts input.dvi -o output.svg

রয়েছে pdf2svg যা poppler কায়রো ব্যবহার করা SVG মধ্যে একটি পিডিএফ রূপান্তর করবে। আমি যখন এটি চেষ্টা করেছি, এসভিজি পুরোপুরি রেন্ডার হয়েছিল inkscape


1
আমার একটি পিডিএফ রয়েছে যা স্ক্যাক প্যাকেজ (দাবার টুকরো) থেকে কিছু ল্যাটেক্স প্রতীক সরবরাহ করে। এই নির্দিষ্ট ফাইলটি ইনসকেপে ভালভাবে পরিচালিত হয় না, যেহেতু প্রতীকগুলি আরিয়াল অক্ষর হয়ে যায় ... আমি পিডিএফ 2 এসভিজি দিয়ে সঠিক ফলাফল পেয়েছি।
LRMAAX

উইন্ডোজ সিস্টেমের জন্য এখানে সংকলিত বাইনারি সরঞ্জামগুলির একটি সেট রয়েছে: উইন্ডোজের জন্য পপলার
পাওলো গিবেলিনী

7

পিডিএফের প্রতিটি পৃষ্ঠাকে তার নিজস্ব এসভিজি ফাইলে রূপান্তর করতে স্ক্রিপ্টটি বাশ করুন।

#!/bin/bash
#
#  Make one PDF per page using PDF toolkit.
#  Convert this PDF to SVG using inkscape
#

inputPdf=$1

pageCnt=$(pdftk $inputPdf dump_data | grep NumberOfPages | cut -d " " -f 2)

for i in $(seq 1 $pageCnt); do
    echo "converting page $i..."
    pdftk ${inputPdf} cat $i output ${inputPdf%%.*}_${i}.pdf
    inkscape --without-gui "--file=${inputPdf%%.*}_${i}.pdf" "--export-plain-svg=${inputPdf%%.*}_${i}.svg"
done

পিএনজি, ব্যবহার --export-pngইত্যাদি তৈরি করতে ...


1

আমি দেখতে পেলাম যে xfigএকটি দুর্দান্ত কাজ করেছে:

pstoedit -f fig foo.pdf foo.fig
xfig foo.fig

export to svg

এটি ইনস্কেপের চেয়ে অনেক ভাল কাজ করেছে। আসলে এটি সম্ভবত এটি করা হয়েছিল pdtoedit।


0

দুটি পিডিএফ রেন্ডার স্ক্রিপ্টের জন্য এখানে নোডজেএস REST এপিআই। https://github.com/pumppi/pdf2images

স্ক্রিপ্টগুলি হ'ল: pdf2svg এবং চিত্রম্যাগিক্স রূপান্তর

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