ฉันได้รับมอบหมายให้สร้าง (หรือค้นหาบางอย่างที่ใช้งานได้อยู่แล้ว) เซิร์ฟเวอร์ส่วนกลางที่มี API ที่สามารถส่งคืนไฟล์ PDF ที่ส่งผ่านข้อมูลบางส่วน และชื่อของเทมเพลต จะต้องเป็นโซลูชันที่มีประสิทธิภาพ องค์กรพร้อม เป้าหมายมีดังนี้:
- ชุดเทมเพลตสำหรับสิ่งต่างๆ ของบริษัท (ใบแจ้งหนี้ คำสั่งซื้อ การวางแผนคำสั่งซื้อ ฯลฯ)
- วิธีการส่งคืน PDF จากซอฟต์แวร์ภายนอก (เว็บไซต์ ERP ฯลฯ)
- อาจเป็นโซลูชันระดับองค์กรที่พร้อมใช้งานอยู่แล้ว แต่พวกเขากำลังเร่งหาโซลูชันแบบกำหนดเอง
- สามารถเป็นภาษาใดก็ได้ แต่เราไม่มีโปรแกรมเมอร์ Java เฉพาะภายในองค์กร เราเป็น PHP / .NET พวกเราบางคนยังไม่ค่อยมีความรู้ แต่การเรียนรู้อาจสูงชันเล็กน้อย
ฉันก็เลยได้อ่าน วิธีหนึ่งที่เราคิดว่าอาจเป็นไปได้คือการติดตั้งเซิร์ฟเวอร์รายงานของ Jasper และสร้างเทมเพลตใน Jaspersoft Studio จากนั้นใช้ API เพื่อส่งคืนไฟล์ PDF เพื่อนร่วมงานย่อมาจากตัวเลือกนี้ เพราะส่วนใหญ่เสร็จแล้ว แต่ 1° คือ java และ 2° ฉันคิดว่ามันเหมือนกับการใช้ค้อนทุบน็อต
ตัวเลือกอื่นที่เรากำลังเล่นอยู่คือการใช้ C# กับ iTextSharp เพื่อสร้างเซิร์ฟเวอร์ และสร้าง API ของเราเองที่ส่งคืนไฟล์ PDF พร้อมข้อมูลที่เราต้องการ การทำเช่นนี้เราอาจมีประโยชน์บางอย่าง เช่น การใช้ตัวเชื่อมต่อฐานข้อมูลที่เราได้สร้างไว้แล้วและดึงข้อมูลส่วนใหญ่ออกจากฐานข้อมูล แทนที่จะต้องส่งต่อข้อมูลก้อนใหญ่ แต่เนื่องจากข้อมูล เปลือยเปล่า มันไม่มีระบบเทมเพลตจริงๆ เราน่าจะสร้างบางสิ่งด้วย XMLWorker หรือคลาส c# แต่มันไม่ "ง่าย" จริงๆ เท่ากับการลากและวาง ในกรณีนี้ ฉันได้อ่านเกี่ยวกับ XFA เช่นกัน แต่เอกสารประกอบบนเว็บไซต์ iText ทำให้เข้าใจผิดและไม่ชัดเจน
ฉันได้อ่านเกี่ยวกับทางเลือกอื่นๆ ด้วย เช่น PrinceXML, PDFBox, FOP ฯลฯ แต่แนวคิดจะเหมือนกับ iText เราก็ต้องทำมันเอง
การโหวตของฉัน แม้ว่างานจะมากกว่านี้ก็คือการไปตามเส้นทางของ iText และใช้ HTML / CSS สำหรับเทมเพลต แต่เพื่อนร่วมงานของฉันอ้างว่าเทมเพลตควรจะสามารถเปลี่ยนแปลงได้ทุก ๆ สัปดาห์ (ฉันสงสัย มัน) และเป็นเรื่องง่าย HTML / CSS คงจะใช้งานมากเกินไป
คำถามที่แท้จริงก็คือ ธุรกิจอื่นจะเข้าถึงสิ่งนี้ได้อย่างไร ฉันทิ้งอะไรไว้ในการค้นหาหรือไม่? มีวิธีที่ง่ายกว่านี้ในการบรรลุเป้าหมายนี้หรือไม่?
ป.ล.: ฉันไม่รู้ว่า SO จะเป็นสถานที่ที่ถูกต้องสำหรับคำถามนี้หรือไม่ แต่ส่วนใหญ่ฉันหลงทางและการเสี่ยงที่แท็ก "คำถามที่กว้างเกินไป" หรือ "นอกหัวข้อ" ก็ไม่ได้ดูแย่ขนาดนั้น
แก้ไข:
- ควรส่งข้อมูลเข้าพร้อมกับคำขอเดียวกัน หากเราตัดสินใจเลือกเส้นทาง C# เราก็สามารถรับข้อมูลประมาณ 70% จาก ERP ได้โดยตรง แต่อย่างไรก็ตาม ERP ควรยอมรับคำขอโพสต์ที่มีข้อมูลบางส่วน (เทมเพลตและข้อมูลที่จำเป็นสำหรับเทมเพลตนั้น เช่น ข้อมูลใบแจ้งหนี้ หรือ ID ใบแจ้งหนี้หากเราสามารถเข้าถึง ERP ได้)
- ผลลัพธ์ควรเป็น PDF (ไม่สนใจรูปแบบอื่น เป็นเพียง PDF)
- เทมเพลตจะได้รับการอัปเดต เท่านั้น โดยฝ่ายไอที (ส่วนใหญ่เป็นพวกเราทีมพัฒนา)
- ประสิทธิภาพที่ชาญฉลาด ฉันไม่รู้ว่าเราต้องการกล้ามเนื้อมากแค่ไหน แต่ตอนนี้ หากไม่มีการเพิ่มขึ้นใดๆ เรากำลังดูไฟล์ PDF ประมาณ ~500/1,000 ครั้งต่อวัน โดยส่วนใหญ่จะพิมพ์ตั้งแต่ 10.00 น. ถึง 10.30 น. และ 12.00 น. ถึง 13.00 น. แล้วอาจจะอีก 100 ที่เหลือของวัน
- ประสิทธิภาพสูงสุดไม่ควรเกิน ~10,000 ครั้งต่อวันเมื่อดาวเคราะห์จัดเรียงตัว และเป็นช่วงฤดูการขาย (ปีละสองครั้ง) นั่นควรจะเป็นเพดานของเราในปีต่อ ๆ ไป
เทมเพลตมีข้อกำหนดบางประการ:
- Have repeating blocks (invoice lines, for example).
- มีรูปภาพเป็นพื้นหลัง เป็นลายน้ำ และเป็นบล็อก
- ต้องเป็นหลายภาษา (แปลได้โดยใช้ข้อมูลเดียวกัน)
- มีบล็อกบางส่วนที่แสดงตามเงื่อนไขเท่านั้น
- บล็อกขึ้นอยู่กับหน้า (ส่วนหัว PDF / ส่วนหัวของหน้า / ส่วนท้ายของหน้า / ส่วนท้ายของ PDF)
- เทมเพลตจะอาจจะต้องทำการคำนวณกับข้อมูลบางส่วน ฉันคิดว่าเราไม่จำเป็นต้องใช้สิ่งนี้เลย แต่บริษัทอาจจะถามบางอย่างในอนาคต
ไม่จำเป็นต้องจัดเก็บ PDF เนื่องจากเรามีระบบการจัดการเอกสาร ในอนาคตเราอาจจะเชื่อมโยงไฟล์เหล่านั้นได้
ข้อมูลเพิ่มเติม: ขณะนี้เรากำลังใช้ "Fast-Reports v2 VCL"