2012-09-26 18 views
5

मैं एक पीडीएफ फ़ाइल में एकाधिक ग्राफ मुद्रित करना चाहता हूं। मुझे पता है कि इस पर बहुत कुछ रहा है, लेकिन मैं प्रत्येक पृष्ठ के लिए अलग-अलग विंडो/ग्राफ़ आकार प्रिंट करना चाहता हूं, यानी पहला पृष्ठ 8.5x11, दूसरा पृष्ठ 11x8.5 और इसी तरह से। मैंने कोशिश की यह:एकाधिक ग्राफ पीडीएफ आर

pdf(file="Combined_Graphs.pdf",onefile=TRUE,bg="white",width=8.5,height=11) 
hist(rnorm(100)) 
pdf(file="Combined_Graphs.pdf",onefile=TRUE,width=11, height=8.5, bg="white") 
hist(rnorm(100,10,2),col="blue") 
dev.off() 

मैं का उपयोग करना चाहिए onefile=TRUE गलत के रूप में यह केवल बंद करने से पहले पिछले ग्राफिक उत्पन्न करता है। क्या पीडीएफ फ़ंक्शन को दो बार कॉल किए बिना ग्राफ़िक डिवाइस को आकार देने का कोई बेहतर तरीका है?

उत्तर

7

मैं क्या करूँगा अलग पीडीएफ का उत्पादन होता है और उन्हें बाद में गठबंधन करता है। मैं इसके लिए the PDF toolkit का उपयोग करता हूं। एक अनुसंधान समारोह में इस रैपिंग system के माध्यम से एक सिस्टम कॉल का उपयोग कर भी यह आर से स्क्रिप्ट कॉल pdftk के लिए कुछ ऐसी दिखाई देगी बनाता है:

pdftk *pdf cat output combined.pdf 

या आर में:

system("pdftk *pdf cat output combined.pdf") 

combine_pdfs = function(path, output_pdf) { 
    system(sprintf("pdftk %s/*pdf cat output %s"), path, output_pdf) 
} 
+0

धन्यवाद !!! यह कमाल है, बहुत अच्छी तरह से काम करता है और मुझे फिर से एडोब एक्रोबैट का उपयोग नहीं करना पड़ता है :) – austin

+0

आप पीडीएफटीके के साथ सभी प्रकार की साफ-सुथरी चीजें कर सकते हैं। कमांड लाइन से इसे चलाने से स्क्रिप्ट आसान हो जाता है, उदा। पीडीएफ काटने जिसमें असमान लंबाई के साथ उप-रिपोर्ट शामिल हैं। –

+0

यदि इस उत्तर ने आपके प्रश्न को हल किया है, तो कृपया हरे रंग की टिकटें जांचने के लिए स्वतंत्र महसूस करें। –

4

मुझे लगता है कि आप ऐसा करने की कोशिश कर रहे हैं आर में नहीं किया जा सकता है, यानी, आपको पीएलएफ टूलकिट जैसे पीडीएफ टूलकिट जैसे बाहरी पीडीएफ फाइलों को अलग-अलग पेज आयामों के साथ जोड़ने के लिए पीडीएफ टूलकिट जैसे बाहरी टूल्स का उपयोग करने की आवश्यकता है (वैकल्पिक उपकरण PDFjam है)।

यदि आप pdf() पर अपने कॉल में onefile = TRUE सेट करते हैं, तो उस पीडीएफ डिवाइस पर लिखे गए प्रत्येक प्लॉट को एक अलग पृष्ठ पर मुद्रित किया जाएगा, फिर भी उसी पृष्ठ आयामों के साथ। आपके उदाहरण में, आप पहला पीडीएफ डिवाइस खोलते हैं, इसमें एक साजिश लिखते हैं, फिर आप एक दूसरा पीडीएफ डिवाइस खोलते हैं, इसके लिए एक अलग साजिश लिखते हैं, और फिर दूसरा पीडीएफ डिवाइस बंद करते हैं लेकिन पहले पीडीएफ डिवाइस को खुलते हैं। चूंकि आप pdf() कॉल दोनों के लिए file तर्क का उपयोग करते हैं, तो आप शायद यह नहीं देख पाएंगे कि पहला पीडीएफ डिवाइस अभी भी खुला है। यदि आपने इसे बंद कर दिया है, तो केवल पहली साजिश "Combined_Graphs.pdf" में समाप्त हो जाएगी।

यहाँ दिखाता है कि कैसे पीडीएफ उपकरणों खोले जाते हैं, सामग्री से भरा है, और बंद अपने उदाहरण का एक संशोधित संस्करण है:

pdf(file = "foo.pdf", onefile = TRUE, width = 8.5, height = 11) 
hist(rnorm(100)) 
hist(rnorm(100, 10, 2), col = "red") 
pdf(file = "bar.pdf", width =11, height = 8.5) 
hist(rnorm(100, 10, 2), col = "blue") 
dev.off() 
dev.off() 
संबंधित मुद्दे