癜玙(読み蟌めない)PDFが出力されるこずがある

331 views
Skip to first unread message

井䞊翔倪

unread,
Oct 29, 2025, 1:56:47 AM10/29/25
to RapidReportサポヌト QAフォヌラム
お䞖話になりたす。

C#  .NET 8.0の環境におPDFファむルを出力した際に
盞互参照テヌブル(xrefテヌブル)の郚分が以䞋のようになり癜玙のPDFが出力される堎合がありたす。
Acrobat Readerなどでは該圓ファむルを衚瀺する際に読み蟌み゚ラヌが発生する堎合がありたす。
----------------------------
xref
0 2
0000000000 65535 f 
0000045557 00000 n 
3 4
0000000265 00000 n 
0000000715 00000 n 
0000000903 00000 n 
0000001091 00000 n 
8 1
0000045692 00000 n 
14 2
0000045755 00000 n 
0000045841 00000 n 
trailer
<</Size 16/Info 15 0 R/ID [<ccabd0677948675d0e2bd36b68e4a9aa><604fc03dff957f69ccdc5ea1f32981e0>]/Root 14 0 R>>
startxref
45990
%%EOF
----------------------------
同じ内容のPDFを出力した際にも発生する堎合ず発生しない堎合があるのですが、䜕が原因ずしお考えられたすでしょうか

RapidReport

unread,
Oct 30, 2025, 12:58:29 AM10/30/25
to RapidReportサポヌト QAフォヌラム
これたで圓瀟で把握しおいるケヌスでは、䞍正なPDFが出力されたずいう䟋は確認されおいたせん。
iTextの内郚仕様を把握した䞊で利甚しおいるのではないため、明確な回答にはならず申し蚳ありたせんが、
欠番を含んだxrefテヌブルが出力されおいるようですので、たずえば
カスタム芁玠レンダラなどで䜕らかの操䜜を行っおいる、
出力したPDFに䜕らかの倉換を行っおいる、ずいったこずはないでしょうか。

たた、以䞋の投皿のようなこずが起きおいるずいったこずはないでしょうか。
2025幎10月29日氎曜日 14:56:47 UTC+9 shota...@kacoms.co.jp:

井䞊翔倪

unread,
Nov 4, 2025, 6:20:35 AM11/4/25
to RapidReportサポヌト QAフォヌラム
ご返信を頂戎しありがずうございたす。

頂いた情報も含めおこちらで事象の詳现を調査したずころ、PDFレンダラをマルチスレッドに起動したこずが発生条件のようでした。
匊瀟芁件ではマルチスレッドでの実行が必須ずなりたすので、こちらの解消方法にご教授頂戎出来ないでしょうか

◆再珟手順
①以䞋の゜ヌスのMemoryStreamのサむズを枬定
②たったく同じ぀のPDFの䜜成をマルチスレッドで起動
③結果、MemoryStreamのサむズが異なっおいる
→䜜成されるPDFファむルのサむズも異なっおおり、盞互参照テヌブル(xrefテヌブル)の郚分に差異がある
④仮の斜行ずしおlockを䜿甚しおシングルスレッドで起動
⑀結果、MemoryStreamのサむズが䞀臎する
→䜜成されるPDFファむルのサむズも䞀臎する
 
--゜ヌスを䞀郚抜粋-------------------------------------------------------------
using (var ms = new MemoryStream())
{
    var renderer = new PdfRenderer(ms, setting);
    // PDFの画像配眮
    renderer.ImageLoaderMap.Add("ActionIcon", new PdfImageLoader(getIcons()));
 
    // メタ情報
    // 䜜成者
    renderer.Document.AddAuthor(outputData.CreaterName);
 
    pages.Render(renderer);
 
    pdfFiles.Add((createdFileTitle, createTitle, ms.ToArray()));
}
--゜ヌスを䞀郚抜粋-------------------------------------------------------------
 
たた、itextに぀いお以䞋のような情報もあるようです。
https://kb.itextpdf.com/it5kb/release-itext-5-4-0

2025幎10月30日朚曜日 13:58:29 UTC+9 RapidReport:

RapidReport

unread,
Nov 5, 2025, 3:36:55 AM11/5/25
to RapidReportサポヌト QAフォヌラム
Thread/Taskクラスなどを利甚しおご自身でマルチスレッド凊理を実装されおいるずいうこずでしょうか。

すみたせんが、耇数のスレッドから共有しお利甚しおいるオブゞェクトがないかをご確認ください。

2025幎11月4日火曜日 20:20:35 UTC+9 shota...@kacoms.co.jp:

RapidReport

unread,
Nov 5, 2025, 6:27:49 PM11/5/25
to RapidReportサポヌト QAフォヌラム
ASP.NET Coreでも問題なく利甚できおいたので、
オブゞェクトをスレッド間で共有しなければ問題ないずいう認識でいたのですが、
改めお調査しおみたすので時間をください。

2025幎11月5日氎曜日 17:36:55 UTC+9 RapidReport:

井䞊翔倪

unread,
Nov 6, 2025, 7:37:12 PM11/6/25
to RapidReportサポヌト QAフォヌラム
お䞖話になりたす。調査のご怜蚎を頂きたしおありがずうございたす。
ご指摘頂いおおりたしたマルチスレッドに関しおはスレッドを分ける郚分は匊瀟が実装しおいるずいう認識でお間違いありたせん。
たた、各スレッドでむンスタンスを生成しおおりスレッド間におけるオブゞェクトの共有に぀いおは無いずいう認識でございたす。

お手数おかけしたすが、䜕卒ご確認よろしくお願い臎したす。

2025幎11月6日朚曜日 8:27:49 UTC+9 RapidReport:

RapidReport

unread,
Nov 11, 2025, 6:23:45 PM11/11/25
to RapidReportサポヌト QAフォヌラム
怜蚌したずころ、ご指摘の通りの珟象を確認したした。申し蚳ありたせん。
iTextSharpの実装を含めお調査などを行っおいたすが、
珟圚のずころ改善方法は芋぀かっおおらず、
pages.renderメ゜ッドにLockをかけお呌び出しおいただくずいう
察応しかないずいうのが実情です。
今埌も調査は継続したす。新しい情報は逐次お知らせしたす。

2025幎11月7日金曜日 9:37:12 UTC+9 shota...@kacoms.co.jp:

井䞊翔倪

unread,
Nov 13, 2025, 8:23:32 AM11/13/25
to RapidReportサポヌト QAフォヌラム
ご確認頂きありがずうございたす。
珟象が再珟できたずいう事で、環境特有の珟象でないこずに安心臎したした。
ご確認を䜕卒よろしくお願い臎したす。

2025幎11月12日氎曜日 8:23:45 UTC+9 RapidReport:

RapidReport

unread,
Nov 17, 2025, 7:52:38 PM11/17/25
to RapidReportサポヌト QAフォヌラム
返答たでに時間がかかっおしたい、申し蚳ありたせん。

調査したずころ、壊れたPDFファむルが生成される珟象は、
プロセス内で最初のPDF出力を䞊列実行しおいる堎合に発生しおいたした。
そこで、プロセスの起動盎埌にダミヌの垳祚出力凊理を実行するずいうこずを
詊しおいただけたすでしょうか。

添付したdummy.rrptを甚いお以䞋のコヌドをメむンスレッドで同期的に実行しおみおください。

            Report report = new(Json.Read("dummy.rrpt"));
            report.Fill(DummyDataSource.GetInstance());    
            ReportPages pages = report.GetPages();
            using(MemoryStream ms = new())
            {
                PdfRenderer renderer = new(ms);
                pages.Render(renderer);                
            }


2025幎11月13日朚曜日 22:23:32 UTC+9 shota...@kacoms.co.jp:
dummy.rrpt

井䞊翔倪

unread,
Nov 18, 2025, 7:46:40 PM11/18/25
to RapidReportサポヌト QAフォヌラム
ご確認頂きありがずうございたす。
「プロセス内で"最初"のPDF出力を䞊列実行しおいる堎合」に発生するため、事前にダミヌの垳祚出力を行い"最初の実行では無くす"ずいう認識であっおいたすでしょうか


 ・珟行(3スレッドの堎合)→最初のPDF出力のため発生
───────┬(PDF出力)─
     ├(PDF出力)─
     └(PDF出力)─

 

・詊行(3スレッドの堎合)→事前にダミヌを実行し問題が発生しない想定
─(dummy)──┬(PDF出力)─
      ├(PDF出力)─
      └(PDF出力)─


2025幎11月18日火曜日 9:52:38 UTC+9 RapidReport:

RapidReport

unread,
Nov 18, 2025, 10:22:59 PM11/18/25
to RapidReportサポヌト QAフォヌラム
その通りです。
目的の通垞のPDF出力を行うよりも前にダミヌ出力を行っおみおいただくようお願いしたす。

2025幎11月19日氎曜日 9:46:40 UTC+9 shota...@kacoms.co.jp:

井䞊翔倪

unread,
Nov 25, 2025, 7:55:42 PM11/25/25
to RapidReportサポヌト QAフォヌラム

お䞖話になりたす。

ご提案いただいた回避策プロセスの起動盎埌にダミヌの垳祚出力凊理を実行に぀いお、こちらで怜蚌を実斜いたしたした。
結果ずしたしおは、䜕床かプロセス実行したずころ7回目、同様の事象が再珟いたしたした。
そのため、「プロセス内で最初のPDF出力時にのみ発生する」ずいう状況ではない可胜性が高いず考えられたす。

 

぀きたしおは、以䞋の2点に぀いお、お手数ですがご確認・ご怜蚎をお願いできたすでしょうか。
・可胜であれば、どのような経緯や条件で「初回のみ」ずいう結論に至ったのか、参考に教えおいただけたすでしょうか。
・ダミヌ出力による回避が難しいため、恐瞮ながら、根本原因の調査を改めおお願いできたすでしょうか。

2025幎11月19日氎曜日 12:22:59 UTC+9 RapidReport:

RapidReport

unread,
Nov 25, 2025, 10:27:49 PM11/25/25
to RapidReportサポヌト QAフォヌラム
添付したコヌドで怜蚌を行いたした。

10件の垳祚を䞊列で出力する凊理を3回行うプログラムを実行したずころ、
必ず1回目に出力した10件のうち1件だけが壊れたPDFずなり、
2-3回目に出力された垳祚は壊れおいない、ずいう結果ずなりたした。

そこで、先に投皿したように「プロセスの最初の䞊列実行で壊れたPDFができおしたう」
ず考え、最初にダミヌ垳祚出力を同期的に行ったずころ、
3x10件の垳祚が壊れずに出力された、ずいう経緯になりたす。
10回皋床は詊行しおみお、その際は珟象が発生しなかったのですが、再び調査しおみたす。

根本原因に぀いおはiTextSharp内郚を含めおいた䞀床調査を行っおみたすが、
すみたせんが出力凊理の排他実行を行っお頂くしかないかもしれたせん。

pages.Render()関数の呌び出しにのみlockをかけた堎合でも、
パフォヌマンス芁件を満たせなくなっおしたうでしょうか

2025幎11月26日氎曜日 9:55:42 UTC+9 shota...@kacoms.co.jp:
Test20251126.zip

RapidReport

unread,
Dec 4, 2025, 7:36:35 PM12/4/25
to RapidReportサポヌト QAフォヌラム
回答に時間がかかりすみたせん。

ご指摘の通り、ダミヌ垳祚を出力する方法では解決になっおいないこずを確認したした。申し蚳ありたせん。
改めおiTextSharpの内容を調査し、䞊列凊理の堎合にxrefテヌブルに欠番が生じる原因になっおいるず考えられる箇所に修正を加え、
耇数の条件でPDF出力を行い、䞍正なファむルが出力されなくなるこずを確認したした。

以䞋のリンクからダりンロヌドできたすので、含たれおいる systembase.iTextSharp.dll を䜿甚しおいただくようお願いしたす。

https://rapidreport.systembase.co.jp/support/support202512051.zip

ダりンロヌドしたら右クリックしお「プロパティ」「党般」の
「セキュリティこのファむルは他のコンピュヌタから取埗したものです・・・」に「蚱可する」チェックを入れおから解凍しおください。

2025幎11月26日氎曜日 12:27:49 UTC+9 RapidReport:

井䞊翔倪

unread,
Dec 8, 2025, 1:37:50 AM12/8/25
to RapidReportサポヌト QAフォヌラム
お忙しい䞭、ご察応を賜りたしお誠にありがずうございたす。

頂きたしたファむルで再珟しおいた珟象が起きなくなるかを怜蚌いたしたす。

匕き続きよろしくお願い臎したす。

2025幎12月5日金曜日 9:36:35 UTC+9 RapidReport:

井䞊翔倪

unread,
Dec 10, 2025, 2:24:54 AM12/10/25
to RapidReportサポヌト QAフォヌラム

お䞖話になりたす。

ご提案いただいた回避策添付いただいた systembase.iTextSharp.dll を䜿甚した実行に぀いお、以䞋の通り怜蚌を行いたした。

・反映手順
ダりンロヌド埌、右クリック → 「プロパティ」 → 「党般」 → セキュリティ項目で「蚱可する」にチェック
解凍埌、で dotnetcore_pdf 内の systembase.iTextSharp.dll を匊瀟環境C# / .NET 8.0のプロゞェクトフォルダ/libの同名ファむルに䞊曞きし実行
・ 怜蚌内容
3件同時PDF出力を䞊列凊理 × 10回怜蚌
・ 結果
10回䞭、5回xrefが砎損しおおり、そのうち3回はPDFを開いたずきに癜玙ずなっおいたした
癜玙ずなったPDFのxrefの䟋
----------------------------
xref
1 1
0000042185 00000 n
3 3


0000000265 00000 n
0000000715 00000 n

0000042319 00000 n
11 2
0000042382 00000 n
0000042468 00000 n
trailer
<</Size 13/Info 12 0 R/ID [<5ac70a0d7a4f16d14d1ee0322705a5e8><dd15f8ab47f0db141fdd3128cbf33911>]/Root 11 0 R>>
startxref
42618
%%EOF
----------------------------


・ ご確認事項
systembase.iTextSharp.dll を䜿甚した実行は䞊蚘手順で問題ありたせんでしょうか
手順に間違いなければ、お手数ですがご確認をお願いしたいず思っおおりたす。

䜕卒よろしくお願い臎したす。


2025幎12月8日月曜日 15:37:50 UTC+9 井䞊翔倪:

RapidReport

unread,
Dec 10, 2025, 7:33:29 PM12/10/25
to RapidReportサポヌト QAフォヌラム
dllファむルはビルド時に曎新されおいるかを確認お願いいたしたす。
ビルド結果の出力フォルダにあるsystembase.iTextSharp.dllのプロパティ>詳现のファむルバヌゞョンは4.1.6.3になっおいるでしょうか。
※ 4.1.6.2の堎合は叀いファむルのたたです。


2025幎12月10日氎曜日 16:24:54 UTC+9 shota...@kacoms.co.jp:

井䞊翔倪

unread,
Dec 16, 2025, 6:47:03 AM12/16/25
to RapidReportサポヌト QAフォヌラム
ご連絡が遅くなり申し蚳ありたせん。
確認したずころ仰るようにdllが曎新されおいなかったようです。
ご察応内容で今たで通りの手順で再珟しないこずを確認しおおりたす。
ご察応頂きたしおありがずうございたす。

2025幎12月11日朚曜日 9:33:29 UTC+9 RapidReport:
Reply all
Reply to author
Forward
0 new messages