পাওয়ারপয়েন্টকে পিডিএফ সার্ভার-ভিত্তিক সমাধানগুলিতে রূপান্তর করছেন?


0

আমি এই প্রশ্নের একটি সংস্করণ আগে জিজ্ঞাসা করেছি, তবে আমি অন্যান্য সমাধানের প্রয়োজন, সুতরাং এটি আরও নির্দেশিত প্রশ্ন।

ফাইলগুলিকে ফাইলগুলিতে রূপান্তর করার জন্য আমার একটি সার্ভার-ভিত্তিক সমাধানের প্রয়োজন ।pptpdf

এই সমাধানটি হয় বর্তমান ওয়েব সার্ভারে কনসোল কমান্ড-ট্রিগারযুক্ত পরিষেবা হিসাবে বসতে পারে, এটি ওয়েবের সমস্ত সি # কোডের সাথে একীভূত করা যেতে পারে, বা এটি নিজস্ব সার্ভার হতে পারে।

এটি লাইব্রোফিস বা ওপেনঅফিসের ভিত্তিতেও তৈরি করা যায় না, কারণ এই দু'জনেরই স্মার্টআর্ট রূপান্তর করতে সমস্যা রয়েছে have আমি বর্তমানে লাইব্রোফিস ব্যবহার করছি।

আমি /ptপিডিএফ প্রিন্ট ড্রাইভারের সাথে মিলিয়ে পাওয়ারপয়েন্ট পয়েন্ট কনসোল কমান্ড ( ) ব্যবহার করে PDFCreatorদেখেছি তবে আমি এটি সি # থেকে কাজ করতে পারি না। এই ইস্যু সম্পর্কিত সম্পর্কিত প্রশ্ন এখানে

আমি একটি .vbs স্ক্রিপ্ট চেষ্টা করেছি, তবে এটি সংক্ষেপে পাওয়ারপয়েন্ট উইন্ডোটি খুলবে।

এই উত্তরটি থেকে স্ক্রিপ্টটি এখানে।

Option Explicit

Sub WriteLine ( strLine )
    WScript.Stdout.WriteLine strLine
End Sub

' http://msdn.microsoft.com/en-us/library/office/aa432714(v=office.12).aspx
Const msoFalse = 0   ' False.
Const msoTrue = -1   ' True.

' http://msdn.microsoft.com/en-us/library/office/bb265636(v=office.12).aspx
Const ppFixedFormatIntentScreen = 1 ' Intent is to view exported file on screen.
Const ppFixedFormatIntentPrint = 2  ' Intent is to print exported file.

' http://msdn.microsoft.com/en-us/library/office/ff746754.aspx
Const ppFixedFormatTypeXPS = 1  ' XPS format
Const ppFixedFormatTypePDF = 2  ' PDF format

' http://msdn.microsoft.com/en-us/library/office/ff744564.aspx
Const ppPrintHandoutVerticalFirst = 1   ' Slides are ordered vertically, with the first slide in the upper-left corner and the second slide below it.
Const ppPrintHandoutHorizontalFirst = 2 ' Slides are ordered horizontally, with the first slide in the upper-left corner and the second slide to the right of it.

' http://msdn.microsoft.com/en-us/library/office/ff744185.aspx
Const ppPrintOutputSlides = 1               ' Slides
Const ppPrintOutputTwoSlideHandouts = 2     ' Two Slide Handouts
Const ppPrintOutputThreeSlideHandouts = 3   ' Three Slide Handouts
Const ppPrintOutputSixSlideHandouts = 4     ' Six Slide Handouts
Const ppPrintOutputNotesPages = 5           ' Notes Pages
Const ppPrintOutputOutline = 6              ' Outline
Const ppPrintOutputBuildSlides = 7          ' Build Slides
Const ppPrintOutputFourSlideHandouts = 8    ' Four Slide Handouts
Const ppPrintOutputNineSlideHandouts = 9    ' Nine Slide Handouts
Const ppPrintOutputOneSlideHandouts = 10    ' Single Slide Handouts

' http://msdn.microsoft.com/en-us/library/office/ff745585.aspx
Const ppPrintAll = 1            ' Print all slides in the presentation.
Const ppPrintSelection = 2      ' Print a selection of slides.
Const ppPrintCurrent = 3        ' Print the current slide from the presentation.
Const ppPrintSlideRange = 4     ' Print a range of slides.
Const ppPrintNamedSlideShow = 5 ' Print a named slideshow.

' http://msdn.microsoft.com/en-us/library/office/ff744228.aspx
Const ppShowAll = 1             ' Show all.
Const ppShowNamedSlideShow = 3  ' Show named slideshow.
Const ppShowSlideRange = 2      ' Show slide range.

'
' This is the actual script
'

Dim inputFile
Dim outputFile
Dim objPPT
Dim objPresentation
Dim objPrintOptions
Dim objFso

If WScript.Arguments.Count <> 2 Then
    WriteLine "You need to specify input and output files."
    WScript.Quit
End If

inputFile = WScript.Arguments(0)
outputFile = WScript.Arguments(1)

Set objFso = CreateObject("Scripting.FileSystemObject")

If Not objFso.FileExists( inputFile ) Then
    WriteLine "Unable to find your input file " & inputFile
    WScript.Quit
End If

If objFso.FileExists( outputFile ) Then
    WriteLine "Your output file (' & outputFile & ') already exists!"
    WScript.Quit
End If

WriteLine "Input File:  " & inputFile
WriteLine "Output File: " & outputFile

Set objPPT = CreateObject( "PowerPoint.Application" )

objPPT.Visible = True
objPPT.Presentations.Open inputFile

Set objPresentation = objPPT.ActivePresentation
Set objPrintOptions = objPresentation.PrintOptions

objPrintOptions.Ranges.Add 1,objPresentation.Slides.Count
objPrintOptions.RangeType = ppShowAll

' Reference for this at http://msdn.microsoft.com/en-us/library/office/ff746080.aspx
objPresentation.ExportAsFixedFormat outputFile, ppFixedFormatTypePDF, ppFixedFormatIntentScreen, msoTrue, ppPrintHandoutHorizontalFirst, ppPrintOutputSlides, msoFalse, objPrintOptions.Ranges(1), ppPrintAll, "Slideshow Name", False, False, False, False, False

objPresentation.Close
ObjPPT.Quit

আমি অন্য একটি পদ্ধতি চেষ্টা করেছিলাম: এটির সাথে সমস্যাটি একই রকম, এটি সংক্ষেপে একটি (আরও ছোট) উইন্ডো খোলায়।

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {
            String sourceFilename = args[0];
            String destinationFileName = args[1];

            if (!File.Exists(sourceFilename))
            {
                throw new FileNotFoundException(string.Format("The specified file {0} does not exist.", sourceFilename), sourceFilename);
            }

            try
            {
                Microsoft.Office.Interop.PowerPoint.Application app = new Microsoft.Office.Interop.PowerPoint.Application();

                app.Presentations.Open(sourceFilename,Microsoft.Office.Core.MsoTriState.msoFalse,Microsoft.Office.Core.MsoTriState.msoFalse,Microsoft.Office.Core.MsoTriState.msoFalse).SaveAs(destinationFileName, Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType.ppSaveAsPDF);
                app.Quit();
            }
            catch (Exception e)
            {
                throw new Exception(string.Format("Unable to convert {0} to {1}", sourceFilename, destinationFileName), e);
            }
        }
    }
}

প্রচুর ppt2pdf সমাধান রয়েছে তবে .vbs- স্ক্রিপ্টটি যদি কাজ করে (তবে কেবল উইন্ডোটি সংক্ষেপে খোলে), সম্ভবত আপনি যদি কোডটি দেখান, আমরা আপনাকে উইন্ডোটি কীভাবে আড়াল করতে হবে সে সম্পর্কে পরামর্শ দিতে পারি।
রিক

@ রিক এখানে প্রচুর ppt2pdf সমাধান রয়েছে, তবে এর মধ্যে খুব কমই নিঃশব্দে, স্বয়ংক্রিয়ভাবে এবং প্রোগ্রামগতভাবে চালনার উপযুক্ত suitable স্ক্রিপ্ট এখানে । আমি এটি পোস্ট করব
হাউসম্যান

উত্তর:


1

আমি কেবল একটি ছোট ভিবিএস-স্ক্রিপ্ট দিয়ে চেষ্টা করেছি:

Dim oApp, Pres
Set oApp = CreateObject("Powerpoint.Application")
Set Pres = oApp.Presentations.Open("C:\\temp\\test.pptx", , , msoFalse)
Pres.SaveAs "c:\\temp\\test.pdf", 32, True
Pres.Close
oApp.Quit

এবং আপনি ঠিক বলেছেন। আপনি সেট করতে পারবেন না oApp.Visible = false। আমার জন্য উইন্ডোটি খুব সংক্ষিপ্ত ছিল (প্রায় লক্ষণীয় নয়) তবে বড় পিপিটি সহ এটি দীর্ঘতর হবে। সুতরাং আপনি যদি সত্যই পাওয়ার পয়েন্টটি দৃশ্যমান না চান (এমনকি সংক্ষেপে) তবে আপনি অটোমেশন (মাধ্যমে CreateObject) ব্যবহার করতে পারবেন না । (বিটিডব্লিউ একটি সংক্ষিপ্ত উইন্ডোতে সমস্যা কেন এটি যদি ওয়েব সার্ভারের মাধ্যমে কোনও সার্ভারে তৈরি করা হয় তবে ?? কোনও সংলাপ বা ইন্টারঅ্যাকশন দরকার নেই))

এরপরে আমি পিডিএফক্রিটরের চেষ্টা করেছি । (কি আনচেক টুলবার, ইত্যাদি এই বিনামূল্যে পিডিএফ প্রিন্টার ইনস্টল করার সব software সহ।)

রাইট-ক্লিক এবং Create PDF with PDFCreatorপাওয়ারপয়েন্ট উইন্ডোটি দৃশ্যমান ছিল না। (সংক্ষেপে না)

সুতরাং নিম্নলিখিত কমান্ডটি চালনার ফলে test.pdfআমার Documentsডিরেক্টরিতে একটি নীরবতা রইল :

"C:\Program Files\Microsoft Office\Office12\POWERPNT.exe" /PT "PDFCreator" "" "" "C:\TEMP\test.pptx"

Vbs- সমতুল্য হবে:

Set objShell = WScript.CreateObject("WScript.Shell")
objShell.run """C:\Program Files\Microsoft Office\Office12\POWERPNT.exe"" /PT PDFCreator """" """" C:\TEMP\test.pptx"
Set objShell = Nothing

সমস্ত ডাবল "এস দেখুন। তারা সব প্রয়োজনীয়। আপনি ব্যবহার ""করতে পারবেন আপনার ব্যবহার করতে পারবেন না """"। (এছাড়াও প্রোগ্রাম কাছাকাছি

আপনি প্রয়োজন ফাইল তৈরি করতে PDFCreator সেট করতে ডায়ালগ ছাড়া (নিচে দেখুন)। ফলাফলটি একটি ফাইল হবে (আপনার পছন্দসই ডিরেক্টরিতে আপনার পিপিটিএক্স এর একই নাম সহ)।

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

এখানে চিত্র বর্ণনা লিখুন


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

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

যেমনটি আমি বলেছিলাম যে এই উদ্ধৃতিগুলি নিয়ে আমার প্রচুর সমস্যা হয়েছে তাই সম্ভবত সেগুলিকেও # দ্বিগুণ করা দরকার (ভিবিএসক্রিপ্টের মতো)। আমিও ডাবল উদ্ধৃতি প্রয়োজন "" ""! ( "আমার শেষ ভিবিএস স্ক্রিপ্টের সমস্তগুলি দেখুন) সরকারী দস্তাবেজগুলি জানায় যে এগুলি প্রয়োজনীয় তা আমি কেন খুঁজে পেলাম না কেন এবং আমার জন্য তারা এগুলি ছাড়াও কাজ করে। তবে শেষ পর্যন্ত যদি আপনি উইন্ডো নিয়ে বেঁচে থাকতে পারেন তবে আমি করব। যদিও, পাওয়ারপয়েন্টটি যদি অন্য কোনও ব্যবহারকারী-স্তরে চালিত হয় (যেমন সিস্টেমে বা অ্যাডমিন) আপনি ডেস্কটপে খোলা উইন্ডোটিও দেখতে পাবেন না;)
রিক

এটি কনসোল কমান্ড হিসাবে ব্যবহার করার সময় আমি ত্রুটিগুলি পাই না, কেবলমাত্র যখন আমি এই কমান্ডটি সি # এর মাধ্যমে কল করি Process
হাউসম্যান

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