欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python利用字節(jié)串或字節(jié)數(shù)組來加載和保存PDF文檔

 更新時間:2024年09月08日 10:55:12   作者:Eiceblue  
處理PDF文件的可以直接讀取和寫入文件系統(tǒng)中的PDF文件,然而,通過字節(jié)串(byte string)或字節(jié)數(shù)組(byte array)來加載和保存PDF文檔在某些情況下更高效,本文將介紹如何使用Python通過字節(jié)串或字節(jié)數(shù)組來加載和保存PDF文檔,需要的朋友可以參考下

引言

處理PDF文件的可以直接讀取和寫入文件系統(tǒng)中的PDF文件,然而,通過字節(jié)串(byte string)或字節(jié)數(shù)組(byte array)來加載和保存PDF文檔在某些情況下更高效。這種方法不僅可以提高數(shù)據(jù)處理的靈活性,允許開發(fā)者在內存中直接操作PDF,而且還能增強安全性,同時方便跨應用傳輸和網絡傳輸。

本文將介紹如何使用Python通過字節(jié)串或字節(jié)數(shù)組來加載和保存PDF文檔。

本文所使用的方法需要用到Spire.PDF for Python,PyPI:pip install Spire.PDF

創(chuàng)建PDF文檔并保存為字節(jié)串或字節(jié)數(shù)組

我們可以使用庫中的類和方法直接創(chuàng)建PDF文檔,并將其保存到Stream對象。此對象可通過Stream.ToArray()方法轉換為不可變的bytes對象進行操作。而bytes對象也可以直接轉換為可變的bytearray對象,從而對文件進行字節(jié)層面的編輯或其他操作。以下是操作步驟:

  1. 導入所需模塊。
  2. 創(chuàng)建PdfDocument對象。
  3. 設置PDF頁面,添加頁面并繪制內容。
  4. 使用PdfDocument.SaveToStream()方法將PDF文檔保存到Stream對象。
  5. 使用Stream.ToArray()方法將Stream對象轉換為bytes對象。
  6. 可使用bytes對象直接構建bytearray對象。
  7. 接下來可以字節(jié)串或字節(jié)數(shù)組進行更多操作,如寫入文件、傳輸?shù)取?/li>

代碼示例

from spire.pdf import *

# 創(chuàng)建PdfDocument類的一個實例
pdf = PdfDocument()

# 設置文檔的頁面大小和邊距
pageSettings = pdf.PageSettings
pageSettings.Size = PdfPageSize.A4()
pageSettings.Margins.Top = 50
pageSettings.Margins.Bottom = 50
pageSettings.Margins.Left = 40
pageSettings.Margins.Right = 40

# 向文檔添加一個新的頁面
page = pdf.Pages.Add()

# 為文檔內容創(chuàng)建字體和畫筆
titleFont = PdfTrueTypeFont("HarmonyOS Sans SC", 16.0, PdfFontStyle.Bold, True)
titleBrush = PdfBrushes.get_Brown()
contentFont = PdfTrueTypeFont("HarmonyOS Sans SC", 13.0, PdfFontStyle.Regular, True)
contentBrush = PdfBrushes.get_Black()

# 在頁面上繪制標題
titleText = "人工智能簡介"
titleSize = titleFont.MeasureString(titleText)
page.Canvas.DrawString(titleText, titleFont, titleBrush, PointF(0.0, 30.0))

# 在頁面上繪制正文文本
contentText = ("人工智能(AI)是計算機科學的一個分支,它旨在創(chuàng)造能夠模擬人類智能行為的機器。這包括學習(通過經驗改進自身)、推理(使用規(guī)則來達到近似或確定性的結論)、自我修正等特性。AI的應用范圍廣泛,從簡單的任務自動化到復雜的決策支持系統(tǒng)均有涉及。")
# 設置正文文本的格式
contentFormat = PdfStringFormat()
contentFormat.Alignment = PdfTextAlignment.Justify
contentFormat.LineSpacing = 20.0
# 使用正文文本創(chuàng)建一個TextWidget對象并應用字符串格式
textWidget = PdfTextWidget(contentText, contentFont, contentBrush)
textWidget.StringFormat = contentFormat
# 創(chuàng)建一個TextLayout對象并設置布局選項
textLayout = PdfTextLayout()
textLayout.Layout = PdfLayoutType.Paginate
textLayout.Break = PdfLayoutBreakType.FitPage
# 在頁面上繪制TextWidget
rect = RectangleF(PointF(0.0, titleSize.Height + 50.0), page.Canvas.ClientSize)
textWidget.Draw(page, rect, textLayout)

# 將PDF文檔保存到一個Stream對象
pdfStream = Stream()
pdf.SaveToStream(pdfStream)

# 將Stream對象轉換為bytes對象
pdfBytes = pdfStream.ToArray()

# 將Stream對象轉換為bytearray對象
pdfBytearray = bytearray(pdfStream.ToArray())

# 將字節(jié)流寫入文件
with open("output/AI簡介.pdf", "wb") as f:
    f.write(pdfBytearray)

結果

從字節(jié)串或字節(jié)數(shù)組加載PDF文檔進行操作

Stream類支持用bytes對象(或bytearray直接轉換為bytes)直接構建實例。然后,我們可以使用PdfDocument.LoadFromStream()方法將Stream對象載入為PDF文檔進行文檔操作,如編輯、轉換等。以下是操作步驟:

  1. 導入所需模塊。
  2. 創(chuàng)建bytes對象或使用現(xiàn)有bytes對象,來構建Stream對象。
  3. 創(chuàng)建PdfDocument對象。
  4. 使用PdfDocument.LoadFromStream()方法將Stream對象載入為PDF文檔。
  5. 對文檔進行操作,如提取頁面文字。

代碼示例

from spire.pdf import *

# 從PDF文件創(chuàng)建一個字節(jié)數(shù)組
with open("示例.pdf", "rb") as f:
    byteData = f.read()

# 從字節(jié)數(shù)組創(chuàng)建一個Stream對象
stream = Stream(byteData)

# 將Stream對象加載為PDF文檔
pdf = PdfDocument(stream)

# 獲取第一頁的文字
page = pdf.Pages.get_Item(0)
textExtractor = PdfTextExtractor(page)
extractOptions = PdfTextExtractOptions()
extractOptions.IsExtractAllText = True
text = textExtractor.ExtractText(extractOptions)

# 打印文字
print(text)

結果

本文演示了如何使用Python通過字節(jié)串或字節(jié)數(shù)組加載或保存PDF文檔。

到此這篇關于Python利用字節(jié)串或字節(jié)數(shù)組來加載和保存PDF文檔的文章就介紹到這了,更多相關Python加載和保存PDF文檔內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python如何發(fā)送Syslog日志

    Python如何發(fā)送Syslog日志

    這篇文章主要介紹了Python如何發(fā)送Syslog日志問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 使用python實現(xiàn)抓取中國銀行外匯牌價首頁數(shù)據(jù)實現(xiàn)

    使用python實現(xiàn)抓取中國銀行外匯牌價首頁數(shù)據(jù)實現(xiàn)

    這篇文章主要為大家介紹了如何使用python實現(xiàn)抓取中國銀行外匯牌價首頁數(shù)據(jù)的實現(xiàn)示例,有需要的同學可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-10-10
  • python安裝并使用virtualenv管理包的詳細過程

    python安裝并使用virtualenv管理包的詳細過程

    本文主要介紹了Python的安裝過程和如何使用virtualenv管理包,首先,用戶需要訪問Python官網下載安裝包,并運行安裝程序,安裝完成后,在命令行輸入Python,顯示安裝的Python版本號,即表示安裝成功,感興趣的朋友一起看看吧
    2024-10-10
  • Python實現(xiàn)截圖生成符合markdown的鏈接

    Python實現(xiàn)截圖生成符合markdown的鏈接

    之前是用的是typora來寫的文章,最近typora最近開始收費了,所以就不想用了,于是找到了一個替代品MarkText。本文將介紹如何通過Python實現(xiàn)截圖自動生成符合markdown的鏈接,感興趣的可以了解一下
    2022-01-01
  • Python機器學習算法之決策樹算法的實現(xiàn)與優(yōu)缺點

    Python機器學習算法之決策樹算法的實現(xiàn)與優(yōu)缺點

    決策樹(Decision Tree)是一種基本的分類與回歸方法,這篇文章主要給大家介紹了關于Python機器學習算法之決策樹算法實現(xiàn)與優(yōu)缺點的相關資料,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • python 通過郵件控制實現(xiàn)遠程控制電腦操作

    python 通過郵件控制實現(xiàn)遠程控制電腦操作

    這篇文章主要介紹了python 通過郵件控制電腦實現(xiàn)遠程控制操作,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • 詳解Python OpenCV圖像分割算法的實現(xiàn)

    詳解Python OpenCV圖像分割算法的實現(xiàn)

    圖像分割是指根據(jù)灰度、色彩、空間紋理、幾何形狀等特征把圖像劃分成若干個互不相交的區(qū)域。本文就來和大家聊聊OpenCV的圖像分割算法及基于輪廓的字符分離,感興趣的可以了解一下
    2022-08-08
  • Python爬蟲使用腳本登錄Github并查看信息

    Python爬蟲使用腳本登錄Github并查看信息

    這篇文章主要介紹了Python爬蟲之用腳本登錄Github并查看信息,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-07-07
  • pycharm與jupyter?lab/notebook結合使用方式

    pycharm與jupyter?lab/notebook結合使用方式

    這篇文章主要介紹了pycharm與jupyter?lab/notebook結合使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • python清除字符串里非數(shù)字字符的方法

    python清除字符串里非數(shù)字字符的方法

    這篇文章主要介紹了python清除字符串里非數(shù)字字符的方法,涉及Python使用re模塊正則替換操作字符串的技巧,需要的朋友可以參考下
    2015-07-07

最新評論