# PhotoTkutimes

## 用途

ASP.NET Core 應用程式，用於管理照片及依新聞資料即時產生 PDF。

## 技術

- .NET 10 / ASP.NET Core MVC 與 API
- iText 7.2.4
- SQL Server、Azure Files、Open XML、影像處理套件

## 授權

[![License: AGPL v3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)

Copyright (C) 2026 Tamkang University  
著作財產權人：淡江大學  
委託單位：淡江時報與媒體中心  
開發單位：資訊處

Licensed under the GNU Affero General Public License version 3.

本專案依 **GNU Affero General Public License version 3（AGPLv3）** 發布。詳見 [LICENSE](LICENSE) 檔案。

### 重要提示：iText 7.2.4

本專案使用 **iText 7.2.4**，其採用 AGPLv3 授權。此依賴關係導致整個專案必須採用 AGPLv3。若要使用商業授權版本的 iText，請另行聯繫 iText 公司。詳見 [NOTICE](NOTICE)。

以 AGPLv3 使用 iText 時，不得移除或修改 iText 寫入 PDF 的 Producer line。正式發布前應抽樣檢查 PDF metadata。

### 第三方元件授權

所有依賴套件與前端元件授權詳見 [THIRD-PARTY-NOTICES.md](THIRD-PARTY-NOTICES.md)。

## 建置需求

- .NET SDK 10.0.301（`global.json`）
- 可連線至 NuGet 套件來源
- 執行 PDF 功能時需另行提供 `wwwroot/font/edukai-4.0.ttf`（教育部國字標準字體楷書版，採用創用 CC「姓名標示-禁止改作」3.0 臺灣版授權）
- 正式資料庫、Azure、加密金鑰等秘密資訊不得提交

## 建置

```bash
dotnet restore
dotnet build -v:q /clp:ErrorsOnly
```

## 執行

複製 `appsettings.example.json` 為本機設定，填入必要值後執行：

```bash
dotnet run
```

PDF 入口為 `GET /fpdf/{no}.pdf`；需將 `PdfControllerEnabled` 設為 `1` 才會啟用，並需要資料庫、圖片目錄、PDF 輸出目錄及字型。授權與原始碼資訊由使用本 API 的網站提供。

## 設定

正式部署建議以環境變數覆寫設定，例如 `ConnectionStrings__TKUTIMES`、`ShareString`、`SecurityKey` 與 `SecurityIV`。範例檔不含正式秘密。

## 原始碼取得

對應原始碼應由使用本 API 的網站來源頁提供公開下載位址（例如公開 ZIP）。來源包內的 `SOURCE-MANIFEST.md` 記錄來源版本與產生時間；網站應在 ZIP 封裝完成後計算 SHA-256，並將版本、時間及雜湊同步顯示於來源頁。雜湊填入後不得重新封裝同一 ZIP，否則必須重新計算。

## 第三方元件

iText 7.2.4 可依 AGPLv3 或商業授權使用。其他直接套件與前端元件見 `THIRD-PARTY-NOTICES.md`。

## 安全注意事項

不得提交密碼、API Key、憑證、個資、正式資料、資料庫備份或內部基礎設施資訊。安全問題回報方式見 `SECURITY.md`。
