Как известно, приказом ФНС России от 24.03.2022 № ЕД-7-26/236@ вводится прием документов в представлении PDF/A-3. Есть ли какие-то готовые библиотеки для создания этих документов к примеру из стандартных форматов pdf и xml? Либо вообще библиотеки которые позволяют создавать документы данного формата в принципе?
для вас создали такие библиотеки как PyPDF2 и pandas,
с помощью первой можно читать пдф-ки,
с помощью второй можно строить хетмапы, ток вроде она принимает csv файлы,
поищи про их, а вообще можно было загуглить, вот запрос Как прочитать pdf файл через python
а там уже можешь в нампи перевести
Написано
Владимир Куц
@fox_12 Автор вопроса, куратор тега Python
DedIsDead, речь идет не о простых pdf-ах, а о стандарте pdf/a-3. Он отличается от pdf.
В первой библиотеке нет никакого упоминания о поддержке этого стандарта. Библиотека pandas - также его не поддерживает.
Нашёл ток как сконвертировать pdf/a в обычный пдф а потом можно юзать 1-ну из 2-ух либов, про а-3 не нашёл, мб такое решение тебе поможет
import site
site.addsitedir(r"../../../PDFNetC/Lib")
import sys
from PDFNetPython import *
sys.path.append(r"../../LicenseKey/PYTHON")
from LicenseKey import *
#---------------------------------------------------------------------------------------
# The following sample illustrates how to parse and check if a PDF document meets the
# PDFA standard, using the PDFACompliance class object.
#---------------------------------------------------------------------------------------
def PrintResults(pdf_a, filename):
err_cnt = pdf_a.GetErrorCount()
if err_cnt == 0:
print(filename + ": OK.")
else:
print(filename + " is NOT a valid PDFA.")
i = 0
while i < err_cnt:
c = pdf_a.GetError(i)
str1 = " - e_PDFA " + str(c) + ": " + PDFACompliance.GetPDFAErrorMessage(c) + "."
if True:
num_refs = pdf_a.GetRefObjCount(c)
if num_refs > 0:
str1 = str1 + "\n Objects: "
j = 0
while j < num_refs:
str1 = str1 + str(pdf_a.GetRefObj(c, j))
if j < num_refs-1:
str1 = str1 + ", "
j = j + 1
print(str1)
i = i + 1
print('')
def main():
# Relative path to the folder containing the test files.
input_path = r"../../TestFiles/"
output_path = r"../../TestFiles/Output/"
PDFNet.Initialize(LicenseKey)
PDFNet.SetColorManagement() # Enable color management (required for PDFA validation).
#-----------------------------------------------------------
# Example 1: PDF/A Validation
#-----------------------------------------------------------
filename = "newsletter.pdf"
# The max_ref_objs parameter to the PDFACompliance constructor controls the maximum number
# of object numbers that are collected for particular error codes. The default value is 10
# in order to prevent spam. If you need all the object numbers, pass 0 for max_ref_objs.
pdf_a = PDFACompliance(False, input_path+filename, None, PDFACompliance.e_Level2B, 0, 0, 10)
PrintResults(pdf_a, filename)
pdf_a.Destroy()
#-----------------------------------------------------------
# Example 2: PDF/A Conversion
#-----------------------------------------------------------
filename = "fish.pdf"
pdf_a = PDFACompliance(True, input_path + filename, None, PDFACompliance.e_Level2B, 0, 0, 10)
filename = "pdfa.pdf"
pdf_a.SaveAs(output_path + filename, False)
pdf_a.Destroy()
# Re-validate the document after the conversion...
pdf_a = PDFACompliance(False, output_path + filename, None, PDFACompliance.e_Level2B, 0, 0, 10)
PrintResults(pdf_a, filename)
pdf_a.Destroy()
PDFNet.Terminate()
print("PDFACompliance test completed.")
if __name__ == '__main__':
main()
Есть ли какие-то готовые библиотеки для создания этих документов к примеру из стандартных форматов pdf и xml? - Нет.
Есть отдельные либы для работы с XML и отдельные с PDF.
1. xmlschema
Валидация XML на соответствие схеме XSD, конвертор из JSON и в JSON, в соответствии со схемой.
2. Разные XML парсеры, генераторы.
3. Разные либы для создания и манипуляции PDF. PyPDF2, ReportLab, и другие.
UPD
"PDF/A-3 содержит только одно необходимое, но спорное изменение: PDF/A-2 уже позволяет встраивать PDF/A-совместимые документы в виде вложений. Однако PDF/A-3 впервые позволяет встраивать файлы любого формата, например Excel, Word, HTML, CAD или XML."
То есть это просто пдф который позволяет встраивать в себя файлы.
Поддержка стандартов PyPDF2 https://pypdf2.readthedocs.io/en/latest/user/pdf-v...
PyPDF2 вроде как позволяет встроить файл в пдф https://stackoverflow.com/questions/59085308/how-t...
Владимир Куц, даже проще нашел вариант можно использовать программу ocrmypdf и команду ocrmypdf --output-type pdfa-3 --tesseract-timeout=0 --optimize 3 --skip-text input.pdf output.pdf
Написано
Владимир Куц
@fox_12 Автор вопроса, куратор тега Python