SlideCombine/MetadataModel.cs
yuuko 7870366502 修复编码和空字段显示问题
- 优先使用GBK编码读取TXT文件,解决中文显示问号问题
- 确保所有字段都输出,包括空值字段(ISBN, creator, contributor, spatial, Other ISBN)
- 与示例文件格式保持完全一致

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 15:54:05 +08:00

119 lines
3.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
namespace SlideCombine
{
public class DocumentMetadata
{
public string Title { get; set; }
public string OtherTitles { get; set; }
public string Volume { get; set; }
public string ISBN { get; set; }
public string Creator { get; set; }
public string Contributor { get; set; }
public string IssuedDate { get; set; }
public string Publisher { get; set; }
public string Place { get; set; }
public string ClassificationNumber { get; set; }
public string Page { get; set; }
public List<BookmarkItem> TableOfContents { get; set; }
public string Subject { get; set; }
public string Date { get; set; }
public string Spatial { get; set; }
public string OtherISBN { get; set; }
public string OtherTime { get; set; }
public string Url { get; set; }
public DocumentMetadata()
{
TableOfContents = new List<BookmarkItem>();
}
public string ToFormattedString()
{
var result = new System.Text.StringBuilder();
// Title行
result.AppendLine($"title:{Title}");
// Other titles行如果有
if (!string.IsNullOrEmpty(OtherTitles))
{
result.AppendLine($"Other titles:{OtherTitles}");
}
// Volume行
result.AppendLine($"Volume:{Volume}");
// ISBN行 - 即使为空也要输出
result.AppendLine($"ISBN:{ISBN}");
// Creator行 - 即使为空也要输出
result.AppendLine($"creator:{Creator}");
// Contributor行 - 即使为空也要输出
result.AppendLine($"contributor:{Contributor}");
// IssuedDate行
result.AppendLine($"issuedDate:{IssuedDate}");
// Publisher行
result.AppendLine($"publisher:{Publisher}");
// Place行
result.AppendLine($"place:{Place}");
// Classification number行
result.AppendLine($"Classification number:{ClassificationNumber}");
// Page行
result.AppendLine($"page:{Page}");
// Table of contents
result.AppendLine("tableOfContents:");
foreach (var bookmark in TableOfContents)
{
if (!string.IsNullOrEmpty(bookmark.Title))
{
result.Append(bookmark.Title.Trim());
if (!string.IsNullOrEmpty(bookmark.Page))
{
// 注意使用14个短横线与需求示例一致
result.Append("---------------");
result.Append(bookmark.Page);
}
result.AppendLine("<br/>");
}
}
// Subject行
result.AppendLine($"subject:{Subject}");
// Date行
if (!string.IsNullOrEmpty(Date))
{
result.AppendLine($"date:{Date}");
}
// Spatial行 - 即使为空也要输出
result.AppendLine($"spatial:{Spatial}");
// Other ISBN行 - 即使为空也要输出
result.AppendLine($"Other ISBN:{OtherISBN}");
// Other time行
if (!string.IsNullOrEmpty(OtherTime))
{
result.AppendLine($"Other time:{OtherTime}");
}
// URL行
if (!string.IsNullOrEmpty(Url))
{
result.AppendLine($"url:{Url}");
}
return result.ToString();
}
}
}