Отрегулируйте положение трубопровода с изображением в документе Word, используя Win32com Pywin32 [закрыто]Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Отрегулируйте положение трубопровода с изображением в документе Word, используя Win32com Pywin32 [закрыто]

Сообщение Anonymous »

** У меня есть ошибки в коде. Я не знаю, что делать.def procesar_imagenes_html(doc):

script_dir = os.path.dirname(os.path.abspath(__file__))
attachments_dir = os.path.join(script_dir, ".attachments")

if not os.path.isdir(attachments_dir):
os.makedirs(attachments_dir)
print(f"{attachments_dir}")
else:
print(f"Directorio .attachments encontrado: {attachments_dir}")
img_pattern = re.compile(r'\(a href="[^"]+"\)\(img src="([^"]+)"[^>]*\/\)\(\/a\)')
paragraphs = list(doc.Paragraphs)

for paragraph in paragraphs:
match = img_pattern.search(paragraph.Range.Text)
if match:
img_url = match.group(1)
print(f"{img_url}")

try:
response = requests.get(img_url)
if response.status_code == 200:
img_name = unquote(os.path.basename(img_url))
img_name = img_name.replace(' ', '_')
img_path = os.path.join(attachments_dir, img_name)

with open(img_path, 'wb') as img_file:
img_file.write(response.content)
print(f"{img_path}")
match_range = paragraph.Range.Duplicate
match_range.Start = paragraph.Range.Start + match.start()
match_range.End = paragraph.Range.Start + match.end()
match_range.Delete()
paragraph.Range.InsertParagraphBefore()
table = doc.Tables.Add(paragraph.Range, 3, 1)
table.Borders.Enable = False # Sin bordes

cell_sup = table.Cell(1, 1)
cell_sup.Range.Text = "|"
cell_sup.Range.ParagraphFormat.Alignment = win32.constants.wdAlignParagraphLeft
cell_sup.Range.ParagraphFormat.SpaceBefore = 0
cell_sup.Range.ParagraphFormat.SpaceAfter = 0

cell_img = table.Cell(2, 1)
image = cell_img.Range.InlineShapes.AddPicture(
FileName=img_path,
LinkToFile=False,
SaveWithDocument=True
)
if image.Height > max_height:
image.Height = max_height
cell_img.Range.ParagraphFormat.Alignment = win32.constants.wdAlignParagraphCenter

cell_inf = table.Cell(3, 1)
cell_inf.Range.Text = "|"
cell_inf.Range.ParagraphFormat.Alignment = win32.constants.wdAlignParagraphLeft
cell_inf.Range.ParagraphFormat.SpaceBefore = 0
cell_inf.Range.ParagraphFormat.SpaceAfter = 0

table.Columns.AutoFit()

print(f"Imagen insertada: {img_name}")
else:
print(f"Error al descargar la imagen: {img_url}")
except Exception as e:
print(f"Error al procesar la imagen {img_url}: {e}")

procesar_imagenes_html(doc)
< /code>
Я хочу, чтобы верхний трубопровод ближе к изображению, когда фотография размещена в верхней части листа. Но это на той же высоте, что и другой трубопровод ниже. Я хочу, чтобы верхний трубопровод был ближе к изображению, когда фотография размещена в верхней части листа. Существуют ли какие -либо конкретные свойства или методы в библиотеке Win32com, которые могут помочь в управлении макетом и интервалом таблиц и изображений в документах Word? Проблема заключается в том, что когда я вставляю изображение в начале документа, трубопровод (табличная ячейка с символом «|»), расположенная в левом верхнем углу изображения, появляется на предыдущей странице и имеет другой размер.import os
import re
import requests
from urllib.parse import unquote
import win32com.client as win32

def procesar_imagenes_html(doc):
script_dir = os.path.dirname(os.path.abspath(__file__))
attachments_dir = os.path.join(script_dir, ".attachments")

if not os.path.isdir(attachments_dir):
os.makedirs(attachments_dir)
print(f"Directorio creado: {attachments_dir}")
else:
print(f"Directorio .attachments encontrado: {attachments_dir}")

img_pattern = re.compile(r'\(a href="[^"]+"\)\(img src="([^"]+)"[^>]*\/\)\(\/a\)')
paragraphs = list(doc.Paragraphs)

for paragraph in paragraphs:
match = img_pattern.search(paragraph.Range.Text)
if match:
img_url = match.group(1)
print(f"URL de la imagen: {img_url}")

try:
response = requests.get(img_url)
if response.status_code == 200:
img_name = unquote(os.path.basename(img_url))
img_name = img_name.replace(' ', '_')
img_path = os.path.join(attachments_dir, img_name)

with open(img_path, 'wb') as img_file:
img_file.write(response.content)
print(f"Imagen guardada en: {img_path}")

# Eliminar el texto del patrón encontrado
match_range = paragraph.Range.Duplicate
match_range.Start = paragraph.Range.Start + match.start()
match_range.End = paragraph.Range.Start + match.end()
match_range.Delete()

# Insertar una nueva tabla con la imagen
paragraph.Range.InsertParagraphBefore()
table = doc.Tables.Add(paragraph.Range, 3, 1)
table.Borders.Enable = False # Sin bordes

# Configurar las celdas de la tabla
cell_sup = table.Cell(1, 1)
cell_sup.Range.Text = "|"
cell_sup.Range.ParagraphFormat.Alignment = win32.constants.wdAlignParagraphLeft
cell_sup.Range.ParagraphFormat.SpaceBefore = 0
cell_sup.Range.ParagraphFormat.SpaceAfter = 0

cell_img = table.Cell(2, 1)
image = cell_img.Range.InlineShapes.AddPicture(
FileName=img_path,
LinkToFile=False,
SaveWithDocument=True
)
max_height = 200 # Ajusta este valor según tus necesidades
if image.Height > max_height:
image.Height = max_height
cell_img.Range.ParagraphFormat.Alignment = win32.constants.wdAlignParagraphCenter

cell_inf = table.Cell(3, 1)
cell_inf.Range.Text = "|"
cell_inf.Range.ParagraphFormat.Alignment = win32.constants.wdAlignParagraphLeft
cell_inf.Range.ParagraphFormat.SpaceBefore = 0
cell_inf.Range.ParagraphFormat.SpaceAfter = 0

table.Columns.AutoFit()

print(f"Imagen insertada: {img_name}")
else:
print(f"Error al descargar la imagen: {img_url}")
except Exception as e:
print(f"Error al procesar la imagen {img_url}: {e}")

# Ejemplo de uso
# doc = win32.Dispatch("Word.Application").Documents.Open("ruta/al/documento.docx")
# procesar_imagenes_html(doc)
< /code>
puedes crear propia propia plantilla word la que te da la gana y verse código. < /p>
Проблема: < /p>
Когда я вставляю изображение в начале документа, я хочу только топовый трубопровод (тот, что над изображением в левом углу), чтобы быть и тем же размером, как и тот же, как и тот же, как и тот же размер. В настоящее время верхний трубопровод появляется на предыдущей странице и имеет другой размер. ограничения. Вы можете создать свой собственный шаблон слов для тестирования кода.>

Подробнее здесь: https://stackoverflow.com/questions/795 ... n32com-pyw
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»