কিভাবে পিডিএফএস একীভূত করবেন এবং আউটপুট ফাইলে প্রতিটি ইনপুট ফাইলের জন্য বুকমার্ক তৈরি করবেন? (লিনাক্স)


3

আমি লিনাক্স ব্যবহার করছি এবং আমার কাছে এমন একটি সফ্টওয়্যার (বা স্ক্রিপ্ট, পদ্ধতি) থাকতে হবে যা কিছু পিডিএফগুলিকে একীভূত করে এবং বুকমার্কগুলি সমেত একটি সংযুক্ত আউটপুট পিডিএফ তৈরি করে। বুকমার্কগুলি পিডিএফ ফাইলগুলির ফাইল নাম দ্বারা নামকরণ করা হয়, যা পৃষ্ঠাগুলির সংশ্লেষ এবং পয়েন্ট করার জন্য ব্যবহৃত হয়েছিল, যেখানে এই ফাইলগুলি শুরু হয়।

অনুরূপ সম্ভাবনার অ্যাডোব অ্যাক্রোব্যাট রয়েছে তবে এটি অ-মুক্ত এবং কেবল উইন্ডোজ।


ওকুলারে আপনি পিডিএফের প্রতিটি অংশে বুকমার্ক রাখতে পারেন এবং ফাইলটি খোলা আছে বা না থাকুক না কেন সেগুলি বুকমার্কগুলির কলামে প্রদর্শিত হবে। তারপরে আপনি ক্লিক করেন এবং ... এটি যা আপনি অনুসন্ধান করছেন তা নয় তবে এটি কার্যকর হতে পারে। শারীরিকভাবে আরও একটি পিডিএফকে কেবলমাত্র একটিতে মেশানোর জন্য আপনি ক্ষীর ব্যবহার করতে পারেন ... বিটিডাব্লু আপনার প্রশ্নটি সম্ভবত এটি বন্ধ হয়ে যাবে কারণ সফ্টওয়্যার প্রস্তাবনা বিষয়বস্তু are এটি আলাদা হওয়া উচিত যদি আপনি কোনও স্ক্রিপ্ট করতে চেষ্টা করছেন যা findসমস্ত পিডিএফ তাদের অবস্থান, বিভাজন basenameএবং dirnameসমস্ত একটি টেক্সট ধারকটিতে আপনার ফাইলের জন্য সংকলিত করার জন্য রাখে এবং আপনি কোথাও থামেন। ;)
হাস্তুর

কটাক্ষপাত আছে unix.stackexchange.com/q/17065/121614
NZD

@ হস্তুর ওয়েল জিএস স্ক্রিপ্টটি এই উদ্দেশ্যে ঠিক থাকবে) আমার কাছে সোর্স ফাইল নেই, কেবলমাত্র পিডিএফস, সুতরাং ক্ষীর কীভাবে সাহায্য করতে পারে তা আমি বুঝতে পারি না
ইয়ানপাস

@ অ্যানপাস: আমি ভালভাবে বুঝতে পারি নি: আপনি কি বলতে চান যে, একটি বই রয়েছে যার মধ্যে একটি পিডিএফ ফাইল রয়েছে এবং শুরুতে (বা শেষের দিকে) একটি পৃষ্ঠায় হাইপারলিংক সহ একটি পৃষ্ঠা রয়েছে যা থেকে প্রতিটি পৃষ্ঠায় প্রকাশিত হয়েছে নিবন্ধটি বইতে শুরু হয়, বা আপনি কি এইচডিডি-র লিঙ্কের সাথে একটি সূচক তৈরি করতে চান? আমি মনে করি 1 ম। আপনি এটি নিশ্চিত করতে পারেন?
হাস্তুর

@ হস্তুর উত্তর প্রথমটির কাছাকাছি। আমি এবং আমার গ্রুপমেট পরীক্ষায় প্রায় 100 টি প্রশ্ন প্রস্তুত করছি, আমরা প্রত্যেকে তার পছন্দের সম্পাদকের নিজস্ব অংশটি করছি এবং পিডিএফ ফর্ম্যাটে আমাকে তার ফলাফল প্রেরণ করছেন। তারপরে আমি সমস্ত পিডিএফসকে আউটপুট.পিডিএফতে একীভূত করি। আরও সহজ নেভিগেশনের জন্য আমি বাইরের.পিডিএফ-এর কাছে বুকমার্কের তালিকা রাখতে চাই (যখন আমি এই তালিকায় ক্লিঙ্ক করি - আমি নথির বিভাগে চলে এসেছি যা উত্তরগুলির সাথে সম্পর্কিত। I.imgur.com/hQQwp6i.png এর
ইয়ানপাস

উত্তর:


3

আপডেট : ফলাফলের সাথে আমি সন্তুষ্ট নই এবং এটি সুন্দর জিইউআই দিয়ে লিখেছি:

https://github.com/Yanpas/PdfMerger


অজগর শিখেছি এবং এক ঘন্টার মধ্যে প্রোগ্রাম (সংশোধিত) লিখেছি:

#! /usr/bin/env python
# Original author Nicholas Kim, modified by Yan Pashkovsky
# New license - GPL v3
import sys
import time
from PyPDF2 import utils, PdfFileReader, PdfFileWriter

def get_cmdline_arguments():
    """Retrieve command line arguments."""

    from optparse import OptionParser

    usage_string = "%prog [-o output_name] file1, file2 [, ...]"

    parser = OptionParser(usage_string)
    parser.add_option(
        "-o", "--output",
        dest="output_filename",
        default=time.strftime("output_%Y%m%d_%H%M%S"),
        help="specify output filename (exclude .pdf extension); default is current date/time stamp"
    )

    options, args = parser.parse_args()
    if len(args) < 2:
        parser.print_help()
        sys.exit(1)
    return options, args

def main():
    options, filenames = get_cmdline_arguments()
    output_pdf_name = options.output_filename + ".pdf"
    files_to_merge = []

    # get PDF files
    for f in filenames:
        try:
            next_pdf_file = PdfFileReader(open(f, "rb"))
        except(utils.PdfReadError):
            print >>sys.stderr, "%s is not a valid PDF file." % f
            sys.exit(1)
        except(IOError):
            print >>sys.stderr, "%s could not be found." % f
            sys.exit(1)
        else:
            files_to_merge.append(next_pdf_file)

    # merge page by page
    output_pdf_stream = PdfFileWriter()
    j=0
    k=0
    for f in files_to_merge:
        for i in range(f.numPages):
            output_pdf_stream.addPage(f.getPage(i))
            if i==0:
                output_pdf_stream.addBookmark(str(filenames[k]),j)
            j = j + 1
        k += 1

    # create output pdf file
    try:
        output_pdf_file = open(output_pdf_name, "wb")
        output_pdf_stream.write(output_pdf_file)
    finally:
        output_pdf_file.close()

    print "%s successfully created." % output_pdf_name


if __name__ == "__main__":
    main()

এই প্রোগ্রামটির জন্য পাইপিডিএফ 2 প্রয়োজন, আপনি এটির মাধ্যমে ইনস্টল করতে পারবেন sudo pip install pypdf2, এর আগে আপনাকে পাইপ ইনস্টল করতে হবে :) খালি টার্মিনালটি খুলুন এবং প্রবেশ করুন./pdfmerger.py *.pdf


2

টেক্সট.স্ট্যাকেক্সচেঞ্জ.কম এর একটি ভাল উত্তর [ 1 ] সংশোধন করে , আপনি itemizeনীচে অন্তর্ভুক্ত করা হবে এমন ফাইলগুলির রেফারেন্স সহ একটি তালিকা তৈরি করতে পারেন । (একইভাবে একটি টোক) লেটেক্স পৃষ্ঠাগুলির সংখ্যা আপডেট করার জন্য যত্ন নেবে।

কিছু ল্যাটেক্স আরও শব্দ

  • এটির হিসাবে একটি রেখায় লেটেক্স ফাইলের একই ডিরেক্টরিতে উপস্থিত "ডক01" রেফারেন্স নামের পিডিএফ ফাইল অন্তর্ভুক্ত থাকবে :MyDoc1.pdf

    \modifiedincludepdf{-}{doc01}{MyDoc1.pdf}
    
  • কমান্ড হিসাবে \pageref{doc02.3}নথির তৃতীয় পৃষ্ঠার সংখ্যার সাথে একটি লিঙ্ক তৈরি করবে যা "ডক02" কীটি রেফারেন্সের জন্য রয়েছে । লেটেক্স এটি আপডেট রাখতে যত্ন নেবে।

  • একটি ব্লক \begin{itemize} \end{itemize}একটি পয়েন্ট তালিকা তৈরি করবে।

ল্যাটেক্স ফাইলটি
এখানে পরিবর্তিত টেমপ্লেটের নীচে যা এর সাথে কাজ করবে pdflatex:

\documentclass{article}
\usepackage{hyperref}
\usepackage{pdfpages}
\usepackage[russian,english]{babel}

\newcounter{includepdfpage}
\newcounter{currentpagecounter}
\newcommand{\addlabelstoallincludedpages}[1]{
   \refstepcounter{includepdfpage}
   \stepcounter{currentpagecounter}
   \label{#1.\thecurrentpagecounter}}
\newcommand{\modifiedincludepdf}[3]{
    \setcounter{currentpagecounter}{0}
    \includepdf[pages=#1,pagecommand=\addlabelstoallincludedpages{#2}]{#3}}

\begin{document}

You can refer to the beginning or to a specific page: \\
see page \pageref{doc01.1} till \pageref{doc02.3}.\\

\begin{itemize}
  \item Here contribution from Grupmate 1 \pageref{doc01.1}
  \item Here contribution from Grupmate 2 \pageref{doc02.1}
\end{itemize}

\modifiedincludepdf{-}{doc01}{MyDoc1.pdf}
\modifiedincludepdf{-}{doc02}{MyDoc2.pdf}

\end{document}

বিঃদ্রঃ

পিডিএফ ডকুমেন্টস বা পৃষ্ঠাগুলিকে কেবল মার্জ এবং বিভক্ত করতে আপনি পিডিএফটক হিসাবে সরঞ্জামগুলি ব্যবহার করতে পারেন এবং এ সম্পর্কে অন্যান্য প্রশ্ন থেকে অনুপ্রেরণা নিতে পারেন [ 3 ]

তথ্যসূত্র


0

এই বাশ স্ক্রিপ্ট একটি ডিরেক্টরিতে প্রতিটি পিডিএফ তৈরি করবে পিডিএফ এর ফাইলের নামের সাথে তার প্রথম পৃষ্ঠায় একটি বুকমার্ক, এবং তারপরে এটি সমস্তকে সংযুক্ত করবে।

#!/usr/bin/bash

cattedPDFname="${1:?Concatenated PDF filename}"

# make each PDF contain a single bookmark to first page
tempPDF=`mktemp`
for i in *.pdf
do
    bookmarkTitle=`basename "$i" .pdf`
    bookmarkInfo="BookmarkBegin\nBookmarkTitle: $bookmarkTitle\nBookmarkLevel: 1\nBookmarkPageNumber: 1"
    pdftk "$i" update_info <(echo -en $bookmarkInfo) output $tempPDF verbose
    mv $tempPDF "$i"
done

# concatenate the PDFs
pdftk *.pdf cat output "$cattedPDFname" verbose
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.