phpBB - scalanie podgladów wydruku do jednej strony

phpBB - scalanie podgladów wydruku do jednej strony
KS
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0

Cześć :)
czy ktoś mógłby poratować skryptem do scalania podglądów wydruku
forum phpBB do jednej strony ?
Np:
https://forums.raspberrypi.com/viewtopic.php?t=364639&view=print
Podgląd zawiera dwie strony a chciałbym mieć na jednej.
Próbowałem zastosować skrypt jak w załączniku ale otrzymuję błąd 403.

Z góry dzięki :)

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5023
1

Jaki skrypt? Wklej kod tutaj, na forum.

Spine
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6967
0

A nie możesz sobie w opcjach drukowania wybrać ile chcesz stron na jednym wydruku?

W Firefoxie (Strony na kartkę):

screenshot-20250127192202.png

W Chrome (Strony na arkusz):

screenshot-20250127192305.png

Czy nie o to Ci chodzi?

KS
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0
lion137 napisał(a):

Jaki skrypt? Wklej kod tutaj, na forum.

Kopiuj
import requests
from bs4 import BeautifulSoup

def get_print_page_content(url, session):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36",
        "Accept-Language": "en-US,en;q=0.9",
        "Referer": "https://forums.raspberrypi.com/",
    }
    try:
        response = session.get(url, headers=headers)
        if response.status_code == 200:
            soup = BeautifulSoup(response.content, "html.parser")
            # Pobierz zawartość wątku
            content = soup.find_all("div", class_="postbody")
            return "".join(str(post) for post in content)
        else:
            print(f"Błąd pobierania strony: {url}, status: {response.status_code}")
            return None
    except Exception as e:
        print(f"Wystąpił błąd: {e}")
        return None

def merge_print_pages(base_url, output_file):
    all_content = []
    start = 0

    # Sesja HTTP
    session = requests.Session()

    while True:
        url = f"{base_url}&start={start}"
        print(f"Pobieranie: {url}")
        content = get_print_page_content(url, session)
        if content:
            all_content.append(content)
            start += 25  # Zwiększamy parametr `start` zgodnie z liczbą postów na stronę
        else:
            break  # Koniec stron lub błąd

    # Zapisz scaloną zawartość do pliku HTML
    with open(output_file, "w", encoding="utf-8") as f:
        f.write("<html><head><meta charset='utf-8'></head><body>")
        f.write("".join(all_content))
        f.write("</body></html>")
    print(f"Zapisano scaloną zawartość do pliku: {output_file}")

# URL wątku z podglądem wydruku
base_url = "https://forums.raspberrypi.com/viewtopic.php?t=364639&view=print"
output_file = "scalony_watek.html"

merge_print_pages(base_url, output_file)


KS
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0
Spine napisał(a):

A nie możesz sobie w opcjach drukowania wybrać ile chcesz stron na jednym wydruku?

W Firefoxie (Strony na kartkę):
Czy nie o to Ci chodzi?

Chciałem to jakoś zautomatyzować, szczególnie dla wątków, które mają wiele stron.
Z pliku html ogarnę sobie do pdf np za pomocą wtyczki z printfriendly.com.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.