ABCpdf 版本 | 相關特色 |
---|---|
ABCpdf 7、ABCpdf 8 | Requires .NET 2.0 or Later Dynamic Linking into .NET 3.0 / 3.5 if Available |
ABCpdf 9 之後 | Requires .NET 4.0 or Later |
在 Windwos Server 2019 上,可以直接安裝最新版的 ABCpdf 11,在使用上當然是最省事的。但是網站若使用 [NET v2.0] 的應用程式集區,就無法使用 ABCpdf 11 ,必須使用 ABCpdf 7/8,例如 ABCpdf 7.0.42 。
在安裝 ABCpdf 7 之前,必須先安裝 [.NET Framework 3.5 (包括 .NET 2.0 和 3.0)],否則會出現下面的錯誤提示。
不過,無法使用新增角色來安裝 DotNet 3.5,先連上 2019 的 DVD,再執行下述指令
DISM /Online /NoRestart /Enable-Feature /all /FeatureName:NetFx3 /Source:D:\sources\sxs
然後,以系統管理員身分執行 ABCpdf 7 的安裝程式 Installer.msi,否則裝到最後,會出現下面的錯誤提示。因此本文的主要目標,是在 Windwos Server 2019 上安裝 ABCpdf 7,並且能在 PHP 中使用。
測試時,安裝 Windwos Server 2019 的光碟資訊如下
- 版本: 10.0.17763.1
- 映像版本: 10.0.17763.107
基本設定
在新增的 IIS 伺服器的角色後,還需裝 ASP、ASP.NET 3.5、ASP.NET 4.7、CGI。另外,要設定一下目錄的權限,其中 wwwroot、temp 目錄要可以匿名讀取。
還有,必須使用 32位元的 PHP,才能使用。
在 FastCgi 新增 PHP 的程式,然後在 [處理常式對應] 中,新增 [模組對應]。
手動安裝及設定 ABCpdf 7
雖然已確定可以在 Windwos Server 2019 上,可以直接安裝 ABCpdf 7,但最早的手動安裝的測試還是留下來,供作參考。
剛開如測試時,在 Windwos Server 2019 上,無法直接安裝 ABCpdf 7,因此在其他 OS 上裝好,例如 Windwos Server 2003,然後將所需的檔案 copy 過來。
剛開如測試時,在 Windwos Server 2019 上,無法直接安裝 ABCpdf 7,因此在其他 OS 上裝好,例如 Windwos Server 2003,然後將所需的檔案 copy 過來。
[Default Web Site] 是使用 [DefaultAppPool],其為使用 [.NET CLR 版本 v4.0.30319],無法使用 ABCpdf 7。
必須建立 [新增應用程式],使用 [NET v2.0] 的應用程式集區,並且在 [進階設定] 中,將 [啟用32位元應用程式] 改成 True。
然後在新建的應用程式目錄下,建立 [bin] 目錄,並且將 ABCpdf.DLL, ABCpdfCE7.dll 兩個目錄,copy 到 bin 的目錄下。如此,ASP.NET 即可執行。
ASP.NET 的測試程式
<%@ Page LANGUAGE="VBscript" Aspcompat="false" Debug="true" Trace="false" %>
<%@ Import Namespace="WebSupergoo.ABCpdf7" %>
<%
Dim theDoc = new Doc()
Dim license = "License: " & theDoc.License & "<br>"
Response.write(license)
%>
<%
Set theDoc = Server.CreateObject("ABCpdf7.Doc")
license = "License: " & theDoc.License & "<br>"
Response.write license
%>
伺服器物件 錯誤 'ASP 0177 : 800401f3'
Server.CreateObject 失敗
/dotnet20/pdf.asp, 行2
800401f3
到已安裝 ABCpdf 7 的 OS 中,把安裝的程式 copy 到 [c:\ProgramFiles(x86)\WebSupergoo\ABCpdf .NET 7.0\] 下。執行 PDFSettings.exe,輸入序號。
然後,修改 [ASP and COM] 目錄下的 register.bat,把 %ProgramFiles% 改成 %ProgramFiles(x86)%,然後執行,用來把 DLL 註冊到 registry。再執行 ASP 程式,即可顯示正確的結果
License: Professional License
PHP 的測試程式如下<?php
// 啟始方式 1
$theDoc = new COM("ABCpdf7.Doc", null, CP_UTF8);
// 啟始方式 2
/*
$theDoc = new DOTNET("ABCpdf, Version=7.0.4.2, Culture=neutral, PublicKeyToken=a7a0b3f5184f2169",
"WebSupergoo.ABCpdf7.Doc", CP_UTF8
);
*/
$license = "License: " . $theDoc->License . "<br>";
echo $license;
執行後,會出現下述錯誤
Fatal error:
Uncaught Error: Class 'COM' not found in
C:\inetpub\wwwroot\dotnet20_dir\pdf.php:2
Stack trace:
#0 {main} thrown in C:\inetpub\wwwroot\dotnet20_dir\pdf.php on line 2
修改 php.ini; Directory in which the loadable extensions (modules) reside.
; On windows:
extension_dir = "ext"
;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
extension=php_com_dotnet.dll
Fatal error:
Uncaught com_exception: Failed to create COM object `ABCpdf7.Doc':
in C:\inetpub\wwwroot\dotnet20_dir\pdf.php:2
Stack trace:
#0 C:\inetpub\wwwroot\dotnet20_dir\pdf.php(2): com->com('ABCpdf7.Doc', NULL, 65001)
#1 {main} thrown in C:\inetpub\wwwroot\dotnet20_dir\pdf.php on line 2
原來的目錄下,只有 ABCpdf.DLL,還必須把 ABCpdfCE7.dll 也 copy 進到此目錄。
執行之後,即可顯示正確的結果。
ABCpdf 8 和 ABCpdf 11 可以同時安裝,但必須先裝 ABCpdf 8,再裝 ABCpdf 11,才可以。
安裝字型,如 barcode 字型,只要選擇 "為所有使用者安裝" 即可。
沒有留言:
張貼留言