ইমেজম্যাগিকের সাথে পিডিএফ তৈরি করতে 2 গিগাবাইটের বেশি সীমা পান


19

আমি convertপ্রায় 2,000 চিত্র থেকে পিডিএফ ফাইল তৈরি করতে ব্যবহার করছি :

convert 0001.miff 0002.miff ... 2000.miff -compress jpeg -quality 80 out.pdf

প্রক্রিয়াটি পুনরুত্পাদনযোগ্য বন্ধ করে দেয় যখন বার্তা সহ আউটপুট ফাইল 2 ^ 31-1 বাইট (2 জিবি −1) পৌঁছে যায়

convert: unknown `out.pdf'.

পিডিএফ ফাইল স্পেসিফিকেশন 10 গিগাবাইট জন্য অনুমতি দেয় । আমি এ থেকে আরও তথ্য টানতে চেষ্টা করেছি -debug all, কিন্তু লগিং আউটপুটে সহায়ক কিছু দেখিনি। ফাইল সিস্টেমটি ext3 যা কমপক্ষে 16 GiB পর্যন্ত ফাইলের (আরও বেশি হতে পারে) মঞ্জুরি দেয় । হিসাবে ulimit, file sizeহয় unlimited/etc/security/limits.confশুধুমাত্র মন্তব্য-আউট লাইন থাকে। এর ফলে আর কী হতে পারে এবং আমি কীভাবে সীমা বাড়াতে পারি?

ইমেজম্যাগিক সংস্করণ: 6.4.3 2016-08-05 Q16 ওপেনএমপি
বিতরণ: এসইএলএস 11.4 (i586)


4
আপনার পক্ষে কি অর্ধেক চিত্র (বা যা আপনার ভাল মানায়) দিয়ে দুটি ফাইল তৈরি করা সম্ভব, এবং তারপরে সেগুলি পিডিএফটেকের সাথে একীভূত করা সম্ভব?
গ্যালিফ্রেয়ান

1
আপনার>> 2 জিবি পিডিএফ ফাইল তৈরি করার কোনও যুক্তিসঙ্গত কারণ আছে? আমি আশঙ্কা করি যে অনেক পিডিএফ পাঠক এটি খোলার চেষ্টা করে ক্রাশ হয়ে যাবে।
dr01

কারণ আপনার ইমেজম্যাগিকের অনুলিপি বড় ফাইল সমর্থন ছাড়াই সংকলিত হয়েছে। দয়া করে একটি বাগ ফাইল করুন - এটি 2017
মনিকা পুনরায়

@ dr01: তাদের কেন করা উচিত? কয়েক দশক থেকে বড় ফাইল সমর্থন প্রায় কাছাকাছি ছিল।
মনিকা পুনরায় ইনস্টল করুন - এম। শ্রাইডার

@ মার্টিনশ্রেডার এবং এখনও কিছু প্রোগ্রাম খুব বেশি বড় ফাইল হ্যান্ডেল করতে পারছে না। যাইহোক, আমি 2-জিবি (অর্থাত '150'000 এ 4 পৃষ্ঠা) পিডিএফ ফাইল তৈরি করার কারণ সম্পর্কে আগ্রহী ছিলাম।
dr01

উত্তর:


24

আপনার সীমাবদ্ধতা প্রকৃতপক্ষে ফাইল সিস্টেম থেকে কাটছে না; বা প্যাকেজ সংস্করণগুলি থেকে আমার মনে হয়

আপনার 2 জিবি সীমাটি আপনার ওএসের 32-বিট সংস্করণ ব্যবহার করে আপনার কাছ থেকে আসছে।

ফাইলটি বাড়ানোর বিকল্পটি যদি একটি হার্ডওয়্যার সমর্থন করে তবে একটি 64-বিট সংস্করণ ইনস্টল করা হবে

দেখুন বড় ফাইল সমর্থন

Ditionতিহ্যগতভাবে, অনেক অপারেটিং সিস্টেম এবং তাদের অন্তর্নিহিত ফাইল সিস্টেম প্রয়োগগুলি ফাইলের আকার এবং অবস্থানের প্রতিনিধিত্ব করতে 32-বিট ইন্টিজার ব্যবহার করে। ফলস্বরূপ, কোনও ফাইল 2 32 - 1 বাইট (4 জিবি - 1) এর চেয়ে বড় হতে পারে না । অনেকগুলি বাস্তবায়নে, আকারগুলি স্বাক্ষরযুক্ত সংখ্যা হিসাবে চিকিত্সা করে সমস্যাটি আরও বেড়ে যায়, যা আরও সীমাটি 2 31 - 1 বাইট (2 জিবি - 1) নামিয়ে দেয়।


3
পার্শ্ব নোট: লিনাক্স প্রায় এক দশক আগে থেকে 32-বিট-তে এমনকি 64-বিট ফাইলের আকার এবং অবস্থানগুলি ব্যবহার করতে পারে। যদিও এটি নিশ্চিত নয়, যে এই পিডিএফ জেনারেটর সরঞ্জামটি এই কার্যকারিতাটি ব্যবহার করতে পারে।
পিটারহ - মনিকা

2
off_tসফ্টওয়্যারটি পুরো ফাইলটি র‍্যামে তৈরি করার চেষ্টা করে এবং একবারে এটি ডিস্কে লেখার চেষ্টা করে তবে @ পিটারটি 64-বিটযুক্ত সাহায্য করবে না।
দিমিত্রি গ্রিগরিএভ

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

2
@ দিমিত্রিগ্রিরিভ: আকারগুলি স্বাক্ষরিত নয়, তবে পয়েন্টার পার্থক্য ( ptrdiff_t) হ'ল , এর অর্থ কার্যকরভাবে হ'ল আকারগুলি সর্বাধিক (স্বাক্ষরিত) মানের মধ্যে সীমাবদ্ধ থাকতে হবে ptrdiff_t, অন্যথায় আপনি সত্যিই বাজে ইউবি এবং ইউবি-সম্পর্কিত বাগগুলি পাবেন যা অ্যাপ্লিকেশনগুলিতে নেই that চারপাশে কাজ করার ভাল উপায়।
আর ..

@ দিমিত্রিগ্রিরিভ সেই ক্ষেত্রে ফাইলটিতে ঠিক 2GB-1 বাইট থাকবে না, কারণ এক্সিকিউটেবল কোডের মতো জিনিসগুলি সংরক্ষণ করার জন্য প্রোগ্রামটির আরও মেমরির প্রয়োজন।
ব্যবহারকারী23013

12

convertউদাহরণস্বরূপ 1 জিআইবি দ্বারা ব্যবহৃত পিক্সেল ক্যাশে সীমাবদ্ধ করার চেষ্টা করুন :

convert 0001.miff ... 2000.miff -limit memory 1GiB -limit map 1GiB -compress jpeg -quality 80 out.pdf

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

বিটিডাব্লু, 32-বিট লিনাক্সের একক প্রক্রিয়াতে উপলব্ধ ভার্চুয়াল মেমরির পরিমাণ VMSPLITকার্নেল কনফিগারেশন সেটিংস দ্বারা সংজ্ঞায়িত করা হয় । এটি হয় 2 জি / 2 জি (কার্নেলের জন্য 2 জিবি 2 ব্যবহারকারীর জন্য 2 জিবি) বা 1 জি / 3 জি (কার্নেলের জন্য 1 জিবি + ব্যবহারকারীল্যান্ডের জন্য 3 জিবি) হতে পারে। একটি চলমান সিস্টেমে, সেটিংটি এর মাধ্যমে পাওয়া যাবে

zcat /proc/config.gz | grep VMSPLIT

কিছু সিস্টেমে /boot/config-$(uname -r)পরিবর্তে কার্নেল কনফিগারেশন সংরক্ষণ করা হয়।


1

যদি এটি বিশাল সংখ্যক ফটোগ্রাফের জন্য না হয় আপনি পিডিএফ তৈরি করতে টেক্স / ল্যাটেক্স ব্যবহার করতে পারেন। তারপরেও আপনি রূপান্তরকারী ক্র্যাশ সমস্যা ছাড়াই একই ফলাফল (চিত্রগুলির পিডিএফ) পেতে পারেন। টেক্সের ফাইল সীমাটি কেবলমাত্র আপনার সিস্টেম (হার্ডওয়্যার + ওএস) হওয়া উচিত

তবে আমি মনে করি আপনি টেক্সটি লিখতে শেল স্ক্রিপ্ট ব্যবহার করতে পারেন:

0)

mkdir convert
pushd convert
PATH=convert:$PATH /* keep everything in one directory for tidyness.*/

1) একটি টেম্পলেট তৈরি করুন

1.1) আমি নিশ্চিত যে একবারে এই পদক্ষেপটি করার একটি উপায় আছে, চিত্রের নামটি সংযোজনের পরিবর্তে ভেরিয়েবল এবং সন্নিবেশকরণের মাধ্যমে এবং সঠিক লিডিং 0 এর জন্য $ FOO ফর্ম্যাট করার জন্য, তবে নিম্নলিখিতটি আমি জানি ।

1.2) স্ক্রিপ্টটির জন্য ফাইলের নাম সন্নিবেশ করার জন্য টেমপ্লেটটি বিভক্ত হওয়া দরকার

1.3) ন্যানো tmplt1 / * বা আপনার পছন্দের সম্পাদক * /

/* white space line */ 
\begin{figure}[h!]
    \includegraphics[width=0.5\linewidth]{
/* at this point the script will insert $FOO, the file name variable */

১.৩.১) তবে আপনার ফাইলগুলি 0001.miff… 0010.miff… 0100.miff… 2000.miff যান। অর্থাত্ শীর্ষস্থানীয় শূন্যগুলির একটি পরিবর্তনশীল সংখ্যা। কার্যতালিকা: tmplt1 এর 4 সংস্করণ: tmplt1-9, tmplt10-99, tmplt100-999, tmplt1000-2000। Tmplt1-9 শেষ হয় "... প্রস্থ] {000" (অর্থাৎ 3 0 এর যোগ করুন); tmplt10-99 শেষ হয় "... প্রস্থ] {00" (অর্থাৎ 2 0 এর যোগ করুন)। 100-999 1 শূন্য যোগ করে এবং 1000-2000 tmplt1 এর সমান

1.4) টেমপ্লেটের পরবর্তী অংশ: ন্যানো tmplt2 / * OOYC * /

.miff}
   \caption{ /* if you want to caption, otherwise skip to  tmplt3.
Same again, script will insert $FOO here */

1.5) টেমপ্লেটের পরবর্তী অংশ: ন্যানো tmplt3 / * OEOYC * /

}
\label{f:   /*if you want them labelled which is actually
a index/reference for the text to refer to, not a caption.
Same again, the script will insert $FOO here. If you do not
want labels, skip to tmplt4*/

1.6) পরবর্তী টেমপ্লেট: ন্যানো tmplt4 / * OEOYC * /

    }
\end{figure}

2) ফাইলটির সূচনা করুন: ন্যানো হেড / * ওইওয়াইসি * /

\documentclass{article} /* Or more suitable class */
 \usepackage{graphicx}
 \begin{document}
  /* white space line*/

3) ফাইলটি শেষ করুন: ন্যানো ফুট / * ওইওয়াইসি * /

\end {document} 

৪) স্ক্রিপ্টটি তৈরি করুন: ন্যানো লোডার / * ওইওয়াইসি * /

#! /bin/bash

cat head > out.pdf

for FOO in {1...9}
do
    cat tmplt1-9 >> out.pdf
    echo "$FOO" | cat >> out.pdf
    cat tmplt2 >> out.pdf
    echo "$FOO" | cat >> out.pdf
    cat tmplt3 >> out.pdf
    echo "$FOO" | cat >> out.pdf
    cat tmplt4 >> out.pdf
done

for FOO in {10...99}
do
    cat tmplt10-99 >> out.pdf /* this looks like a lot but
is actually copy-paste of first block, just add relevant 0's and 9's */
    echo "$FOO" | cat >> out.pdf
    cat tmplt2 >> out.pdf
    echo "$FOO" | cat >> out.pdf
    cat tmplt3 >> out.pdf
    echo "$FOO" | cat >> out.pdf
    cat tmplt4 >> out.pdf
done

for FOO in {100...999}
do
    cat tmplt100-999 >> out.pdf
    echo "$FOO" | cat >> out.pdf
    cat tmplt2 >> out.pdf
    echo "$FOO" | cat >> out.pdf
    cat tmplt3 >> out.pdf
    echo "$FOO" | cat >> out.pdf
    cat tmplt4 >> out.pdf
done

for FOO in {1000...2000}
do
    cat tmplt1000-2000 >> out.pdf
    echo "$FOO" | cat >> out.pdf
    cat tmplt2 >> out.pdf
    echo "$FOO" | cat >> out.pdf
    cat tmplt3 >> out.pdf
    echo "$FOO" | cat >> out.pdf
    cat tmplt4 >> out.pdf
done

cat foot >> out.pdf

5) স্ক্রিপ্ট সম্পাদনযোগ্য: chmod ইউ + এক্স লোডার

5.1) এটি পরীক্ষার পরে, আমি দেখতে পেলাম যে প্রতিবার $ এফইও wasোকানো হয়েছিল, এটি 3 টি লাইনে ছড়িয়ে গেছে। আমি স্ক্রিপ্টে যাওয়া এবং ম্যানুয়ালি গাড়ীর রিটার্ন মোছা ছাড়া অন্য কোনও কাজ জানি না। কমপক্ষে সমস্ত 2000 ফটোগুলির জন্য এটি কেবল 36

6) কল স্ক্রিপ্ট: লোডার

7) TeX: pdflatex out.pdf সংকলন করুন

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