我正在构建一个应用程序,人们可以上传文件并与其他人共享文件。我们要做的部分工作是允许人们在线预览文件。
是否有一种直接的方式来为文档中的前X个页面生成jpgs?然后我们可以将这些jpgs放在网页中,允许用户预览。
我已经看过在服务器上安装开放式办公室,但希望有一个PHP库可以完成同样的工作。
有人可以帮忙吗?
干杯
答案 0 :(得分:4)
尝试使用com类:
您可以使用com类将office office文件转换为jpg
COM类参考: -
http://us2.php.net/manual/en/class.com.php
或以下代码将ppt转换为jpg格式
<html>
<head>
<title>ShotDev.Com Tutorial</title>
</head>
<body>
<?
$ppApp = new COM("PowerPoint.Application");
$ppApp->Visible = True;
$strPath = realpath(basename(getenv($_SERVER["SCRIPT_NAME"]))); // C:/AppServ/www/myphp
$ppName = "MySlides.ppt";
$FileName = "MyPP";
//*** Open Document ***//
$ppApp->Presentations->Open(realpath($ppName));
//*** Save Document ***//
$ppApp->ActivePresentation->SaveAs($strPath."/".$FileName,17); //'*** 18=PNG, 19=BMP **'
//$ppApp->ActivePresentation->SaveAs(realpath($FileName),17);
$ppApp->Quit;
$ppApp = null;
?>
PowerPoint Created to Folder <b><?=$FileName?></b>
</body>
</html>
---------------------------
Or try this :-
$powerpnt = new COM("powerpoint.application") or die("Unable to instantiate Powerpoint");
$presentation = $powerpnt->Presentations->Open(realpath($file), false, false, false) or die("Unable to open presentation");
foreach($presentation->Slides as $slide)
{
$slideName = "Slide_" . $slide->SlideNumber;
$exportFolder = realpath($uploadsFolder);
$slide->Export($exportFolder."\\".$slideName.".jpg", "jpg", "600", "400");
}
$powerpnt->quit();
&GT;
或将单词转换为jpg
<?php
// starting word
$word = new COM("word.application") or die("Unable to instantiate Word");
echo "Loaded Word, version {$word->Version}\n";
//bring it to front
$word->Visible = 1;
//open an empty document
$word->Documents->Add();
//do some weird stuff
$word->Selection->TypeText("This is a test...");
$word->Documents[1]->SaveAs("Useless test.doc");
//closing word
$word->Quit();
//free the object
$word = null;
?>
答案 1 :(得分:2)
您无法使用Office Interop自动执行此类任务,请参阅Microsoft的原因:
https://support.microsoft.com/en-us/kb/257757
最好的方法是使用强大的库,例如Aspose.Slides(兼容ppt,pptx,强大的操作),它们被设计用作API。
您可以通过NetPhp库从PHP中使用Aspose.Slides。这里有一个例子:
http://www.drupalonwindows.com/en/blog/powerpoint-presentation-images-php-drupal-example
相关的代码就是这个代码,它有一些Drupal特定的东西,但是你可以看到它是怎么回事并让它在其他地方工作:
@IBAction func myButton(sender: AnyObject) { //login button
let UserName = input.text!
let UserPassword = password.text!
if ( UserName.isEmpty || UserPassword.isEmpty) { return }
//send data user to server side
let myUrl = NSURL(string: "http://servertest.cf/Store.php?LoginUser=Test%40home.com&LoginPassword=123456789")
let myRequest = NSMutableURLRequest(URL: myUrl!)
myRequest.HTTPMethod = "POST"
let postString = "email=\(UserName)&Password=\(UserPassword)";
myRequest.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
let Task = NSURLSession.sharedSession().dataTaskWithRequest(myRequest)
{ data , response , error in
if error != nil {
println("error\(error)")
self.myLabel.text = "wrong user name"
}
var err : NSError?
var json = NSJSONSerialization.JSONObjectWithData(data, options: .MutableContainers , error: &err) as? NSDictionary
if let parseJson = json
{
var resultValue:String = parseJson["Status"] as! String!
println("result\(resultValue)")
if(resultValue == "Success" )
{
var storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
var vc: UINavigationController = storyboard.instantiateViewControllerWithIdentifier("SecondViewController") as! UINavigationController
self.presentViewController(vc, animated: true, completion: nil)
}
}
}
Task.resume()
}
答案 2 :(得分:0)
对于特定于PHP的选项,您可以使用PHPWord - 此库是用PHP编写的,提供用于读取和写入不同文档文件格式的类(包括hierarchical queries
和Option Explicit
Public wsSheet As Worksheet
Public wbMaster As Workbook
Public wbReport As Workbook
Public rngPartNumber As Range
Public rngPartName As Range
Public rngSupplier As Range
Public rngTPRStatus As Range
Public rngOffTool As Range
Public rngExceptionNotes As Range
Public rngMRD As Range
Sub RunReports()
Set wbMaster = ActiveWorkbook
Set wsSheet = wbMaster.Sheets("Part x Part Matrix")
With wsSheet
.AutoFilterMode = False
SetRanges
End With
TPRReport
ExceptionsReport1
wsSheet.ShowAllData
End Sub
Sub SetRanges()
wsSheet.Activate
Set rngPartNumber = Range("C:C")
Set rngPartName = Range("H:H")
Set rngSupplier = Range("Q:R")
Set rngTPRStatus = Range("X:Y")
Set rngOffTool = Range("Z1", Range("AC1").End(xlDown))
Set rngExceptionNotes = Range("AH1", Range("AH1").End(xlDown))
Set rngMRD = Range("AI1", Range("AK1").End(xlDown))
End Sub
Sub TPRReport()
Dim rngTPRResults As Range
wsSheet.Range("A1").End(xlToRight).AutoFilter Field:=24, Criteria1:="No"
Set rngTPRResults = Union(rngPartNumber, rngPartName, rngSupplier, rngTPRStatus)
rngTPRResults.Copy
Set wbReport = Workbooks.Add
With wbReport.Worksheets("Sheet1")
.Range("A1").Select
.Paste
.SaveAs Filename:=wbMaster.Path & "\TPR Report" & Format(CStr(Now), "yyyymmdd_hhmm")
.Close
End With
End Sub
Sub ExceptionsReport1()
Dim rngExceptions As Range
wsSheet.Range("A1").End(xlToRight).AutoFilter Field:=38, Criteria1:="X"
Set rngExceptions = Union(rngPartNumber, rngPartName, rngSupplier, rngTPRStatus, rngOffTool, rngExceptionNotes, rngMRD)
rngExceptions.Copy
Set wbReport = Workbooks.Add
With wbReport.Worksheets("Sheet1")
.Range("A1").Select
.Paste
.SaveAs Filename:=wbMaster.Path & "\Exceptions Report CV" & Format(CStr(Now), "yyyymmdd_hhmm")
.Close
End With
End Sub
),但它不会让你能够从全系列的Office文件进行转换。
要在任何平台上转换任何Office文件,您可以使用Zamzar等文件转换API。它可以将所有Office格式(DOC / DOCX / PPT / PPTX / XLS / XLSX)转换为图像(JPG,PNG,GIF等)和PDF。
从PHP调用的代码如下(更多信息in the docs)。
.doc