Spire.Office for Python 9.12.1 已正式发布。在该版本中,Spire.Doc for Python 支持将 Word 文档标记为 "final",并支持设置 Word 装订线的位置。Spire.PDF for Python 支持数字签名功能,以及将 imageInfo[i].Image 返回为 byte[] 类型。Spire.XLS for Python 新增了 workbook.Chartsheets 属性和 excelPicture.HyperLink 属性。Spire.Presentation for Python 支持获取 section 中的幻灯片。此外,一些在转换、处理和保存 Word/Excel/PDF/PowerPoint 文件时出现的问题也已成功被修复。更多新功能及问题修复详情如下。
获取 Spire.Office for Python 9.12.1,请点击:https://www.e-iceblue.cn/Downloads/Spire-Office-Python.html
Spire.Doc for Python
新功能:
- 支持了将 Word 文档标记为 "final"。
- 支持了设置 Word 装订线的位置。
- 支持了设置自定义字体文件夹。
- 支持了设置修订 Author。
from spire.doc import *
from spire.doc.common import *
document = Document()
document.LoadFromFile("in.docx")
customProperties = document.CustomDocumentProperties
customProperties.Add("_MarkAsFinal", Boolean(True))
document.SaveToFile("out.docx", FileFormat.Docx2013)
from spire.doc import *
from spire.doc.common import *
document = Document()
sec = None
for i in range(0, 10):
sec = document.AddSection()
sec.PageSetup.IsTopGutter = False
para = sec.AddParagraph()
txtRange = para.AppendText("Test")
sec.PageSetup.Gutter = 50 + i*10
document.SaveToFile(outputFile, FileFormat.Docx)
document.Close()
from spire.doc import *
from spire.doc.common import *
document = Document()
document.LoadFromFile(inputFile)
document.SetCustomFontsFolders(document,"Angsana New")
document.SaveToFile(outputFile, FileFormat.PDF)
document.Close()
from spire.doc import *
from spire.doc.common import *
document = Document()
#Load the file from disk.
document.LoadFromFile(inputFile)
for i in range(document.Sections.Count):
sec = document.Sections.get_Item(i)
#Iterate through the element under body in the section
for j in range(sec.Body.ChildObjects.Count):
docItem = sec.Body.ChildObjects.get_Item(j)
if isinstance(docItem, Paragraph):
para = docItem
if para.IsInsertRevision:
para.InsertRevision.Author="Spire.Doc Insert"
elif para.IsDeleteRevision:
para.DeleteRevision.Author="Spire.Doc Insert"
for k in range(para.ChildObjects.Count):
textRange = para.ChildObjects.get_Item(k)
if isinstance(textRange, TextRange):
if textRange.IsInsertRevision:
textRange.InsertRevision.Author="Spire.Doc Insert"
elif textRange.IsDeleteRevision:
textRange.DeleteRevision.Author="Spire.Doc Insert"
#Save to file.
document.SaveToFile(outputFile, FileFormat.Docx2013)
document.Close()
问题修复:
- 修复了添加 Latex 公式时,程序抛 "Arg_InvalidCastException" 错误的问题。
- 修复了使用 CustomDocumentProperties.Add() 时,程序抛 "AttributeError" 错误的问题。
- 修复了设置 PageSetup.GridType 时,程序抛 "AttributeError" 错误的问题。
- 修复了使用 "FixedLayoutPage.Section",返回不正确的问题。
Spire.XLS for Python
新功能:
- 新增 SheetFitToPageRetainPaperSize 属性,用于在将 Excel 转换为 PDF 时决定是否保留原始的页面尺寸。
- 新增 workbook.Chartsheets 属性。
- 新增 excelPicture.HyperLink 属性。
book = Workbook()
book.LoadFromFile(inputFile)
# Retain the page size set
book.ConverterSetting.SheetFitToPageRetainPaperSize = True
book.SaveToFile(outputFile, FileFormat.PDF)
问题修复:
- 修复了转换 Excel 到 PDF 时超链接丢失的问题。
- 修复了转换 Excel 到 PDF 时页码不正确的问题。
- 修复了在云平台上(pythonwhere)转换 Excel 到 PDF 时中文乱码的问题。
- 修复了使用 openpyxl 加载我们产品生成的 XLSX 文件时抛出异常的问题。
- 修复了在 sheet.Protect 方法中同时设置多个保护类型时抛出异常的问题。
- 修复了转换 ChartSheet 到 SVG 时内容不一致的问题。
- 修复了在 ubuntu22 上设置字体样式时抛出异常的问题。
- 修复了转换 Excel 到 PDF 时抛出异常的问题。
- 修复了转换 Excel 文档到 PDF 文档时文本位置不正确的问题。
Spire.PDF for Python
新功能:
- 支持将 imageInfo[i].Image 返回为 byte[] 类型。
- 同步了 PdfTextReplaceOptions 类。
- 同步了 TextStates 属性到 PdfTextFragment 接口。
- 支持了数字签名功能。
- 支持 macOS 操作系统。
byteResult = imageInfo[i].Image.ToArray()
fileName = outputFile_1 + "Bug_6888_{0:d}.png".format(i)
with open(fileName,'wb') as f:
f.write(byteResult)
pdf=PdfDocument()
pdf.LoadFromFile(inputFile)
page = pdf.Pages[0]
textreplacer = PdfTextReplacer(page)
options = PdfTextReplaceOptions()
options.ReplaceType = ReplaceActionType.WholeWord
textreplacer.Options = options
textreplacer.ReplaceAllText("荷塘", "池塘")
pdf.SaveToFile(outputFile)
pdf = PdfDocument()
pdf.LoadFromFile(inputFile)
inder = PdfTextFinder(pdf.Pages[0])
fragments = finder.Find("PDF")
sb = []
for fragment in fragments:
sb.append(fragment.TextStates[0].FontName)
sb.append(fragment.TextStates[0].FontFamily)
sb.append(str(round(fragment.TextStates[0].FontSize,2)))
File.AppendAllText(outputFile,sb)
pdf.Close()
# Load a Pdf document from disk
doc = PdfDocument()
doc.LoadFromFile(inputFile)
# Create a signature maker with the PDF document and PFX file
signatureMaker = PdfOrdinarySignatureMaker(doc, inputFile_pfx, "e-iceblue")
# Configure the signature properties
signature = signatureMaker.Signature
signature.Name = "Gary"
signature.ContactInfo = "028-81705109"
signature.Location = "Chengdu"
signature.Reason = "The certificate of this document"
# Create a signature appearance
appearance = PdfSignatureAppearance(signature)
appearance.NameLabel = "Signer: "
appearance.ContactInfoLabel = "ContactInfo: "
appearance.LocationLabel = "Location: "
appearance.ReasonLabel = "Reaseon: "
appearance.SignatureImage = PdfImage.FromFile(inputImage)
appearance.GraphicMode = GraphicMode.SignImageAndSignDetail
appearance.SignImageLayout = SignImageLayout.none
# Apply the signature to the PDF document
signatureMaker.MakeSignature("Signer:", doc.Pages.get_Item(0), 90.0, 550.0, 270.0, 90.0, appearance)
# Save the document
doc.SaveToFile(outputFile)
问题修复:
- 修复了查找高亮文本,高亮位置不准确的问题。
- 修复了在 Ubuntu 22 系统上提取文本程序抛 "ffi_prep_cif_var failed" 异常的问题。
- 修复了 Spire.XLS 和 Spire.PDF 同时使用抛异常的问题。
Spire.Presentation for Python
新功能:
- 支持获取 section 中的幻灯片。
- 支持获取 SmartArt 的 Left 和 Top 值。
- 支持了 DisplayFormat 属性。
ppt = Presentation()
ppt.LoadFromFile(inputFile)
section=ppt.SectionList[0]
slides=section.GetSlides()
sb = [] i=0 for slide in slides:
sb.append("SlideID:"+str(slides[i].SlideID))
i=i+1
File.AppendAllText(outputFile, sb)
ppt.Dispose
# Create a Presentation oject
presentation = Presentation()
# Load a PowerPoint document
presentation.LoadFromFile(inputFile)
sb = []
# Get custom document properties
for shape in presentation.Slides[0].Shapes:
if isinstance(shape, ISmartArt):
sa = shape if isinstance(shape, ISmartArt) else None
sb.append("left: " + str(sa.Left))
sb.append("top: " + str(sa.Top))
File.AppendAllText(outputFile, sb)
presentation.Dispose()
# Create a Presentation oject
presentation = Presentation()
presentation.LoadFromFile(inputFile)
shape = presentation.Slides[0].Shapes[0]
textrange = shape.TextFrame.Paragraphs[0].TextRanges[0]
displayformat = textrange.DisplayFormat
sb = []
sb.append("text :" + str(textrange.Text))
sb.append("is bold :" + str(displayformat.IsBold))
sb.append("is italic :" + str(displayformat.IsItalic))
sb.append("latin_font FontName = :" + str(displayformat.LatinFont.FontName))
File.AppendAllText(outputFile, sb)
presentation.Dispose()
问题修复:
- 修复了使用 SlideCountPerPageForPrint 和 ContainHiddenSlides 报错的问题。
- 修复了 PPT 转 PDF 内容布局不正确的问题。
- 优化了 PPT 转图片的耗时问题。
- 修复了加载 PPT 文档,程序抛 "Microsoft PowerPoint 2007 file is corrpt" 错误的问题。
- 修复了保存 slide 到图片,程序抛 "ArgumentNullException" 错误的问题。
- 修复了从 PPT 文档中提取的图片大小不正确的问题。
- 修复了保存 shape 到图片,程序抛 "ArgumentNullException" 错误的问题。